先确认时钟延展是否真的发生:用逻辑分析仪抓SCL,看从机在ADDR/TXE/RXNE等事件后是否拉低SCL超过主机超时阈值。常见根因有三类:1) 从机中断优先级过低或被长临界区阻塞,导致TXE/RXNE未及时响应而硬件自动拉低SCL;2) 从机在ADDR匹配后未及时写DR(发送方向)或读DR(接收方向),STM32 I2C外设会保持SCL低;3) 主机侧超时设置过短(如HAL的I2C_TIMEOUT仅几ms)。规避建议:把I2C从机中断设为较高优先级,缩短临界区,避免在中断中做耗时操作;发送方向提前把数据写入DR或使用DMA;接收方向保证每字节及时读走;主机侧适当增大超时并实现总线恢复(9个时钟脉冲+STOP)。若主机不支持时钟延展,则从机侧必须保证响应延迟小于主机超时,必要时改用软件模拟从机或降低速率。