STM32 的7 位寻址主机模式 一、 各寄存器内容与组织:控制、地址匹配、数据、状态、时钟控制、上升沿控制 二、 IIC 协议及 STM32 的 master 实现 EVENT 后的第一个符号表示事件发生后对应的标志位的状态,着重看 7 位地址的通信; 三、 基础知识(主要讨论起主机模式,从机模式的配置与使用可类比) 1
默认工作在从机模式,产生起始信号后自动转为主机模式,产生终止信号或仲裁失权后自动转为从机模式;起止信号由主机模式下的软件实现,地址也只能由主机发送,响应信号由接收器发出(软件实现),要注意区别主机、从机、发送机、接收机; 2
数据通信的直接通道,SDA Line ↔ Shift Register ↔ DR ↔ Memory(数据寄存器与存储器直接的数据交换发生在 DMA 模式,另外若从机在 SDA 接收到的是地址则直接会与地址寄存器比较,而不会送入数据寄存器) 3
主机产生时钟信号,一串数据总是以起始于 start 信号,终止于 stop 信号,一旦 SDA 线上产生 start 位信号,主机模式便被选中;9 个寄存器的功能分配简单明了:I2C_CR2 主要配置时钟与模块中断及 DMA 使能位,I2C_CR1 则主要产生 Start 等控制信号,I2C_SR2 主要是 MSL、TRA 和 BUSY 标志位,I2C_SR1 则是其他事件的标志位,接下来就是存储数据的 I2C_DR,时钟设置的 I2C_CC4R 和 I2C_TRISE,地址匹配的 I2C_OAR1 和 I2C_OAR2; 4
主机模式必要操作序列:外围时钟输入最少2M(标准模式)、4M(快速模式) 1) 配置 I2C_CR2 寄存器以产生正确时序; 2) 配置时钟控制寄存器 I2C_CCR; 3) 配置上升时间寄存器 I2C_TRISE; 4) 配置 I2C_CR1 寄存器以使能接口