是否有任何明确的 I2C 引脚分配指南?不寻找“标准”

电器工程 i2c 引出线 互连
2022-01-02 21:21:54

编辑:这已经重复了好几次,所以把它放在首位:是的,众所周知, I2C 设备间连接器没有“标准”,但这个社区肯定可以制定一个“指导”点列表来制作此类互连基于信号行为、噪声最小化和因错误连接而降低的风险。


NXP 定义了I2C 标准,但没有指定 I2C 连接器的引脚,这是我的理解。NXP 的唯一指导似乎是提到在 SDA 和 SCL 之间放置一个接地和/或 Vss,如果 Vss / Gnd 通过互连进行。

购买各种 I2C 模块给我留下了各种 I2C 引脚,以及跟踪我必须为它们制作的各种带状电缆开关垫片的一些任务。

例如

  • 单色 OLED 模块:SCL、SDA、GND、5V(显然不理想,因为时钟和数据彼此相邻。
  • Arduino 的传感器屏蔽:SDA、SCL、GND、5V(同样不理想,加上切换的 SCL/SDA)
  • 彩色 LCD 模块:SCL、GND、5V、SDA(耶!)
  • 无名 I2C 中继器:SCL、5V、GND、SDA(哎呀,他们切换了电源引脚!差点让魔法烟消云散。)

所以我的问题是:对于 I2C 4 针连接器引脚排列顺序
是否有明确/权威的指导方针,其中 Vss 和 GND 都将从主机传送到设备?

如果做不到这一点,是否有任何 I2C 模块/设备目录(无论多么不完整)列出了每个已采用的引脚?

澄清:寻找诸如“使 Vss 更接近 SCL 因为......”之类的指导方针,而不是明确不存在的定义标准。

4个回答

我最近推出了自己的 I2C 连接器。连接器本身并不是很重要,现在我只使用 100mil 间距接头(通常是母板,所以在未连接时它不会那么笨拙),但任何 4plus 针连接器都可以。此外,我正在使用P82B715来自 TI 作为 I2C 总线扩展器。这克服了与长时间运行 I2C 下降相关的电容问题,正如人们所说的那样,I2C 最初并不是为之设计的。我确实尝试了许多不同的组合,就像你给出的例子一样,我注意到性能完全没有差异。我相信这是因为 I2C 相对较慢,SDA 和 SCL 之间的干扰不是什么大问题。基本上,总线上电压的上升时间(发生干扰时)远小于位长度。因此,这可能不是您想听到的,但它确实提供了更多选择。就我个人而言,我使用 [VCC, SDA, GND, SCL] 可以轻松地路由到该芯片/从该芯片路由,并且在向后插入时也不受 VCC/GND 混淆的影响。

最初建立时,I2C(内部集成电路)总线仅用于连接单个 PCB 组件上的芯片。它从未打算用于将多个板连接在一起的电缆,因此没有定义用于此目的的连接器。

我知道的唯一“标准”基于 I2C 的外部接口是用于将用户接口设备连接到计算机的短寿命ACCESS.bus以及用于通过 VGA、DVI 和 HDMI 连接器检索监视器信息的VESA 显示数据通道。

许多人使用某种连接器在两个 PCB 之间传输 I²C 信号和电源。例如,

长距离传输 I²C 信号的一些一般技巧:

ps:我看到维基百科:I²C 电路互连已链接到这个问题。

没有标准引脚,没有标准连接器。I2C 标准并不适合这种事情。它是在总线级别而不是设备级别指定的。例如,当您想插入 I2C 设备时,您是否按照标准知道上拉电阻是在主机上还是在设备上?不。还有很多其他你不知道的东西,比如你的电缆电容在哪里,Vcc 需要是什么......

事实上,甚至有些 I2C 设备需要额外的中断线路和其他普通的老式数字 I/O。如果您无法就需要多少引脚达成一致,您如何将它们添加到标准中。

最重要的是,如果您在互连中寻找可移植性和稳定性,I2C 和 SPI 不是您需要寻找的地方。