在时钟延长中,如果从机将时钟线保持为低电平,则主机应等待对线路上的任何 ACK 作出结论。既然从机可以随时释放时钟信号,如果从机释放时钟,例如主时钟周期的 3/4,我们如何解释 SDA 线的值?让我用一个例子来说明
- 考虑一个具有 100 kHz 时钟速率(10 us 周期)的 I2C 主机。
- 当主机在发送时,SCL 上每 5us 有一个上升沿。
- 在 ACK 周期内,假设从机在 ACK 周期的前 7.5us 内将 SCL 线保持为低电平
- 在 7.5 us 假设从机在发送 SDA 低电平时释放 SCL。
- 在这种情况下,SCL 线将在 2.5 us 之前处于高位,然后再次走低,然后继续其 10 us 周期。
- 此外,假设从机随后允许 SDA 在 SCL 的下一个上升沿之前变为高电平(即,它将 SDA 保持在低电平的时间少于 7.5 us)
- SCL 的哪个上升沿指示有效的 SDA 值?
- 它是第一个上升沿(SCL 仅保持高电平 2.5 us)吗?
- 或者它是作为完整 SCL 时钟周期一部分的第二个上升沿(5 us 低,然后是 5 us 高)?