STM32之I2C硬件外设

在这里插入图片描述
在这里插入图片描述
注意:硬件I2C的引脚是固定的
SDA和SCL都是复用到外部引脚。
SDA发送时数据寄存器的数据在数据移位寄存器空闲的状态下进入数据移位寄存器,此时会置状态寄存器的TXE为1,表示发送寄存器为空,然后往数据控制寄存器中一位一位的移送数据。接收时数据控制寄存器中的数据一位一位的从引脚移位到数据移位寄存器中,当一个数据以为完成后就从数据移位寄存器中转移到数据寄存器,同时置RXNE表示接收寄存器非空。自身地址寄存器时STM32作为从机时的地址,比较器会比较主机的发出的地址与自身地址是否匹配,如果匹配就响应主机的召唤。STM32支持同时响应两个主机的召唤,所以有双低地址寄存器。PEC是用来数据校验的模块,执行CRC数据校算。

SCL的时钟控制是用来控制SCL的,时钟控制寄存器写对应的位,电路就会启用对应的功能,控制逻辑电路写入控制寄存器可以对电路进行控制,读取状态寄存器,可以读取电路的状态。
在这里插入图片描述
注意:使用I2C的时候,两个GPIO口都要配置成复用开漏输出的模式。此时是片上外设控制引脚电平。在这里插入图片描述
图中线路对应SDA的GPIO的连个箭头。分别对应输出和输入。

硬件I2C的操作流程:

在这里插入图片描述
7位主发送:
1.产生开始条件
2.EV5标志位,表示起始条件已发送,发送从机地址,然后等待从机应答A,如果没有应答就会产生中断
3.EV6事件:表示地址发送结束
4.EV8_1事件:准备好发送
5.EV8事件:表示可以写入下一个数据
6.EV8_2:表示数据发送完,可以产生终止条件在这里插入图片描述
7位主接收:
1.EV5:起始条件已经发送
2.寻址接收应答A
3.EV6:代表寻址已完成
4.EV6_1:表示数据正在移位
5.EV7:表示收到一个字节的数据
6.EV7_1:表示想要结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值