目录
I2C外设简介
- 可变多主机模型
- 11110作为10位地址模式的标志位,后面跟着的8位位地址位
I2C功能框图
一、SDA和SCL借用GPIO的复用模式与外部相连
二、一个字节的数据写入DR,在数据移位寄存器没有数据移位时,DR的值转入移位寄存器,在其移位过程中,下一个数据就可以在DR中等待,移位完成立即接上,当R的值转入移位寄存器时,置状态寄存器的TXE位为1,表示发送寄存器为空
三、接收时,数据由SDA一位一位的移入移位数据寄存器,收齐之后,整体转入DR,置标志位RXNE为1,表示接收寄存器非空
四、STM32为 可变多主机模型,在作为从机时,支持同时响应两个从机地址,所以有自身和双地址寄存器
基本结构图(一主多从)
I2C高位先行,移位寄存器是左移的
GPIO配置为复用开漏输出模式
GPIO复用输入输出图
主机发送![](https://i-blog.csdnimg.cn/direct/41fe67330489402a8af555f8f7578b7d.png)
STM32默认为从模式
7位主发送流程:起始、从机地址、应答、数据1、应答、数据2、应答、……、停止
EV8_1时,移位寄存器空,DR空,写入DR,
EV8时,数据由DR转入移位寄存器,此时DR空,移位寄存器非空,继续写入数据在DR中EV8状态消失,随后数据由DR转入移位寄存器,此时DR空,移位寄存器非空………………直到所有想要的数据发送完毕,EV8_2,移位寄存器空,BTF字节发送结束,随后STOP。
START
写1产生起始条件
stop ![](https://i-blog.csdnimg.cn/direct/d699110aa19745d388e4dc977029fc14.png)
EV5 (标志位)
SB为1,表示起始条件已发送
BTF
主机接收
起始,EV5(起始条件已发送),寻址,接收应答,EV6(寻址已完成),数据1(代表数据正在通过移位寄存器进行输入),EV6_1(数据还在移位,没有标志位),数据1传输完成时,A响应,此时移位寄存器已经转入一个字节的数据1,将数据1的一个字节整体转入数据寄存器DR中(EV7:置RXNE,表示DR非空),重复此过程接收数据,当不在需要接收数据时,EV7_1:将ACK置0,和STOP请求
ACK
软件/硬件波形对比
软件时序的时钟周期、占空比不如硬件规整(不影响效果)