调试一个IPMC已经快两个月了,这期间IIC读取温度传感器和电流传感器一直没有得到应答。最后发现是IIC时钟频率的问题;一般来说频率越高,传感器不应答的可能性越大;
同时延时函数是单纯的for循环,for循环的时间和CPU主频有关,从今天代码查看的位置好像就是之前设置晶振的位置。
然后写个流水账记录一下今天一天的调试解决过程
1.逻辑分析仪抓模拟iic发现有正常发送从机地址,可是完全无应答。(顺带发现逻辑分析仪的解码错误概率还挺大)
2.求助项目经理,得到线索;主控程序有使用iic读取传感器且完成验证,并且迎接连接无大差异。于是屁颠屁颠clone了主控的程序把所有关于IIC的部分统统复制到计算板程序替换掉原来的部分,但通过git发现其实没有什么区别。
3.抓主控的iic引脚;(一开始傻不拉几的接错了脚还以为主控改了引脚@_@,事实证明对于我这种经常迷糊的性格还是得常备一个万用表)发现主控发送的内容和计算板一致,所以不存在发送内容错误问题;
4.得到指点:把计算板内容烧写到主控;烧写到主控后又因为本人实在过于粗心,忘记转串口,看着计算板不停打印的 no iic ack 以为程序烧到主控后还是不能运行。这一步直接影响到了后续问题解决阶段的判断。
5.抓到项目经理过来后,发现计算板和主控板发送的iic频率不同,计算板的scl大概在400kHz左右,主控在500+kHz左右。于是项目经理陷入了迷惑……没道理频率慢下来了反而没有应答(针对我反馈的主控也无法运行这一虚假现象……我的错……)
6.再后来想着是不是计算板上的温度传感器换掉了,原来是LM75,现在换成了SD5075.可事实证明,并没有;
7.最后实在没有办法的情况下,项目经理还是换点了延时,调低了IIC的频率到了一半左右,终于得到了应答。
还有以后记得做调试记录!
IIC时钟频率影响读取传感器问题
最新推荐文章于 2022-07-14 15:36:51 发布