1、串口的缺点

STM32上串口通信接口少,而使用I2C则通信设备数量不受限制。
2、I2C总线的电路结构

SCL和SDA引脚结构:

**为什么所有的SCL和SDA引脚都设置为开漏输出:**是为了实现逻辑线与


当所有引脚都设置为开漏输出且每个SCL引脚都写1(写1的情况下每个引脚输出的是高阻抗,这样每个引脚就都从电路上断开了,那么中间的总线就悬空了),那么上拉电阻就会把总线拉到高电压。

当所有引脚都设置为开漏输出且除了从机2以外每个SCL引脚都写1(从机2写0表示输出低电压表示接地),那么总线就通过从机2接地,被拉到了低电压。
通信流程1(主机向从机1发送信息为例):
(1)主机发送从机1的地址与从机1建立通信。
(2)之后便可以向从机1发送消息。
通信流程2(从机2向主机发送信息为例):
(1)主机发送从机2的地址与从机2建立通信。
(2)之后从机2便可以向主机发送消息。
3、主机如何发送时钟信号
主机想要发送1时就往SCL(因为是时钟信号)发送1,这样SCL总线悬空就会被上拉电阻拉到高电平
主机想要发送0时就往SCL发送0,这样SCL总线就通过主机接地被拉到了低电平
4、主机如何发送数据
主机想要发送1时就往SDA(因为是数据)发送1,这样SDA总线悬空就会被上拉电阻拉到高电平
主机想要发送0时就往SDA发送0,这样SDA总线就通过主机接地被拉到了低电平
5、从机如何发送数据
从机想要发送1时就往SDA(因为是数据)发送1,这样SDA总线悬空就会被上拉电阻拉到高电平
从机想要发送0时就往SDA发送0,这样SDA总线就通过主机接地被拉到了低电平