为什么 I2C 需要时钟延展

why is clock stretching required in I2C

Clock stretching 用于在 I2C 中减慢 master。如果 Slave 设备是 I2C Based,那么这意味着它可以根据标准工作在 100KHZ。

我的疑惑是,当主从时钟已经是100KHz时,还需要什么时钟延展?

请为此提供示例..

时钟延展的需要,因为从站可能无法从主站接收或从站需要额外的时间来处理接收到的数据。

许多从属设备是低成本设备,没有良好的缓冲系统,需要长时间读取慢速内存并使用时钟延展来防止溢出。

这是一个廉价的速度控制系统(与更复杂的异步连接相比),安全且简单。

它也作为一些低成本设备 CPU 在处理繁忙任务时不能在 I2C 上工作,例如传感器可能需要中断并保持时钟线低,传感器内部工作完成后,传感器将变高并以正常速度发送数据。

参考:http://cache.freescale.com/files/sensors/doc/app_note/AN4481.pdf 第 12 页