[开发资料] I2C 状态码

[复制链接]
1213|7
 楼主| forgot 发表于 2024-6-25 17:06 | 显示全部楼层 |阅读模式
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 阶段或者发送数据阶段丢失仲裁


 楼主| forgot 发表于 2024-6-25 17:07 | 显示全部楼层
主机接收模式
08H 已发送起始信号
10H 已发送重复起始信号
38H 主机在发送 SLA+R 阶段或者回应 NACK 阶段丢失仲裁
40H 已发送 SLA+R,已接收 ACK
48H 已发送 SLA+R,已接收 NACK
50H 已接收数据字节,ACK 已返回
58H 已接收数据字节,NACK 已返回
 楼主| forgot 发表于 2024-6-25 17:07 | 显示全部楼层
从机接收模式
60H 已接收自身的 SLA+W,已返回 ACK
68H 当主机时在 SLA+ 读写阶段丢失仲裁,已接收自身的 SLA+W,已返回 ACK
80H 前一次寻址使用自身从地址,已接收数据字节,已返回 ACK
88H 前一次寻址使用自身从地址,已接收数据字节,已返回 NACK
A0H 已寻址从机等待接收数据时,接收到停止条件或重复起始条件
 楼主| forgot 发表于 2024-6-25 17:07 | 显示全部楼层
从机发送模式
A8H 已接收自身的 SLA+R,已返回 ACK
B0H 当主机时在 SLA+ 读写阶段丢失仲裁,已接收自身 SLA+R,已返回 ACK
B8H 已发送数据字节,已接收 ACK
C0H 已发送数据字节,已接收 NACK
C8H 从机最后一个数据字节已被发送,并已接收 ACK
 楼主| forgot 发表于 2024-6-25 17:07 | 显示全部楼层
广播接收模式
70H 已接收广播地址(0x00),已返回 ACK
78H 当主机时在 SLA+ 读写阶段丢失仲裁,已接收广播地址,已返回 ACK
90H 前一次寻址使用广播地址,已接收数据字节,已返回 ACK
98H 前一次寻址使用广播地址,已接收数据字节,已返回 NACK
A0H 已寻址从机等待接收数据时,接收到停止条件或重复起始条件
 楼主| forgot 发表于 2024-6-25 17:08 | 显示全部楼层
其它模式
F8H 无可用的相关状态信息,I2Cx_CR.SI=0
00H 传输过程出现总线错误,或外部干扰使 I2C 进入未定义的状态
szt1993 发表于 2024-7-22 13:36 | 显示全部楼层
IIC一般主从模式比较常用
jf101 发表于 2024-7-22 14:43 | 显示全部楼层
IIC的相关案例程序能分享一下嘛?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2115

主题

14686

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部