I2C混合频率可以吗?


12

假设我们有一条400 kHz的I 2 C总线。有一个主设备和一堆从设备。我们想引入一个从属设备,但不幸的是,它只能达到100 kHz。

显然,可靠的设计选择是:

  • 只需以100 kHz运行该总线
  • 为400 kHz和100 kHz外设使用单独的总线

但是问题仅在于黑客:如果我们使用一条总线,以400 kHz的频率寻址400 kHz的设备,并且在与100 kHz的从设备通话时将总线切换到100 kHz,该怎么办?

还是较慢的从机可能会由于错误地认为正在解决而在I 2 C线上看到的400 kHz哈希行为不当?

我们是否可以依靠100 kHz器件来仍然能够很好地处理400 kHz I 2 C信号,以可靠地忽略发往其他从站的消息?


4
关于您的最后一句话,我认为您不能依靠100kHz的设备来处理400kHz的信号。
gbmhunter 2013年

但是,这正是我们要实现这样的hack所依赖的,因此这基本上是不可能的。
卡兹(Kaz)2013年

Answers:


6

如您所建议,这样做不是一个好的工程实践。尽管某些设备最会忽略无法接收的流量(欠采样),但其他设备可能会因错误的帧而使总线混乱。

因此,您要寻找的答案取决于您的应用程序的具体情况,例如:

  • I2C连接的长度
  • 上拉电阻值
  • 设备兼容性

当然,很难预测几年后运行超出其规格的设备会发生什么情况。

另一种选择是运行关闭线以使设备变慢或使时钟线(如果它们不能生成时钟信号)通过与门。


10

如果您的主机上没有其他I2C总线,那么另一个选择是使用I2C开关,例如PCA9543A / 43B。将400kHz从机放在一个分支上,将100kHz从机放在另一分支上,并根据需要进行切换。


如果您看看飞利浦(发起人)所说的话,就是这样。它们不兼容,建议使用总线开关。(在应用笔记中)。
gbarry

6

无法保证100kHz的设备在暴露于400kHz的流量时不会出现异常-从NACK到总线挂起的任何事情都是可能的。

您应该以100kHz运行整个总线,或者为慢速外设使用单独的低速总线。


3

其他选项。不用两条总线,您可以简单地使用一条额外的线(使用软件/ bitbanged I 2 C 更容易)。一条单独的时钟线或一条单独的数据线。或使用I 2 C缓冲器或I 2 C开关将单个100MHz芯片放在自己的网段上,而无需更改其他任何东西。

或者只是在一条总线上进行测试。100kHz芯片很可能会影响线路。它可能每4位读取一次,最终以为它已得到解决。但是它必须看到一个有效的开始条件,然后再读取接下来的32位中的第4位作为其确切地址,然后要么必须尝试读取接下来的几个字节作为有效信息以写入其寄存器,或尝试输出数据。我认为情况不太可能。最好的选择是将其简单地连接到测试电路中,然后将其检出。

需要注意两件事,如果这是一个单回路的电路,或者您只制造了几个电路,则很容易冒险或更改它。如果是批量生产的产品,您可能只想拥有第二辆公共汽车。另一个是,您必须考虑100kHz芯片只是按照原始的I 2 C规范生产的,并且可能很好地支持更高的时钟速度。只是没有经过更高频率400kHz规范的测试。


2

I2C总线的设计应满足以下条件:

  1. 当SCL出现下降沿时,可能导致从设备立即声明SDA,而没有任何特定的最小延迟;
  2. 上升沿和下降沿的相对顺序至关重要。

由于驱动器强度和线电容的差异,从理论上讲,一个设备可能会通过如此快地驱动SDA来响应SCL上稍慢的下降沿,以至于另一个设备首先看到SDA下降。

可能已经可以在SCL上定义多个逻辑阈值,并指定要在SCL上的下降沿被认为是在SDA上的边缘之后出现的,当检测到SDA上的沿时,它仍然必须高于VDD的2/3,但设备可能无法响应SCL的下降沿来断言SDA,直到它跌落到1/3 VDD以下为止,但是该规范并未以此术语编写。

相反,在SDA和SCL上看到接近同时下降沿的设备通常会认为SCL上的沿是最先发生的,除非在SDA上的沿大体上先于该沿。一些I2C实现通过将SCL和SDA同步到某个外部时钟并要求在SCL的下降沿之前两个周期观察到SDA的下降沿来处理该问题,以将其视为第一位。如果SCL和SDA上的操作速度相对于同步时钟而言太快,则设备可能会感知到SCL和SDA上的高低信号的任意序列;否则,设备可能会感知到任意信号。如果这些序列之一看起来像是在对慢速设备进行寻址,则它可能会做出相应的反应,从而挤压可能正在进行的任何其他通信。

没有特别的理由使I2C总线上的设备必须依赖于与系统时钟的同步(能够感知SCL上的两个离散阈值会更好),但事实是某些设备实际上以这种方式工作。请注意,即使内部仅限于低速运行的设备希望与快速总线共存,在任何可能感兴趣的事情发生时,它也可能至少必须采用时钟延长。

这将导致某些通信发生的速度比原先的速度慢,但是速度的下降可能不会像时钟同步设计所要求的那样严重(慢速设备延长时钟的实际数量可能不会如此之差,以至于必须降低时钟量以免在同步时钟单元中出现最坏情况的故障。

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.