[MM32软件] I2C总线:通信线缆长度的影响及改进措施

[复制链接]
2759|14
 楼主| lzmm 发表于 2023-1-29 10:06 | 显示全部楼层 |阅读模式
I2C总线确实不适合远距离通信,尤其是需要使用线缆与I2C接口器件进行通信,这里的“不适合”并不是说不可以,这也是本文的重点。一般使用I2C总线,都是在用一个开发板上,或者距离比较近的,如果是远距离通信,比如说超过2米,这个时候对硬件就有特殊的要求了。

   很多的文章说,I2C总线的线缆长度不要超过50cm,这个我觉得相对比较保守,我们做的测试是在实验室里,只要硬件参数合适,是能做到5~8米的,那么如何延长 I2C 通信线缆长度呢,也就是如何进行I2C远距离通信,下面几条经验是可以作为参考的:

(1)实验测试中,我们发现,在通信正常的情况下,I2C总线的上拉电阻与线缆长度是有比例关系的:

         通信线缆越长,上拉电阻要越小。而通信线缆越短,上拉电阻要越大。比如:

        ① 通信线缆小于0.2米,一般可以采用10K的上拉电阻,这个也是很多I2C芯片的说明书中推荐的上拉电阻。

        ② 通信线缆在 0.2到2米之间,一般可以采用 4.7k 上拉电阻。

        ③ 通信线缆在2米以上,一般可以采用 1~2.2 k上拉电阻。

        上拉电阻的范围一般在1K~10k之间,之所以有这个范围,可以简单的认为,电阻过小,功耗比较大,而且容易烧毁I2C接口,而电阻过大,会影响 信号的上升沿时间,也就是影响到了 时钟频率,会出现误码。

(2)远距离通信时,尽量使用 屏蔽 线缆,这个确实是有用的,能够很好的抗干扰。

(3)如果不考虑成本,可以采用 I2C 总线 中继芯片,比如P82B715、P82B96等,这些中继芯片的基本原理是,将I2C总线接口专为 差分信号,所以主机和从机之间,需要一对芯片,这样主机和从机之间是差分信号传输,也就克服了I2C总线的 线缆长度限制了。当然价格也是比较贵的,一对芯片要将近30元。

(4)通信 频率,这个很好理解,在各种通信中,有一个共同的规律,通信速率与误码率成正比,通信频率越低,误码率也越低,所以我们在与I2C设备通信的时候,尤其是距离比较远的,可以考虑降低通信频率。
原文链接:https://blog.csdn.net/u012351051/article/details/100567445

单片小菜 发表于 2023-1-29 16:59 | 显示全部楼层
这个是技术贴,不错的,感谢楼主的分享。
jkl21 发表于 2023-2-2 16:24 | 显示全部楼层
I2C总线的最大长度是:小于200mm~300mm,跟传输速度、布线等有关系
saservice 发表于 2023-2-4 12:05 | 显示全部楼层
上升、下降时间过长可能会导致建立保持时间变小,从而影响数据传输的可靠性,最终导致误码
kkzz 发表于 2023-2-4 13:57 | 显示全部楼层
I2C总线是低速高阻总线,在PCB布线时要注意抗干扰,并且尽可能缩短引线长度
sesefadou 发表于 2023-2-4 15:19 | 显示全部楼层
spi通信和i2c通信的数据帧有什么不同?
belindagraham 发表于 2023-2-4 16:47 | 显示全部楼层
延长距离可以用I2C中继器芯片
jackcat 发表于 2023-2-4 17:57 | 显示全部楼层
I2C的传输速率由什么决定?  
软核硬核 发表于 2023-2-8 11:48 | 显示全部楼层
越长,通讯速度需要越慢才行。
LLGTR 发表于 2023-2-8 11:49 | 显示全部楼层
突然想到之前的项目为什么那么多模块用不了了,好像就是线太长了。
天天向善 发表于 2023-2-8 11:49 | 显示全部楼层
好像有IIC远距离的芯片,不过没有用过。
weifeng90 发表于 2023-2-10 08:03 来自手机 | 显示全部楼层
可以转换成差分总线进行传输
七毛钱 发表于 2023-2-14 11:23 来自手机 | 显示全部楼层
挺不错的基础知识贴,值得回顾学习一下
Jacquetry 发表于 2023-3-12 22:24 | 显示全部楼层
用I2C中继器芯片可以延长距离
星辰大海不退缩 发表于 2023-3-13 11:14 | 显示全部楼层
受布线影响比较大,地线尽量粗,形成闭环,增大线宽,减小过孔数量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

413

主题

9190

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部