32-I2C协议通信

在STM32中,可以使用硬件I2C和软件I2C来实现I2C通信。它们之间的区别如下:
硬件I2C:
1. 使用STM32芯片内部的硬件模块来实现I2C通信,通常是通过专门的I2C外设来实现。
2. 硬件I2C具有更高的性能和稳定性,因为它直接由硬件模块来控制,不需要CPU的干预。
3. 在一些高速通信或者对时序要求较高的应用中,硬件I2C通常是更好的选择。
软件I2C:
1. 使用GPIO引脚模拟I2C通信协议,通过软件来控制GPIO引脚的状态来实现I2C通信。
2. 软件I2C的实现通常是基于延时和CPU的轮询来模拟I2C通信协议,因此在性能上通常不如硬件I2C。
3. 软件I2C通常用于资源有限的系统,或者在一些低速通信或对时序要求不高的应用中。
使用硬件I2C时,只能使用系统规定的特定I2C复用引脚。比如STM32F103C8T6中,规定PB6、PB7为I2C外设1即I2C1的SCL和SDA线。
一主多从模式
多主机模式:固定多主机、可变多主机
固定多主机:几个主机几个从机
可变多主机:没有固定哪个必须是主机或从机,在一时刻,一个可以跳出来作为主机
I2C外设的结构

发送时,数据先写入数据寄存器DR,若移位寄存器没有数据,再转到移位寄存器中进行发送。当数据由数据寄存器转移到移位寄存器时,就会置状态寄存器的TXE位为1。数据寄存器DR空,移位寄存器非空,此时就可以写入下一个数据。 接受时,数据一位一位的进入移位寄存器中,当够一个字节时,将数据整体转移到数据寄存器中,置标志位RXNE

浙公网安备 33010602011771号