欢迎来到纳米网!
首页 > 公众号文章>正文

详解I2C通信:两线制工作原理及应用

到目前为止,我们已经讨论了 SPI 通信和 UART 通信的基础知识,现在让我们讨论本系列的最后一个协议,即集成电路间协议(I2C)。

如果您曾经构建过使用 OLED 显示器 、 气压传感器或陀螺仪/加速度计模块的项目,您可能会发现自己正在使用 I2C。


I2C 通信简介

I2C 结合了 SPI 和 UART 的最佳特性。使用 I2C,您可以将多个从机连接到单个主机(类似 SPI),并且可以让多个主机控制一个或多个从机。当您希望使用多个微控制器将数据记录到单个存储卡或将文本显示到单个 LCD 时,这非常有用。


与 UART 通信一样,I2C 仅使用两根线在设备之间传输数据:

c149eb64-e90a-11f0-8ce9-92fbcf53809c.jpg

SDA(串行数据) ——主机和从机发送和接收数据的线路。

SCL(串行时钟) ——传输时钟信号的线路。

I2C 是一种串行通信协议,因此数据沿着单根线(SDA 线)逐位传输。

与 SPI 类似,I2C 也是同步的,因此位的输出与位的采样通过主机和从机共享的时钟信号同步。该时钟信号始终由主机控制。

c161df58-e90a-11f0-8ce9-92fbcf53809c.jpg

I2C 的工作原理

使用 I2C 时,数据以消息形式传输。 消息被分解成数据帧 。每条消息包含一个地址帧(包含从设备的二进制地址)以及一个或多个数据帧(包含正在传输的数据)。消息还包含起始和停止条件、读/写位以及每个数据帧之间的 ACK/NACK 位:

c169641c-e90a-11f0-8ce9-92fbcf53809c.jpg

起始条件: 在 SCL 线从高电平切换为低电平之前, SDA 线从高电平切换为低电平。

停止条件: SCL 线从低电平变为高电平后, SDA 线也从低电平变为高电平。

地址帧: 每个从机独有的 7 位或 10 位序列,用于在主机想要与从机对话时识别该从机。

读/写位: 单个位指定主机是否向从机发送数据(低电压电平)或向从机请求数据(高电压电平)。

ACK/NACK 位: 消息中的每一帧后面都有一个确认/不确认位。如果成功接收地址帧或数据帧,接收设备会向发送方返回一个 ACK 位。


寻址

I2C 没有像 SPI 那样的从机选择线,因此它需要另一种方式让从机知道数据正在发送给它,而不是其他从机。它通过寻址来实现这一点。地址帧始终是新消息中起始位之后的第一个帧。

主设备将其想要通信的从设备的地址发送给与其连接的每个从设备。然后,每个从设备将主设备发送的地址与其自身的地址进行比较。如果地址匹配,则向主设备发送一个低电压 ACK 位。如果地址不匹配,则从设备不执行任何操作,SDA 线保持高电平。


读/写位

地址帧末尾包含一个位,用于告知从机主设备是要向其写入数据还是从其接收数据。如果主设备要向从机发送数据,则读/写位为低电平。如果主设备正在向从机请求数据,则该位为高电平。


数据框

主机检测到从机的 ACK 位后,即可准备发送第一个数据帧。

数据帧始终为 8 位长,并以最高有效位优先发送。每个数据帧后紧接着一个 ACK/NACK 位,用于验证该帧是否已成功接收。主设备或从设备(取决于发送数据的设备)必须接收到 ACK 位,才能发送下一个数据帧。

所有数据帧发送完毕后,主机可以向从机发送停止条件,以停止传输。停止条件是指 SCL 线电压由低变高后,SDA 线电压由低变高,而 SCL 线电压保持高电平。


I2C 数据传输步骤

1、主机通过将 SDA 线从高电平切换到低电平, 然后将 SCL 线从高电平切换到低电平,向每个连接的从机发送启动条件:c17cfe78-e90a-11f0-8ce9-92fbcf53809c.jpg
2、主设备向每个从设备发送其想要与之通信的从设备的 7 位或 10 位地址,以及读/写位:c195f8d8-e90a-11f0-8ce9-92fbcf53809c.jpg


3、每个从机将主机发送的地址与自身地址进行比较。如果地址匹配,从机将 SDA 线拉低一位,返回 ACK 位。如果主机发送的地址与从机自身的地址不匹配,从机将 SDA 线保持高电平。c1b28534-e90a-11f0-8ce9-92fbcf53809c.jpg

4.主机发送或接收数据帧:

c1c1ee52-e90a-11f0-8ce9-92fbcf53809c.jpg


5、每个数据帧传输完成后,接收设备都会向发送方返回另一个 ACK 位,以确认成功接收该帧:c1dd2ae6-e90a-11f0-8ce9-92fbcf53809c.jpg


6、要停止数据传输,主机在切换 SDA 为高之前,通过将 SCL 切换为高来向从机发送停止条件:c1e6cb8c-e90a-11f0-8ce9-92fbcf53809c.jpg


单主多从

由于 I2C 使用寻址技术,因此一个主设备可以控制多个从设备。使用 7 位地址,可以提供 128(2 ^7 )个唯一地址。使用 10 位地址并不常见,但可以提供 1,024(2 ^10 )个唯一地址。要将多个从设备连接到一个主设备,请按如下方式连接它们,并使用 4.7K 欧姆上拉电阻将 SDA 和 SCL 线连接到 Vcc:

c1ffc07e-e90a-11f0-8ce9-92fbcf53809c.jpg

多主多从

多个主设备可以连接到一个或多个从设备。同一系统中多个主设备的问题在于,当两个主设备尝试同时通过 SDA 线发送或接收数据时。为了解决这个问题,每个主设备在发送消息之前都需要检测 SDA 线是低电平还是高电平。如果 SDA 线为低电平,则表示另一个主设备已控制总线,该主设备应等待发送消息。如果 SDA 线为高电平,则表示可以安全发送消息。要将多个主设备连接到多个从设备,请使用下图,并使用 4.7K 欧姆上拉电阻将 SDA 和 SCL 线连接到 Vcc:

c208460e-e90a-11f0-8ce9-92fbcf53809c.jpg

I2C 的优点和缺点

与其他协议相比,I2C 有很多方面可能听起来比较复杂,但有一些很好的理由可以解释为什么您可能想或不想使用 I2C 来连接特定设备:

优点

仅使用两根电线

支持多主多从

ACK/NACK 位确认每个帧已成功传输

硬件比 UART 简单

著名且广泛使用的协议


缺点

数据传输速率比 SPI 慢

数据帧的大小限制为8位

实现所需的硬件比 SPI 更复杂

猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^