IIC协议不能收到正确的命令的分析方法


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”);
}

中断高电平有效,低电平有效,上升沿有效,下降沿有效要清楚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值