I2C最低时钟速度和可靠性


12

I2C是否指定了最小时钟速率?我知道使用最广泛的时钟频率是100kHz,并且某些设备支持400kHz的“快速”模式,而其他设备则支持较快但又模式的模式(我认为1MHz?)。由于SCK信号是由主机生成的,所以我认为一个主机的运行速度可能比任何一个主机都要慢得多-实践中是否存在下限?从属设备在多大程度上关心时钟速率(例如,它们的超时时间短是常见的)?我问的原因是我想知道是否可以在更长的距离(例如20英尺)上运行I2C以在生产测试仪设置中可靠地对I2C EEPROM进行编程。我假设它在标准数据速率下无法在该距离上可靠地工作。


高速模式最大允许3.4 MHz时钟。100 pF总线电容。
stevenvh 2012年

Answers:


16

不,没有最低频率,最低时钟频率为0或DC。请参阅规格,第48页。

但是您将必须注意上升和下降时间。分别是1000 ns和300 ns最大值。较长的电缆,带有一些电容,无论频率如何,都会影响边缘。

正是电容和上拉电阻共同决定了上升时间。下降时间不是问题,因为将线拉低的FET的电阻非常低,因此下降时间常数也将非常低。所以我们剩下上升时间了。为了在200 pF电缆上获得1000 ns的上升时间,上拉电阻不应大于2.2kΩ。(上升时间达到最终值的90%。)

在此处输入图片说明

该图显示了最大上拉电阻(以Ω为单位)与电缆电容(以pF为单位)的关系,以得到1000 ns的上升沿。请注意,I2C器件的灌电流不必超过3 mA,因此,在3.3 V时,总线电容不应高于395 pF,否则,上拉电阻必须小于1100Ω,并允许更大。比3 mA 那是绿色的虚线。对于5 V操作,上拉值为1667Ω(紫色虚线),允许的容量甚至为260 pF。


谁说I2C设备最大可吸收3mA电流?对于IOL = 20mA,我的I2C设备具有VOL = 0,4V。这意味着它可以吸收更多的电流,因此上拉电阻可以更小。这导致可以处理更多的电容。@stevenvh
河野

Arduino奴隶就是一个例子。在VOL = 0,4-0,5V之前,它们可以吸收高达10mA的电流。这意味着它们可以驱动负载更高的总线。
河野

实际上,大多数I2C设备只能吸收3mA电流,但如今,有更多具有更多吸收能力的设备。幸运!
河野

4

我已经以大约100Hz的频率运行I2C,没有问题。就像@stevenvh所说的那样,只需要担心最大速度和线路电容。


2
我有单步i2c。这不能保证您找到的每个设备都将采用这种方式制造,但是从技术上讲,没有任何东西可以防止它“降到DC”工作。
gbarry

4

通过仔细选择驱动器和阻抗匹配,您应该能够解决线长问题。

假设长期运行是设置的一部分,而不是产品的另一种选择,则可能是使用能够很好处理距离的东西,例如RS422(或者实际上甚至是RS232)与放置在测试线束连接器中的微控制器通信,这样一来,i2c就会在与目标相当短的距离内通话。

或者,您可能会在没有智能的情况下执行此操作,只需使用一块小板,该板将差分信令协议与Schmidt触发接收器桥接到目标的i2c信令或从其传输出去。

您的运行时间可能不够长,以至于信号传播时间(缺少稳定问题)将需要特别慢的时钟速率,以免在仍在传输旧数据的同时翻转总线。

当然,您将需要对刚刚编程的数据进行回读验证。

出于比较目的,IIRC VGA显示器具有一个i2c(或类似i2c)ID读数,如果您在6英尺或3英尺的备用电缆上添加了6英尺的延长线,则该读数可能仍然有效。

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.