i2c概率性读失败

lcq170 2016-11-04 05:25:55
设备重启,uboot重启过程中先通过PMbus协议写了两个寄存器,然后通过PMbus协议读取slave的一个寄存器, 为了调查问题,多读了几遍。概率性会读失败,通常重启十几次能复现一次


正常情况下读出内容如下:
0x04 0x00 0x10 0x80
0x04 0x00 0x10 0x80
0x04 0x00 0x10 0x80

失败的情况下读出内容如下:
0xFF 0xFF 0xFF 0xFF ----偶尔第一次读出全FF。
0x04 0x00 0x10 0x80
0x04 0x00 0x10 0x80

linux 启动, boot后,通过app读取有类似情况。偶尔第一次读是FF,再读一次就好了。


可能是什么问题呢,怎么定位,求指教。



...全文
547 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcq170 2016-11-07
  • 打赏
  • 举报
回复
i2c驱动初始化后,我已经进行了两个寄存器的写操作,而且都写成功了,但是进行的读操作。不过,我的确试过加延时,在两个读操作后面都加了300ms的延时。但是,还是概率性会碰到错误。 我试试青fifo吧,谢谢。
lcq170 2016-11-07
  • 打赏
  • 举报
回复
看了驱动在每次读之前都有清除fifo。
luckywang1103 2016-11-04
  • 打赏
  • 举报
回复
会不会可能是重启过程中i2c的芯片还没有上电初始化ok,所以读取的数据都是0xff,在读取之前加延时看看 还有一种方式,在重启的过程中,使用示波器或者i2c协议分析仪器看看抓到的信号上的数据和软件获取的是否一样,如果抓到的数据是对的,但是软件读取的数据是0xff,是不是要考虑下在每次读取之前清除一下接收fifo中数据。

1,319

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧