00. 目录
文章目录
01. I2C简介
I2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与 SMBus 2.0 兼容。
它可以用于多种用途,包括 CRC 生成和验证、SMBus(系统管理总线)以及 PMBus(电源管理总线)。
根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。
02. I2C主要特性
并行总线/I 2 C 协议转换器
● 多主模式功能:同一接口既可用作主模式也可用作从模式
● I 2 C 主模式特性:
— 时钟生成
— 起始位和停止位生成
● I 2 C 从模式特性:
— 可编程 I 2 C 地址检测
— 双寻址模式,可对 2 个从地址应答
— 停止位检测
● 7 位/10 位寻址以及广播呼叫的生成和检测
● 支持不同的通信速度:
— 标准速度(高达 100 kHz)
— 快速速度(高达 400 kHz)
● 适用于 STM32F42xxx 和 STM32F43xxx 的可编程数字噪声滤波器
● 状态标志:
— 发送/接收模式标志
— 字节传输结束标志
— I 2 C 忙碌标志
● 错误标志:
— 主模式下的仲裁丢失情况
— 地址/数据传输完成后的应答失败
— 检测误放的起始位和停止位
— 禁止时钟延长后出现的上溢/下溢
● 2 个中断向量:
— 一个中断由成功的地址/数据字节传输事件触发
— 一个中断由错误状态触发
● 可选的时钟延长
● 带 DMA 功能的 1 字节缓冲
● 可配置的 PEC(数据包错误校验)生成或验证:
— 在 Tx 模式下,可将 PEC 值作为最后一个字节进行传送
— 针对最后接收字节的 PEC 错误校验
● SMBus 2.0 兼容性:
— 25 ms 时钟低电平超时延迟
— 10 ms 主器件累计时钟低电平延长时间
— 25 ms 从器件累计时钟低电平延长时间
— 具有 ACK 控制的硬件 PEC 生成/验证
— 支持地址解析协议 (ARP)
● PMBus 兼容性
03. I2C功能说明
除了接收和发送数据之外,此接口还可以从串行格式转换为并行格式,反之亦然。中断由软件使能或禁止。该接口通过数据引脚 (SDA) 和时钟引脚 (SCL) 连接到 I 2 C 总线。它可以连接到标准(高达 100 kHz)或快速(高达 400 kHz)I 2 C 总线。
模式选择
该接口在工作时可选用以下四种模式之一:
● 从发送器
● 从接收器
● 主发送器
● 主接收器
默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式,并在出现仲裁丢失或生成停止位时从主模式切换为从模式,从而实现多主模式功能。
IIC框图
04. I2C中断
05. I2C相关寄存器
5.1 I2C 控制寄存器 1 (I2C_CR1)
I2C Control register 1
偏移地址:0x00
复位值:0x0000
5.2 I2C 控制寄存器 2 (I2C_CR2)
I2C Control register 2
偏移地址:0x04
复位值:0x0000
5.3 I2C 自有地址寄存器 1 (I2C_OAR1)
I2C Own address register 1
偏移地址:0x08
复位值:0x0000
5.4 I2C 自有地址寄存器 2 (I2C_OAR2)
I2C Own address register 2
偏移地址:0x0C
复位值:0x0000
5.5 I2C 数据寄存器 (I2C_DR)
I2C Data register
偏移地址:0x10
复位值:0x0000
5.6 I2C 状态寄存器 1 (I2C_SR1)
I2C Status register 1
偏移地址:0x14
复位值:0x0000
5.7 I2C 状态寄存器 2 (I2C_SR2)
I2C Status register 2
偏移地址:0x18
复位值:0x0000
5.8 I2C 时钟控制寄存器 (I2C_CCR)
I2C Clock control register
偏移地址:0x1C
复位值:0x0000
06. 附录
6.1 【STM32】STM32系列教程汇总