2685|4

5014

帖子

12

TA的资源

裸片初长成(初级)

楼主
 

硬件改版引起的I2C异常 [复制链接]

最近公司有一款新版硬件,在测试时发现原有的I2C通信测试程序运行失败,从I2C从设备RX8025中无法读取到数据。使用示波器的时候,也无法在时钟线SCL上看到时钟信号。但是在测试数据线SDA的时候,偶尔能看到一些数据。如果使用示波器表笔点在测试的信号线上,有时能读到正确的数据;如果不这样做,几乎看不到正确的数据。开始怀疑是否是因为测试程序本身可靠性有问题,因为在一段时间测试后发现,这种现象随机性比较大。如果程序,没有初始化好硬件,或延时没做好,很容易造成这种随机性的问题。
于是,将软件可能的延时及初始化检查了一遍。找到了一处延时疑似有问题的地方。将这个地方的延迟增大2us后,测试竟然运行都通过了。在接下来的测试中,I2C读写正常。此时,找到I2C通信失败的原因了:I2C信号从写入结束发送STOP,到下一次开始读取从设备的Start时间间隔约为在3.7us,此时间偏小,导致通信不稳定,增加延迟可以解决问题。
在写完,上边的结论后,认为事情到此结束。
之后,分析了STM32的I2C主机通信时钟信号的参数,同时检查了程序中I2C的参数配置。发现不应该出现这样的情况。因为程序配置的I2C参数,使其运行在Fast mode此种模式下,Stop:Start的时间间隔最小为1.3us,而实际的3.7us是满足要求的。也就是说在此处增加延时,并不能真正解决问题。

在第二天的测试中,发现原来的解决方法确实存在问题。还是会有I2C通信失败的情况。再将原有测试程序中I2C的超时处理部分用#if注释掉(因为STM32库自带的I2C示例程序存在致使程序陷入while死循环的情况,而其优化解决方案使用了DMA+中断,感觉有些杀鸡用牛刀,不太合适。于是在其原有程序中做了超时处理,避免I2C通信失败陷入while死循环)。发现,程序运行正常。但是,如果加上超时处理,程序就无法正常运行。由此说明,并不是什么Stop:Start的时间问题。
于是将原有I2C测试程序(参数不变,带超时处理)在旧的硬件上运行,通信正常。
这里问题出来了,同样的程序,在旧的硬件中可以运行,在新的硬件上运行异常,这里边应该哪里有问题。于是,将原有的I2C通信速率400KHz的时钟降低到200KHZ,保留超时处理,在新的硬件版本上运行。发现运行正常,读取数据正常。
至此,于新版硬件的I2C通信问题,自认为是找到了:I2C的400KHz时钟速率在新版硬件上运行存在异常,调低时钟速率在新版硬件上运行(硬件优化后,或许继续使用原有的参数)。

由此问题解决过程中,发现:很容易将问题Q消失时,采用的方式M认为是问题出现的地方。可是往往,问题的真正原因R却躲在某个角落,为M替其顶罪感到开心,也为躲过了一场搜捕感到窃喜。下一次,他还会出来继续作乱。只有当真正将R绳之以法,才能根据解决问题Q。而这,需要的不只只是眼睛,还有思考。
头痛医头脚痛医脚,只治得了疼,却治不了病。

最新回复

建议用示波器看看波形,是不是改版时两线的容性负载增加了  详情 回复 发表于 2014-5-21 22:25
 
点赞 关注
个人签名《MCU工程师炼成记》作者之一

回复
举报

7234

帖子

195

TA的资源

五彩晶圆(高级)

沙发
 
沒玩過這麼細 頂版主
 
 

回复

1万

帖子

141

TA的资源

版主

板凳
 
楼主的观察和分析非常好,芯片设计中的bug还是屡见不鲜的。
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

4
 
硬件改版动了什么地方了? 怎么400khz都不行呢?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
建议用示波器看看波形,是不是改版时两线的容性负载增加了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【回帖赢京东卡】说说无线技术那些事儿
即日起—2月28日,参与回帖讨论都有机会赢取【30元京东卡】

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表