news 2026/4/25 0:54:10

I2C总线协议详细介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
I2C总线协议详细介绍

I2C(Inter-Integrated Circuit,内部集成电路)总线是一种由飞利浦半导体公司(现NXP)在20世纪80年代设计的简单、高效的双线制串行通信总线。它被广泛用于微控制器与各种外设(如传感器、存储器、数模转换器等)之间的短距离通信。

  • Inter-:之间、内部(更准确地说是“内部互联”的意思)

  • Integrated Circuit:集成电路

  • Circuit:电路

完整的Inter-Integrated Circuit意为“内部集成电路互联”,也就是芯片与芯片之间在同一块电路板上进行通信的协议,这也正是 I²C 总线得名的由来。

🔌 物理层与电气特性

I2C总线仅使用两条双向信号线即可实现多设备通信,极大地节省了PCB的布线空间和芯片引脚。

  • 两条信号线

    • SDA(串行数据线):用于在主设备(Master)和从设备(Slave)之间传输数据。

    • SCL(串行时钟线):由主设备产生的时钟信号,用于同步数据传输。

  • 工作模式:I2C是一种半双工通信总线,意味着在同一时刻,数据只能在SDA线上单向传输。

  • 开漏输出与上拉电阻:SDA和SCL线均采用开漏输出结构。这意味着线路本身只能将电平拉低,而无法主动输出高电平。因此,两条线必须通过上拉电阻(Rp)连接到正电源(VDD),以保证在空闲状态时保持高电平。上拉电阻的阻值选择很重要,阻值过大影响信号上升时间,过小则功耗过大。

  • 逻辑电平:逻辑"0"通过将线路拉低至接地来实现,逻辑"1"则通过释放线路使其浮空至高电平(由上拉电阻拉高)来实现。I2C支持不同的电源电压,如5V、3.3V或1.8V。

  • 设备寻址:总线上的每个从设备都有一个唯一的7位或10位地址。主设备通过发送目标地址来选择通信对象,无需额外的片选信号线。

⚙️ 协议层与通信时序

I2C通信由主设备发起和终止,遵循一套严格的时序规则。

1. 起始与停止条件
这是所有I2C通信的起始和终止标志:

  • 起始条件:当SCL为高电平时,SDA线从高电平向低电平切换(下降沿)。总线被标记为"忙"。

  • 停止条件:当SCL为高电平时,SDA线从低电平向高电平切换(上升沿)。总线被释放,重新回到"空闲"状态。

  • 重复起始条件:在主设备不释放总线控制权的情况下,发起另一次起始条件,用于改变数据传输方向或寻址另一个从设备。

2. 数据有效性
在SCL为高电平期间,SDA线上的数据必须保持稳定。只有当SCL为低电平时,SDA线的电平状态才能改变。唯一的例外是起始和停止条件。

3. 字节格式与应答机制

  • 数据传输:数据以字节(8位)为单位传输,首先传输最高有效位(MSB)。每次传输的字节数没有限制。

  • 应答位:每个字节传输完成后(即第9个SCL时钟周期),发送方会释放SDA线,由接收方控制。接收方需将SDA线拉低以产生一个应答位,表示"ACK";若SDA保持高电平,则为非应答,表示"NACK"。

    • ACK:接收器在第9个时钟周期将SDA拉低,表示成功收到一个字节。

    • NACK:接收器在第9个时钟周期释放SDA(保持高电平)。可能原因包括:总线上无对应地址的设备、接收器忙无法接收数据、或主设备作为读取方时,在读完最后一个字节后发出NACK以通知从设备停止发送。

4. 典型的数据传输流程
完整的一次写/读操作遵循以下步骤:

  • 写数据流程

    1. 主设备发送起始条件。

    2. 主设备发送7位从设备地址 + 1位写标志位(0)。

    3. 被寻址的从设备返回ACK。

    4. 主设备发送8位数据(如寄存器地址或实际数据),从设备每接收一个字节便返回一个ACK。

    5. 主设备发送停止条件,结束通信。

  • 读数据流程(随机读):

    1. 主设备发送起始条件。

    2. 主设备发送从设备地址 +写标志位(0),从设备ACK。

    3. 主设备发送要读取的寄存器地址,从设备ACK。

    4. 主设备再次发送重复起始条件

    5. 主设备发送从设备地址 +读标志位(1),从设备ACK。

    6. 从设备向主设备发送数据。主设备为每个收到的字节返回ACK,但在接收最后一个字节后返回NACK。

    7. 主设备发送停止条件,结束通信。

📊 传输速率与模式

I2C协议经过多年发展,定义了多种速率模式以适应不同需求,所有模式均向下兼容。

模式传输速率主要特点
标准模式100 kbit/s最基础的模式,最初定义
快速模式400 kbit/s1992年引入,大幅提升速度
快速模式+1 Mbit/s2007年引入,用于需要更高速率的设备
高速模式3.4 Mbit/s1998年引入,需要特殊的时序和电平
超快速模式5 Mbit/s2012年引入,为单向、无ACK的高速传输设计

💡 高级特性与应用

  • 多主模式与仲裁:I2C支持多个主设备连接在同一条总线上。当两个主设备同时发起通信时,会通过"线逻辑与"进行仲裁:一个主设备发送"1"而另一个发送"0"时,发送"0"的设备会将SDA线拉低,发送"1"的设备检测到SDA并非高电平,就会退出竞争。此机制保证了数据传输不丢失。

  • 时钟延展:当从设备处理速度跟不上主设备时,它可以在主设备释放SCL后,主动将SCL线拉低,强制主设备进入等待状态,直到从设备处理完毕并释放SCL。需要注意,并非所有主设备都支持此功能。

  • 10位寻址:除了标准的7位地址,I2C还支持10位寻址,可与7位地址设备共存于同一总线,从而连接最多1008个节点,突破了112个节点的限制。

I2C凭借其简洁高效的架构,已成为嵌入式系统中不可或缺的通信标准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 0:46:21

Beelink ME Pro混合设备:NAS与迷你PC二合一深度评测

1. Beelink ME Pro 混合设备深度解析这款来自Beelink的ME Pro设备巧妙地将NAS功能与迷你PC合二为一,采用Intel N95(Alder Lake-N)或N150(Twin Lake)处理器作为核心。作为从业多年的硬件评测员,我认为这种二…

作者头像 李华
网站建设 2026/4/25 0:46:18

SQL嵌套查询与物化视图_提升读性能的组合策略

嵌套查询性能优化应先分析执行计划再决定是否物化,盲目创建物化视图未必提速;需警惕多层Nested Loop、大表Seq Scan、Materialize节点高耗时等典型问题。嵌套查询太慢,先看执行计划再决定要不要物化直接加物化视图不等于变快,很多…

作者头像 李华