当前位置: 首页 > news >正文

嵌入式笔记系列——IIC

二、I²C(Inter-Integrated Circuit)

I²C 是一种同步、串行、半双工通信协议,由 Philips(现为 NXP)提出,广泛应用于芯片间短距离通信,如 MCU 与传感器、EEPROM、RTC、显示屏等模块的连接。


1. 物理连接

  • 仅需两根线

    • SCL(Serial Clock):时钟线,由主设备控制
    • SDA(Serial Data):数据线,双向传输
  • 开漏输出结构

    • 必须外接上拉电阻(常见:4.7kΩ,取决于总线电容和速率)
    • 支持“线与”逻辑,便于多主仲裁
  • 多主多从架构

    • 支持多个主设备(需仲裁机制)

    • 每个从设备有唯一 7 位地址(也有 10 位扩展地址)

在这里插入图片描述

  • IIC的高阻态

    • 高阻态的作用 :当设备处于高阻态时,它对总线的影响就像一个高电阻,几乎不从总线汲取电流,也不会向总线输出电流。这种状态允许其他设备独占总线进行通信,是总线能够实现多主多从、分时通信的关键所在。

    • 高阻态的实现 :I²C 总线的 SDA 和 SCL 引脚一般采用开漏输出结构,在这种结构下,输出端可以通过晶体管的导通将总线拉低至低电平(逻辑 0),但无法直接将总线拉高至高电平(逻辑 1)。总线的高电平由外部的上拉电阻实现。当设备不进行数据发送或接收操作时,它会释放总线,使其处于高阻态,以便其他设备可以使用总线进行通信。

在这里插入图片描述


2. 数据帧格式(Frame Structure)

字段位数电平说明
起始位1 bitSDA↓SCL↑表示通信开始
地址位7 bits0/1从机地址
读写位1 bit0/10:写,1:读
ACK1 bit0/1接收方拉低表示应答
数据位8 bits0/1实际传输数据(高位在前)
停止位1 bitSDA↑SCL↑表示通信结束

典型写操作帧结构:

[S] [7位地址+W] [ACK] [数据1] [ACK] [数据2] [ACK] ... [P]

典型读操作帧结构:

[S] [7位地址+W] [ACK] [寄存器地址] [ACK] 
[Sr] [7位地址+R] [ACK] [数据1] [ACK] [数据2] [NACK] [P]

3. 时序与速率

  • 同步通信:由主设备提供时钟(SCL),数据在 SCL 高电平时必须稳定,低电平时可变化

  • 速率等级

    模式速率备注
    标准模式100 kbps最常见
    快速模式400 kbps支持更大总线电容
    高速模式3.4 Mbps需特殊驱动
    超高速模式5 Mbps单向传输,非标准

在这里插入图片描述

4. 配置参数(通信前必须约定)

参数说明
从机地址7 位或 10 位,必须唯一
速率标准/快速/高速,主从必须一致
上拉电阻通常 2.2kΩ~4.7kΩ,取决于总线长度
总线电容最大 400pF(标准模式)

5. 通信流程(以读取传感器为例)

✅ 写一个字节:

  1. 主机发送 起始条件
  2. 发送 从机地址 + 写位
  3. 从机 ACK
  4. 发送 寄存器地址
  5. 从机 ACK
  6. 发送 数据字节
  7. 从机 ACK
  8. 主机发送 停止条件

✅ 读一个字节:

  1. 主机发送 起始条件
  2. 发送 从机地址 + 写位
  3. 从机 ACK
  4. 发送 寄存器地址
  5. 从机 ACK
  6. 重复起始条件(Sr)
  7. 发送 从机地址 + 读位
  8. 从机 ACK
  9. 从机发送 数据字节
  10. 主机发送 NACK(表示不继续读)
  11. 主机发送 停止条件

6. 优缺点

优点缺点
接线简单,仅两根线速率不如 SPI 高
支持多主多从,组网灵活总线电容限制距离(<1米高速,<10米低速)
硬件实现简单,成本低需处理地址冲突、仲裁、挂死等问题
有 ACK 机制,可靠性高半双工,不能同时收发

7. 实际应用示例

  • MCU ↔ 温度传感器(如 TMP102、LM75)
  • MCU ↔ EEPROM(如 AT24C02)
  • MCU ↔ OLED 屏(SSD1306)
  • MCU ↔ RTC 时钟模块(如 DS3231)

8. 调试技巧(实战)

问题现象可能原因排查方法
无 ACK 响应地址错误、从机未上电、总线挂死用逻辑分析仪查看地址是否正确
总线挂死从机拉低 SDA 未释放主机发送 9 个时钟脉冲释放总线
数据错乱上拉电阻太小、总线电容过大减小速率、缩短总线、更换电阻
读写失败寄存器地址格式错误查阅 datasheet,确认是否为 8 位地址

9. 与 SPI、UART 对比(面试常问)

特性I²CSPIUART
线数2 根(SCL+SDA)4 根(MOSI+MISO+SCK+CS)2 根(TX+RX)
通信方式半双工全双工全双工
速率最高 3.4 Mbps可达 50 Mbps+常见 115200 bps
寻址方式地址位寻址片选引脚(CS)无寻址,点对点
多设备支持多主多从一主多从点对点
复杂度中等(需处理仲裁)简单(硬件控制)简单

10. 小结(一句话记忆)

I²C 是一种双线、同步、半双工的串行总线协议,支持多主多从,通过地址寻址和 ACK 机制实现可靠通信,广泛应用于芯片间短距离通信。


http://www.dtcms.com/a/566755.html

相关文章:

  • 网站维护一年一般多少钱视频链接生成器
  • wordpress网站好用吗专业的营销型网站定制
  • 离线推广网站规划书电子商务网站开发相关技术
  • 直接保存pandas DataFrame的内容到Excel文件中
  • excel T检测时[检验类型]参数设置的方法
  • 网站尾部做淘宝客可以有高佣金的网站
  • 成都网站建设四川推来客网络石家庄+外贸网站建设公司
  • 网站开发人员岗位wordpress调查插件
  • Python判断语句
  • 网站如何做微信登录网站顶部代码
  • 织梦网站首页模板路径广告平面设计好学吗
  • app开发网站开发成都较出名的广告公司
  • 可以直接打开网站的方法运城网站推广
  • 站内推广有哪些方式云南测绘公司最新排名
  • 常州便宜的做网站服务seo渠道
  • Linux基础常用命令
  • 西安网站建设产品浙江省建设信息港官网首页
  • VirtualBox 搭建 ubuntu
  • 东台网站建设服务商驾校报名网站怎么做
  • 美团开源啦,源码地址+部署脚本,全模态实时交互
  • SFT 和 RL 融合:CHROD, LUFFY,UFT
  • 教育学校网站源码 php2018做网站的视频
  • 瀑布流 网站 php 源码wordpress 手机 主题
  • 制作化妆品网站阜阳网页
  • 做g3云推广需要网站网页制作平台播放视频
  • 如何解决 pip install 安装报错 不能在虚拟环境中执行 --user 安装 问题
  • 外贸网站模板外贸网站建设厦门旅游网站设计
  • 长沙网站seo源头厂家网站建设维护公司地址
  • Unity颜色曲线ColorCurves
  • 深度学习(10)模型评估、训练与选择