可用于连接两个 I2C 设备(I2C 主设备-> I2C 从设备)的最大电缆长度是多少?
是的,我知道 I2C 确实是为板内通信而设计的。我的任务是为多个 I2C 从机使用通用 I2C 总线以支持演示的“设计目标”。
为清楚起见,我们假设标准 I2C 总线速率为 100 kHz。
可用于连接两个 I2C 设备(I2C 主设备-> I2C 从设备)的最大电缆长度是多少?
是的,我知道 I2C 确实是为板内通信而设计的。我的任务是为多个 I2C 从机使用通用 I2C 总线以支持演示的“设计目标”。
为清楚起见,我们假设标准 I2C 总线速率为 100 kHz。
像 10,25 和 100m 这样疯狂的声音长度是完全可能的,当我需要快速将东西放在一起时,我经常使用这种方法(使用 UART 而不是 I2C,但这种方法适用)。不过,这并不是最好的方法。
关键是要知道你的输入电压阈值。确保接地线中的电压降远低于此电压,否则处于高地电位的发射器将无法将电压拉得足够低。恕我直言,对接地偏移缺乏容限是使用 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 抗性、速度、距离等,每片芯片的成本约为 1 美元,接地偏移几乎没有那么重要,所以你是自由携带电力和数据。
唯一的缺点是一个罐头收发器可以达到 70ma 传输和 1 或 2ma 只是听,所以 I2C 或直接 TTL UART 在极低功耗的情况下可能有用,但请考虑您实际花费多少时间发送。
根据此NXP 文档 I2C 总线规范和用户手册,对于快速模式和电阻上拉,电容应小于 200pF 。
使用电流源上拉电阻可以达到 400pF,但不能使用电阻。
如果您的电线为 20pF/30cm,并且您还有另外 50pF 的杂散和输入电容,则您的电缆长度限制为 2.25m。不同的假设会导致不同的数字。
我在一家生产 USB 传感器的公司工作。它们大多基于 I2C 传感器芯片,这些设备可以一分为二,因此您可以将 CPU 部分安装在一个地方,将传感器部分安装在另一个地方。我们对设备 CPU 和 I2C 传感器之间的 I2C 连接进行了大量测试。在 100 kHz 时,通过良好的错误恢复协议,使用基本电线可以轻松达到 25m。使用 CAT5 电缆,我们甚至可以达到 100m。