我可以在 2m 电缆上使用 I2C 吗?

电器工程 i2c 沟通 电缆
2022-01-09 21:15:10

在我当前的项目中,我需要通过 I2C 在微控制器和一些传感器之间进行通信。其中之一是温度传感器,它需要放置在距离微控制器大约 2 米处。我无法选择其他协议(传感器位于具有给定连接器/引脚/协议的模块上)。

您认为在这种配置下可以进行通信吗?我应该查看哪些信息以确保它可以或不可能?你有什么建议吗?

这是我第一次与 PCB 外的 IC 通信。

4个回答

I2C 不是为长距离使用而设计的,但我知道一些实际使用距离约为 2 米的应用。我也知道一个他们有问题的案例,我相信它最终通过修复接地回路来解决。

为确保它能够正常工作,您应该使用 I2C 总线扩展器,如 P82B715。

但是,PB2B715的数据表在第 8.2 节中说明了以下内容:

对于用于电话或以太网 (Cat5e) 布线的典型双绞线或扁平电缆,其电容约为 50 pF 至 70 pF/米,因此理论上电缆最长可达 50 m从实践经验来看,30 m 已证明以这种简单方式驱动的安全电缆长度最高可达 100 kHz,如图所示。更长的距离和更高的速度是可能的,但需要更仔细的设计。

所以专家(NXP是前飞利浦,I2C的发明者)说30米已经被证明是可行的距离。我的经验表明 2 米是可行的距离,并且反馈给我的经验表明负载更重的 I2C 总线也可以不带任何扩展器。

长距离工作 I2C 总线的关键点是:

  • 使用低电容电缆(双绞线/以太网);
  • 限制公交车速度;
  • 有正确大小的引体向上。

上拉计算

Texas Instruments 有一个很好的关于上拉计算的应用说明 (SLVA689)

  • 上拉的下限(最小值)由总线上最弱的外设可以拉动的电流以及表示任何外设的 0 的最大电压决定。因此,如果 1V 仍然为 0,您的 VCC 最大为 3V6,而您最弱的设备只能拉 20mA,您的电阻由电阻器上的电压损耗和该设备拉的电流决定:\$(3.6\\mathrm{V} - 1\ \mathrm{V})\ /\ 20\ \mathrm{mA}=130\ \Omega\$
  • 上限由最大上升时间决定:您的最大 I2C 频率与此直接相关,但协议也定义了上限。上限为\$R_{max}=t_r/(0.8473 * C_b)\$其中\$t_r\$是最大上升时间,\$C_b\$是总线电容。因此,如果\$C_b\$为 400pF,并且总线在标准模式下运行(\$t_r\$ =1ms),那么您会发现\$R_{max}=2950\\Omega\$TI 的应用笔记有图表,以便您可以快速找到合适的值。
  • 当然,上拉的值是所有上拉并联组合的等效值。您可能在主端、从端和总线上的任何其他从/主端有一个上拉电阻。
  • 您越是“处于极限”,您就越需要考虑“寄生”,例如电缆中的电压降。

可以,但不推荐。

不同用途的不同巴士

与 SPI 一样,I2C 设计用于在一个板或一组板内进行通信(想想 Raspberry Pi 及其帽子或 arduino 及其盾牌)。它可以在更长的距离上工作(请参阅其他答案),但不应该在这些情况下使用,因为这不是它的设计、优化和合格的。

您承担的风险是您将来可能无法添加更多传感器,或者您的系统无法在任何地方工作,或者在某些情况下会失败。

您应该寻找的是现场总线,例如 1-wire、CAN、RS-485、以太网等。

蓝牙或 zigbee 等无线系统也是一种选择。

您通常受到 400 pF 最大总线电容的限制。

如果您将频率降低到 1 kHz 并在传感器旁边提供电源去耦,它应该可以正常工作。

如果您需要更强大的功能,则可以在两端使用差分 I2C 转换器,例如PCA9615

正如@filo 所指出的,I2C通常受总线电容的限制。但是,有一些方法可以解决这个问题:

  1. 使用总线扩展器。P82B96PCA9600在您的情况下都是不错的选择
  2. 如果您需要更高的速度或极长的电缆,您可以使用像PCA9600这样的差分 I2C 收发器。但是,这会使您的电路变得相当复杂,并且您需要在电缆的两端安装一个 IC。

查看NXP 的AN10658AN11084了解更多信息。