Anwar's Blog

【002】谈谈iic

11 Oct 2024
2024-10-27-【002】谈谈IIC

回顾自己以往嵌入式开发中用到的外设,IIC(Inter-Integrated Circuit)最为常用(INA219、MPU6050),梳理一下相关内容

简介

在使用IIC之前,我只了解UART这种通信模式。因为当时项目需要,购买很多传感器外设,其中包括IIC接口设备,方才对IIC接口有了概念。

  • 什么是IIC?

  • UART vs IIC?

    为什么都是两根线,用起来差距咋就这么大呢?

    众所周知,UART->异步、全双工、IIC->同步、半双工,两者底层即存在着很大区别。

©️图片来源: [WIKI]
  1. 传输速率来看,UART速率波特率一般为9600、115200bps,在实际应用中受软硬件限制,往往还达不到;IIC最高速率理论可以达到5Mbit/s,在实际应用中往往使用Sm\Fm这两种模式。

  2. 从可靠性来看,UART使用起始位、结束位标志定义数据;IIC使用同一时钟进行流控。

  3. 从多机来看,UART不支持多机通信;IIC支持多机通信,7位寻址模式下最多可支持128个从设备连接到同一跟B总线上。

  4. 从应用场景来看,二者均适用于短距离,低速外设通信。

✒️注:IIC多机通信环境比较复杂,受从设备与地之间寄生电容的影响,需要匹配上拉电阻防止信号失真

电路

IIC设备IO为开漏输出,这样的设计非常巧妙,有兴趣的可以看工科男孙老师相关系列视频。

✒️SCL时序由主机提供,SDA数据线双向传输

协议

📌空闲:SCL/SDA均为高电平。

📌开始:SCL高电平,SDA电平下降沿拉低。

📌结束:SCL高电平、SDA电平上升沿拉高。

📌应答:主机传输有效数据结束后,利用下一个脉冲采集SDA有无应答。

📌数据:SCL上升沿采集SDA数据,在SCL低电平时允许SDA数据发生变化且要一直保持到SCL再次变为低电平。

应用

关于INV公司MPU6050 DMP驱动移植到ESP系列上的代码我已经放到GitHub上,非常希望能得到您的宝贵建议。

📌有条件还是上逻辑分析仪吧

 

buy me a coffee