上图是IIC总线协议对于Clock Stretching的定义,简单理解:
IIC总线的时钟延展(Clock Stretching)指的是,IIC总线上的从机在接收主机数据时,从设备因为处理数据或其他原因而无法及时响应主设备的时钟信号,此时从设备可以通过拉低SCL时钟暂停主机的时钟信号,以便从机可以处理数据,一旦从机准备好继续处理数据时,便会释放SCL时钟,这种暂停时钟的行为被称为时钟延展(Clock Stretching),这也是IIC总线上,从机唯一有权限控制SCL的时候。
一般来说当主机是CPU或者MCU时,从机是传感器、处理器等需要将一些运算结果返回给主机的设备时,可能会出现从机正在处理数据而无法响应主机的命令,所以会拉低SCL,等数据处理完毕后再释放SCL。