关于STM32H503 I2C接收NACK时自动发送STOP的疑问
关于STM32 I2C发送器提前收到NACK时自动发送STOP的触发条件
根据RM0492 Rev3手册第1185页的I2C发送器相关描述:
当RELOAD=0且NBYTES[7:0]定义的数据字节数传输完成时,自动结束模式(AUTOEND=1)会自动发送STOP;软件结束模式(AUTOEND=0)会置位TC标志并拉低SCL线。此外还提到,当接收到NACK时,TXIS标志不会置位,会自动发送STOP条件,I2C_ISR寄存器的NACKF标志置位,若NACKIE位已置位则会产生中断。
针对疑问的明确结论:
- 提前收到NACK时,无论AUTOEND配置为1还是0,I2C控制器都会自动发送STOP条件。
- 这是I2C硬件的固定响应逻辑,不受AUTOEND模式影响:只要发送过程中收到从机返回的NACK,控制器会立即终止传输,自动生成STOP,同时置位
NACKF标志(若开启NACKIE则触发中断),且不会置位TXIS标志。 - 仅在正常完成NBYTES定义的字节传输时,AUTOEND的配置才会影响后续行为:AUTOEND=1自动发STOP,AUTOEND=0则置位TC并拉低SCL等待软件处理。
内容的提问来源于stack exchange,提问作者fbbf
相关产品推荐
相关产品推荐

