I2C 总线状态通过 I2C 状态寄存器 I2Cx_STAT 来标识,共 26 个正常接收或发送状态,和 2 个特殊状态(0xF8:I2C总线无可用信息;0x00:总线错误)。
I2C无论处于主机发送、主机接收、从机接收、从机发送或广播接收模式,当状态寄存器I2Cx_STAT的内容改变时,都会将 I2Cx_CR.SI 置位,且产生 I2C 中断。
I2C 状态码如下表所示:
主机发送模式:
08H 已发送起始信号
10H 已发送重复起始信号
18H 已发送 SLA+W,已接收 ACK
20H 已发送 SLA+W,已接收 NACK
28H 已发送 I2Cx_DR 中的数据,已接收 ACK
30H 已发送 I2Cx_DR 中的数据,已接收 NACK
38H 主机在发送 SLA+W 阶段或者发送数据阶段丢失仲裁
|