i2c为什么不冲突
ESP32的I2C接口是一种串行同步半双工通信协议,可以与多种外围设备进行数据交换。ESP32有两个I2C控制器,可以设置为主机或从机模式,支持标准模式和快速模式,ESP32的I2C接口可以使用任意GPIO管脚作为SDA和SCL,并可以通过软件配置时钟速度、位序、时序等参数,ESP32的I2C接口提供了丰富的API函数,可以方便地进行驱动程序安装、参数配置、数据读写、中断处理等操作。

参数可配置,可以通过软件调整时钟速度、位序、时序等参数,适应不同的I2C设备。接口简单,只需要两条信号线就可以实现多设备的通信,节省硬件资源。速度适中,可以支持标准模式和快速模式,满足大多数外围设备的数据传输需求。ESP32的I2C接口的缺点有:速度有限,相比于SPI接口,I2C接口的速度较慢,不适合高速或大容量的数据传输。

区别:SPI:高速同步串行口。3~4线接口,收发独立、可同步进行UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢I2C:一种串行传输方式,三线制,网上可找到其通信协议和用法的3根线实现数据双向传输串行外围接口SerialperipheralinterfaceUART:通用异步收发器UART是用于控制计算机与串行设备的芯片。

作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。

通常来讲,Clock都是以占空比为50%来输出的,I2C协议的Clock也不例外,通常我们要调节它的工作频率,以便适应Slave端。I2C时钟高电平低电平的时间就是确定SCL的频率,外设频率要求在100KHz的话,就是通过改变I2C时钟的占空比,STM32才可以访问。I2C时钟高电平低电平的时间就是确定SCL的频率呀,你的外设频率要求在100KHz的话,就是通过改变I2C时钟的占空比,STM32才可以访问。

I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线;SMBus为系统和电源管理这样的任务提供了一条控制总线,使用SMBus的系统,设备之间发送和接收消息都是通过SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。所以它们的区别很明显了,一个是该总线上连接设备自身可以控制总线(I2C,速率较高),想干嘛就干嘛,另一个是设备之间可以通过它来传送信息,但是速率比较慢,比如用在检测各元件状态并更新硬件设置引脚等,同时廉价是它的优点。
两者区别如下:一、指代不同1、I2C:只需要两根线即可在连接于总线上的器件之间传送信息。2、SMBus:为系统和电源管理这样的任务提供了一条控制总线,使用SMBus的系统,设备之间发送和接收消息都是通过SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。