SPI 或 I2C:用于较长的总线

电器工程 avr spi i2c 数字通信
2022-01-27 07:58:55

我正在考虑一个需要多个 AVR 通过总线相互交谈的项目。他们将相隔多达6英尺。

似乎 I2C 和 SPI 都可以让一系列微控制器通过总线进行通信,但我还没有看到任何关于那会持续多长时间的消息。有没有人尝试在几英尺的距离内连接这些协议?

4个回答

正如其他人所说,只要上拉电阻、时钟频率等,SPI 和 I2C 就可以长距离使用。

主要的替代品(将提供更好的抗噪能力)是RS485CAN两者都使用差分线以最大程度地减少噪声问题,并且比 I2C 或 SPI 更适合这种数据传输长度。然而,我不认为很多(任何?)AVR 都带有内置的 CAN 外设,这使得 CAN 的使用更加容易。

我想说的是,在选择总线时要考虑的最重要的事情是确保您用于设备之间通信的协议包含CRC或等效协议,以便您可以确定是否正确接收到消息(CAN 将其作为数据包)。考虑到这一点,将 ACK/NACK 类型的响应作为协议的一部分也很有用,这样可以重新传输损坏的消息。

几英尺应该没有问题,如果可以的话,只需使用双绞线。SPI 比 I2C 更容易缓冲(如果需要),因为 SPI 信号都是单向的,而 I2C 的信号在共享线上。

AVR 微控制器可以处理 I2C 和 SPI 从模式以及主模式吗?(你需要两个)

对于长距离的 I2C,您可能需要寻找一些“I2C 总线中继器”解决方案。请记住,您可能发现的 I2C 或 SPI 通信的任何最大距离主要是指总总线距离,而不是总线中两个节点之间的距离。

您可能需要研究 RS485 来解决此类问题。它是一种通过差分线路进行通信的串行总线协议,因此在使用双绞线时,噪声的可能性降到最低。通过这种方式可以到达很远的距离。缺点是您的电路中需要额外的 RS485 编码器 IC(如 MAX485,不是很贵)。

仅供参考,无线 Nintendo Wii 遥控器与其 Nunchuck 伴侣之间的接口通过约 3 英尺长的电缆使用 I2C。还有 3 英尺的延长电缆可将总长度延长至约 6 英尺。与您的设置不完全相同(只有两个设备连接在一起),但它是广泛使用的消费产品中通过电缆的 I2C 的一个示例。