STM8的I2C接口是实现片间通信的关键外设,通过双线制总线实现主从设备数据交互。本文从物理层、寄存器、时序、中断、拓扑、诊断六大维度,提供具体配置框架。

一、物理层基础
引脚定义
SCL(时钟线):输出方波,频率由主设备控制
SDA(数据线):双向传输,高电平表示空闲
上拉电阻
典型值:4.7kΩ(标准模式) / 2.2kΩ(快速模式)
二、寄存器架构
控制寄存器(I2C_CR1/CR2)
PE位:使能I2C模块
START位:触发起始条件
ACK位:控制应答信号
状态寄存器(I2C_SR1/SR2)
SB位:起始条件已发送
ADDR位:地址匹配完成
BTF位:字节传输完成
三、工作模式配置
主设备模式
频率设置:通过I2C_CR2的FREQ位配置时钟分频
地址广播:7位地址+读写位(0x00-0xFE)
从设备模式
地址屏蔽:I2C_OAR寄存器配置自身地址
广播响应:I2C_CR1的ENGC位使能广播地址识别
四、时序规范
起始/停止条件
SCL高电平期间,SDA产生下降沿(起始)或上升沿(停止)
数据有效性
SDA在SCL低电平时改变,高电平时保持稳定
应答机制
接收方在第9个时钟周期拉低SDA表示应答(ACK)
五、中断机制
关键中断事件
EV5:起始条件已发送(I2C_SR1的SB位)
EV6:地址匹配(ADDR位)
EV8_2:字节传输完成(BTF位)
中断使能步骤
配置I2C_IER寄存器的TXIE/RXIE位
NVIC中启用I2C中断通道
六、多设备拓扑
地址分配
7位地址模式:支持127个设备(0x00-0x7F保留)
10位地址模式:通过头字节(0xF0-0xF7)扩展
总线仲裁
主设备在SCL低电平时检测冲突,高电平时保持SDA状态
七、故障诊断要点
常见错误类型
AF位(应答失败):从设备无响应
ARLO位(仲裁丢失):多主竞争失败
BERR位(总线错误):时序违反
恢复策略
软件复位:通过I2C_CR2的SWRST位重置模块
硬件重启:发送停止条件后重新初始化
本文凡亿教育原创文章,转载请注明来源!
暂无评论