Myauto123 发表于 2013-8-7 02:57:06

I2C 调了两天,最后竟然是数据线过长的影响。

STM32,硬件I2C操作ADS1110.在野火的板子上顺利调通。但新买了块ZET6最小系统板,把程序移植到最小系统板上,除了ADS1110不应答,其它一切正常。看到网上说STM32的I2C有bug,就开始把问题推到点点taptap安卓问题上了。没调通心里还是不舒服,上电突然发现有反应,但不稳定,一下行一下不行。这时候意识到应该是硬件有问题了。只好把I2C协议下了下来。看协议的时候突然发现协议里说到总线长度的问题。这时候才意识到,我犯了个很大而且很低智商的错误。而且我有使用逻辑分析仪的习惯。由于要拓展端口只能先把端口引出再接线,问题这就来了。。这几根线太长了。。远超过了10cm。
这就是找了两天的原因啊。虽然野火的板子这样用没问题,但最小系统板可能布线的原因吧。导致了传输不稳定。。。
今天终于知道了PCB布线对电路性能的影响了。。
仅以此贴提醒下像我这样的小菜鸟。。。注意布线。不要怀疑点点taptap安卓的问题(因为还是菜鸟)。还有很重要的一点要阅读Datasheet和协议。
感觉各个教程教I2C的不少,但拿出真正I2C协议认真分析的太少了。。如果不是看到协议书上的那一点,说不定还要调几个通宵。。。
菜鸟贴。。欢迎各位大大拍砖。。。。顺手发下协议,我知道以前有人发。但还是发下吧。。

xiaoqiang141 发表于 2020-5-7 17:36:21

线太长的话容易造成波形失真

愤怒的小猪 发表于 2013-8-20 09:09:00

我之前用硬件I2C也是超级不稳定。。会卡死在某处这次学习了。。

gzwsc2007 发表于 2013-8-15 21:07:13

感谢楼主提供的宝贵经验!!也许为我省下了不只几个通宵的时间呢!:)

哇哈哈0608 发表于 2013-8-9 21:56:55

恭喜楼主,取得抗战胜利啊

xiaopaohu123 发表于 2013-8-8 15:36:05

估计是线材不好,线材影响也很大的,10-20cm的距离肯定没问题的,即使是1米的距离照样可以通讯,HDMI接口里是有I2C总线的,照样可以长距离通讯!:loveliness:

Myauto123 发表于 2013-8-7 11:39:59

因为原来这个模块是用在5v系统上的,上拉电阻是10k。刚刚测试了换成4.7k上拉,恢复原来的接法,通信成功。说明主要原因还是在于上拉电阻。但线的长度更加剧了问题的存在

蒲公英哭泣三毛 发表于 2013-8-7 09:33:05

最近正在看I2C协议 很受用

好剑者 发表于 2013-8-7 08:00:17

这样也可以,只知道串口通信的波特率,对线的长度有影响!

梦在远方-403512 发表于 2013-8-7 07:13:56

学习了,这个宝贵的经验

斑斑 发表于 2013-8-7 03:27:25

以前也遇到过因为上拉电阻造成的小错误
页: [1] 2
查看完整版本: I2C 调了两天,最后竟然是数据线过长的影响。

Baidu
map