I2C总线API指南

Chinese, Simplified

1.      概述

原生Android系统并没有提供接口函数访问i2c总线,为了调试方便,用户开发app更简单,AmLink平台增加了java层的 I2C API 接口, .aar /.so形式提供给用户调用,用户不需要写jni,用户移植只需要参考demo code里的libs/, jnilibs/,  build.gradle等几个地方的内容即可


2.       API

接口的实现在I2cPort 类里,主要方法如下:

int open(int busId,int addr);

该函数设置初始化i2c。其中:

budId: 取值0-3,分别对应m100模块上i2c0-i2c3 4i2c总线。

addr:  i2c 外设的slave地址,7位。

 

byte[] readBytes(int len)

该函数实现i2c 写操作,其中:

len: 存放准备读取i2c外设的数据长度,单位字节,1表示读1个字节,以此类推,最大是7。

返回值是byte[]数组,如果为null,表示读取失败

 

int writeBytes(byte[] buf, int len);

该函数实现i2c 写操作,其中:

buf[]: 存放准备写入i2c外设的数据

len: 参数的长度,单位字节,1表示1个字节,以此类推,最大是7

返回值0表示写入成功,非0值是错误代码。

 

int close();

释放对该i2c外设的控制。


**


目前有2点限制:

暂时不支持带restart信号的传输 

每次传输的最大长度是7

改进中,很快就会支持。


3.      使用方法

我们会提供对应的.aar.so库文件及对应的demo例程,请发邮件到  support@temolin.com

模块的固件需升级到r9130之后(不包括r9130)的版本。


4. 命令行调试方法

项目调试初期,可以先用adb命令读写i2c协助定位问题,如:

adb shell "i2ctransfer -y -f 2 w2@0x6b 0x4 0x0"

》上述命令表示往i2c总线2,7位地址是0x6b的器件写入2个字节:0x4 0x0

adb shell "i2ctransfer -y -f 2 w1@0x6b 0x4 && i2ctransfer -y -f 2 r1@0x6b"

》上述命令表示读取i2c总线2,7位地址是0x6b的器件的寄存器0x4一个字节


文档中心

以上内容是否对您有帮助?