I2C总线:通信线缆长度的影响及改进措施
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
这个减小上拉电阻不行吗? 好像有I2C总线中继器的。 用过I2C总线到3M,最后的效果就是干扰太严重了。 这个电容数值是怎么测量的呢? I2C总线可以做成差分的形式的吗? 这个上拉电阻是怎么选择的呢? 应该可以减小上拉电阻吧 I2C好像都是比较近的方案通信 没必要用I2C做远距离通信的啊 用485吧,或者以太网能好些 这个通信长度估计得加中继,才能好一些 上拉电阻降低能通信的远?应该也是合理的,这样能提高驱动力 所以,很多都不建议I2C远距离通信的,一般都是小于0.2米 讲的很细致,这也算是实践精神了 还是换别的方案实现远距离通信吧,毕竟都是2根线,何必为难自己呢,嘿嘿 50米的I2C估计是加了放大器了吧 我觉得只要总线功率够用,其实远点是可以的,这就跟MCU或者I2C的驱动有关系了 能不能减小上拉
页:
[1]