1,确定IIC 挂载的总线是总线几
2.确定IIC外载设备的地址
3.地址在linux中进行移动,比如0x34 移位后0x1a
0x34 = 0011 0100 <<后 0110 1000 >>后 0001 1010 使用的是
0x1a = 0001 1010
4.测试IIC的波形
5.IIC设备地址的确认
6.IIC是否提示报错,没有报错,说明IIC通讯是正常的,IIC报错则查总线对否?设备地址对否?波形正确否?
7. IIC设备的读写是否正确,是否有停止位,
8.平台是否已经处理了iic的地址,直接写还是要移位要确定
s32 gtp_i2c_read(struct i2c_client *client, u8 *buf, s32 len)
{
struct i2c_msg msg[2];
s32 ret = -1;
s32 retries = 0;
u8 cmd = 0;
msgs[0].flags = !I2C_M_RD;
msgs[0].flags = client->addr;
msgs[0].len = 1;
msgs[0].flags = &cmd;
msgs[1].flags = I2C_M_RD;
msgs[1].flags = client->addr;
msgs[1].len = len;
msgs[1].flags = buf;
while(retries < 3)
{
ret = i2c_transfer(client->adapter,msgs,2)
if (ret == 2 ) break;
retries++;
}
//
s32 ret =1;
s32 retries = 0;
while (retries < 3 )
{
ret = i2c_master_recv(client,buf,len);
if (ret == len )break;
retries++;
}
if (retries > = 3 )
{
printk(“IIC Read failed \r\n”);
}
中断高电平有效,低电平有效,上升沿有效,下降沿有效要清楚