那里是否有任何确定的I2C引脚输出指南?不寻找“标准”


16

编辑:这已经重复了好几次,所以放在最上面:是的,众所周知, I2C设备间连接器没有“标准”,但是可以肯定的是,这个社区可以制定一个“指导”要点清单。此类互连基于信号行为,噪声最小化和减轻由于错误连接引起的风险。


我的理解是,恩智浦在未指定I2C连接器引脚的情况下定义了I2C标准。恩智浦的唯一指导似乎是提到如果在互连中承载Vss / Gnd,则在SDA和SCL之间放置接地和/或Vss。

购买各种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更近”之类的准则,而不是明显不存在的已定义标准。


3
因此是一个问题。
Anindo Ghosh

1
根据您自己的问题,很明显看到没有标准...如果存在,显然人们不会遵循它。你被卡住了。:P
托比·劳伦斯

1
@AnindoGhosh嘿。如果是我,我可能会放弃预购的模块,并使用极化接头连接器以标准引脚排列来滚动自己的分线板。大概是6针,GND接在SDA,SCL和5V旁边,然后使用三对双绞线的电缆将每个信号接地,以降低噪声并抑制干扰。
托比·劳伦斯

3
似乎有些人冒犯了I2C是为Arduino用户出售的许多模块的流行默认连接选项。即使从未为外部板连接器设计过它,它也在这里出售,并且要求提供指导以指导如何更好地为新设备制造连接器,这对我们(不是专家)有用,对于我们而言,专家可能不喜欢这样。
ExcitingProjects 2012年

1
@ExcitingProjects不,他们说的没错,I2C并非为此目的,并且显然在设备间连接方面面临若干挑战。模块设计人员选择使用I2C只是偶然。如果我有选择的话,我也会被“冒犯”。
Anindo Ghosh 2012年

Answers:


16

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


2
+1 +接受。谢谢,也许是迄今为止最实际可行的答案,“存在设备间I2C,这是我使用它的方式以及原因”。避免VCC / GND混淆是有用的。避免在主板上放置pokey针座的好处是,我不小心将一些传感器模块上的针脚撕了。
Anindo Ghosh

这只是一个非常有用的答案,如果我有足够的声誉,我会为此给@Samuel加分,我喜欢这个问题,因为我有很多I2C模块,并且有一天会按照本指南构建I2C模块。
ExcitingProjects 2012年

11

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

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


我知道最初的目的有所不同,但是由于I2C现在已用于许多电缆连接模块,所以我希望有人开始建立一个协作数据库,以记录各种产品(尤其是满足各种需求的产品)使用的引脚排列Arduino和其他微控制器板市场。
Anindo Ghosh

4

没有标准的引脚输出,没有标准的连接器。I2C标准并非真正适合这种情况。它是在总线级别而不是设备级别指定的。例如,当您想插入I2C设备时,您是否从标准上知道上拉是在主机上还是在设备上?不会。您也不知道很多其他内容,例如电缆电容的位置,Vcc需要是多少。

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

底线是,如果您要在互连中寻求可移植性和稳定性,则不需要I2C和SPI。


3
如果人们正在寻找制造自己的设备的指南,该指南可以与(和像其他所有)duino的其他模块一起使用,该怎么办?那里有一个市场,不要忽略这一点。顺便说一句,根据规范,主机需要上拉,而设备需要上拉。
Anindo Ghosh

5
标准的“妙处”在于有太多选择!您选择一个带有明确定义的连接器的标准,例如MIDI,USB,RS232(除了那些愚蠢的null modem东西),然后将翻译器构建到您自己的设备中。另一种选择是通过一个标准组织(如IEEE)组成一个标准工作组。设备上的“可选”上拉电阻会影响整个总线的行为,这正是我的观点。MIDI光学隔绝通过标准每台设备,因此兼容设备不造成这些问题
斯科特塞德曼

1
+1是关于标准的有趣但如此真实的观点!:-)
Anindo Ghosh 2012年

4

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

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

ps:我看到Wikipedia:I²C电路互连与这个问题有关。


3

尽管没有I²C引脚或连接器标准,但仍有很多地方使用I²C进行了标准化。一些浮现在脑海中的内存模块(DIMM,SO-DIMM),视频接口(DDCDVIVGA)和SM总线(是的,他们的网页看起来像是在90年代中期提出一个孩子)。特别是,SM-bus连接器采用键控,仅包含I²C和电源,但是SM-Bus设置了附加限制,因此从技术上讲,并非每个I²C设备都应连接到实际的SM-Bus。乐高(Lego)NXT传感器等其他一些专用插头也在附近。


假设没有标准...我希望的是规范的规范收集,然后设备设计师可以遵循。例如,SMBus的外部有+ 5V线,而恩智浦建议+ V和GND都在信号走线之间。哪种方法更好,为什么?
Anindo Ghosh

2

没有标准。

没有普遍的做法。

关于决定自己要做什么的问题:

  1. 首先将信号放在原板上。IIC线具有相当高的阻抗,是单端的,因此容易受到噪声的影响,因此无法很好地端接传输线。IIC根本不适合退出市场。

  2. 如果您还是要下车,请保持公共汽车短。几英寸就可以了。一米或更多米确实是在自找麻烦。

  3. 远离噪声源。例如,不要将它们缠绕在电动机上,甚至不要靠近电动机。

  4. 使用不能向后连接的连接器。如果有人可以将其向后插入,则有人可以。

  5. 带状电缆可能是最容易使用的。最少需要三根导线,SCL,SDA和地线。增加力量可能是一个好主意。无论如何,请确保接地线在SCL和SDA之间,以避免串扰。电源线不应嘈杂,因此将其粘在一侧,无论哪一个都无所谓。

  6. 在弄乱了连接器并追逐潜在的问题之后,意识到点1实际上是您唯一需要知道的点。


因此,我们必须认真对待人们为arduino和其他微控制器的初学者制作并出售的所有数百种I2C产品吗?
ExcitingProjects 2012年

1

像往常一样,询问为什么某些东西标准化的帖子
Fortunately, the charging one has been solved now that we've all standardized on mini-USB. [Or is it micro-USB? Shit.
XKCD


也许,如果您更仔细地阅读了该问题,或者阅读了许多评论主题,您可能已经注意到,这不是在寻求标准,而是以规范指南的形式收集的智慧。
Anindo Ghosh 2012年

1
@AnindoGhosh-我不知道那有什么区别。如果您将上述漫画中的准则替换为标准,则同样有效。任何存在多种方式执行某事的情况通常都会导致许多人以多种方式执行所说的事情。即使这不是正式的“标准”。
康纳·沃尔夫
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.