在做Android系统开发时,特别是现在智能显示和物联网,经常客户会要求搭配各种外接模块。Android系统与外接模块的通讯方式主要有I2C通讯、USB通讯、串口UART通讯、蓝牙通讯等。我们现在只探讨下I2C通讯。
I2C通讯又分两种,一种是通过读写寄存器;一种是不带寄存器直接读写I2C。读写寄存器的方式也存在差异,此文以Mstar平台来说明。
1、读写I2C下寄存器数据
现以读写光感模块ISL29023为列说明。
首先需要定义I2C设备的地址:ISL29023_IIC_ADD
然后获取I2C设备:mapi_i2c::GetI2C_Dev(ISL29023_IIC_ADD)。
读写寄存器:iptr->WriteBytes(1, addr, 1, data)、iptr->ReadBytes(1, ®, 1, reg_value)。
其中方法中的第三个参数:1表示I2C需要读写寄存器;0表示I2C不需要读写寄存器,直接读写I2C。
//Device Info Define
static I2CDeviceInfo_s Board_I2C_Dev[BOARD_I2C_DEVICE_NUM] =
{
{ IST_I2C_EP9461E, 1, 0xC8 },
{ IST_I2C_CM32181, 2, 0x20 },//LIGHT SENSOR
{ IST_I2C_BL_STK3310, 2, 0x90 },//LIGHT SENSOR
{ IST_I2C_DZ_B_ALP, 2, 0x72 },//LIGHT SENSOR
{ IST_I2C_AD83586, 1, 0x62},
{ IS