Clock Stretch Mode时钟延长模式:
时钟延长是一个术语,某些从设备可以把时钟线拉低,主设备发现自己释放时钟线之后时钟线还没有变成高电平,就会停止发送数据,然后等待从设备释放时钟线。通过这种方式从设备可以告诉主设备你慢点发,我这边还得准备准备(比如从机有个其他中断要处理),这在从机速率比主机低的时候会有用,stm32会默认开启时钟延长模式[Clock No Stretch Mode=disbale](这里的disable和No双重否定等于肯定),不过大多数IIC设备没有时钟延长的设定.
会导致什么问题呢?就是以STM32 MCU作为从设备时,从设备会出现ACK延时的情况,原因就是从机会主动拉低SCL不释放,一直到从机处理完它的工作再释放,主机才能发送第9各时钟,从机才真正发出ACK, 波形上就是ACK信号延迟。