I2C总线最大长度?


38

可用于连接两个I2C设备(I2C主站-> I2C从站)的电缆的最大长度是多少?

是的,我知道I2C确实是为板内通信设计的。我的任务是“设计目标”,即为多个I2C从设备使用通用I2C总线来支持演示。

为了清楚起见,我们假设标准I2C总线速率为100 kHz。


1
最大长度是我要玩的长度所引入的电容。电容太大,可能会影响您的速度。因此,一如既往,这取决于。
古斯塔沃·利托夫斯基2014年

@GustavoLitovsky您对电容是正确的。它还取决于所使用的电缆类型(屏蔽还是非屏蔽)。我对一般准则最感兴趣。
Nate 2014年

2
@Nate准则:最大净总线电容为400pF。(与问题有些相关:过长的I2C总线的回忆录。)
尼克·阿列克谢夫

1
I2C =集成电路间总线。它不是为盒子之间的长距离设计的,当然也不是为400kHz设计的。
Spehro Pefhany 2014年

1
除了计算之外,只想添加一些个人经验。我已经完成了一个演示,该演示从开发板到I2C到USB转换器,其非屏蔽线约3英尺。看起来不漂亮,但是90%的时间都有效。
mcmiln '16

Answers:


16

根据该恩智浦文档 I2C总线规范和用户手册,对于快速模式和电阻上拉,电容应小于200pF 。

使用电流源上拉电阻可以达到400pF,但不能使用电阻。

如果电线为20pF / 30cm,并且还有50pF的杂散和输入电容,则电缆长度限制为2.25m。不同的假设将得出不同的数字。


1
@KrunalDesai在上面链接的NXP文档中特别提到。I2C总线规范和用户手册
Spehro Pefhany

1
对于一个真实的例子,任天堂Wii的“Wiimote的”使用400kHz的I2C(wiibrew.org/wiki/Wiimote/Extension_Controllers)与像有人叫它Nunchuk(外围设备通信wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck),正如您会看到,它的电缆长约1m。出售无源扩展器可额外提供1m(amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K),因此它们正在推广,但仍在2.25m的范围内。
罗布·史达琳

16

像10,25和100m这样疯狂的探测长度是完全可能的,当我需要快速整理东西时,我经常使用该方法(使用UART而不是I2C,但该方法有效)。不过,这并非最佳方法。

关键是要知道您的输入电压阈值。确保接地线中的电压降远低于此值,否则接地电位高的变送器将无法将电压拉到足够低的水平。缺少接地偏移公差IMHO是使用RS485或CAN收发器的最大原因(一些应用笔记中提到了CAN上的I2C)。

理想情况下,所有设备都将具有自己的壁式疣和电池,并且设备之间的地线将不会发送任何功率。

但是,以CAT5为例。CAT5不能高于52pf / m,或者不是CAT5。

100m的52pf电缆的电容为5200pf或5.2nf。

5.2n倍20kohms(上拉)给出的时间常数约为104微秒。这将速度限制在大约10kHz左右。

使用2.2kohm上拉电阻,您可能会达到100kHz。

我听说设备在SDL和SCK上应该有一个电阻,因为它们驱动的电容负载很大,大约为180或200欧姆。

但老实说,I2C并非遥不可及。与普通UART一起使用的CAN收发器或RS485是一个强大的解决方案,具有非常好的故障保护,ESD电阻,速度,距离等,每片芯片的成本仅为一美元左右,接地偏移几乎没有多大关系免费随身携带数据。

唯一的缺点是,can收发器的发射能力可以达到70ma,而收听时则可以达到1或2ma,因此I2C或直接TTL UART在极低功耗的情况下可能很有用,但请考虑您实际花费了多少时间进行发送。


7

我在一家制造USB传感器的公司工作。它们大多数基于I2C传感器芯片,这些设备可以分成两部分,因此您可以将CPU部件安装在一个位置,将传感器部件安装在另一个位置。我们对设备CPU和I2C传感器之间的I2C连接进行了很多测试。在100 kHz的频率下,具有良好的错误恢复协议,可以使用基本导线轻松达到25m。使用CAT5电缆,我们甚至可以达到100m。


听起来您在谈论USB电缆长度。OP正在询问有关对原始 I2C进行布线的问题。这是一个完全不同的主题。如果我输入的内容不正确,请编辑您的答案,然后我将删除我的下注。
DoxyLover

1
25m甚至对于一个USB来说还是很多...
Vladimir Cravero 2014年

3
不,我说的真的是设备CPU和I2C传感器芯片之间的I2C连接,而不是主机和CPU之间的USB连接。下面是一个例子:yoctopuce.com/EN/products/yocto-meteo/doc/...
martinm

1
如果您想将双绞线用于I2C和电源,那么您将一起绞合哪一对?(SDA,SCL),(VCC,GND)或(SDA,GND),(SCL,VCC)?
Cano64 2015年

3
理想情况下,您根本不用双绞线。双绞线对于平衡信号很有用。如果没有其他电缆,请将信号线接地。如果您实际上只有四根线,那么在承诺仅将一根线用于GND之前,请考虑一下远端要消耗多少功率-您可能会以比允许的接地偏移高的电位结束。我通常使用旧的Cat5电缆(不更高!双屏蔽层增加了您不需要的容量),并带有一对接地,一对+ 5V以及SDA + GND和SCL + GND对。
Matthias Urlichs '17

4

IIC是一种同步协议,因此,它可以任意缓慢运行,以满足有关距离和噪声的系统要求。

从1990年代的ACCESS.bus一直到今天的如何使用IIC通过电缆使用IIC的方式,一直到今天如何从视频显示器中检索EDID信息。


另一个例子是Wii Nunchuck,它使用4英尺屏蔽电缆通过I²C连接到Wii遥控器。
tcrosley 2014年

4

诸如恩智浦的P82B96之类的东西可以用来改变总线上的电压电平,从而允许更长的距离。

数据表包含用于3米,25M,100M和250米的I2C电缆长度的例子。

还有其他具有类似功能的芯片。


恩智浦芯片的问题是您最终需要两倍的电线。还有其他想法吗?我发现的双向IC不会超过+ 5V。
马提亚斯·乌里希斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.