I2C总线的设计应满足以下条件:
- 当SCL出现下降沿时,可能导致从设备立即声明SDA,而没有任何特定的最小延迟;
- 上升沿和下降沿的相对顺序至关重要。
由于驱动器强度和线电容的差异,从理论上讲,一个设备可能会通过如此快地驱动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上的两个离散阈值会更好),但事实是某些设备实际上以这种方式工作。请注意,即使内部仅限于低速运行的设备希望与快速总线共存,在任何可能感兴趣的事情发生时,它也可能至少必须采用时钟延长。
这将导致某些通信发生的速度比原先的速度慢,但是速度的下降可能不会像时钟同步设计所要求的那样严重(慢速设备延长时钟的实际数量可能不会如此之差,以至于必须降低时钟量以免在同步时钟单元中出现最坏情况的故障。