I2C通信基本原理是什么
I2C是inter-integrated circuit的缩写,又名为TWI,只需要用两条物理线进行传输,分别命名为SDA和SCL, 用于传输serial data和serial clock。I2C工作时分为主从工作模式,而在同总线上可以存在多个主机。每一个连接到总线的器件都可以通过唯一的地址与总线连接,主机控制主机为发送器模式或是接收器模式。
好的,很高兴为你讲解 I²C 通信的基本原理。简单来说,I²C 是一种同步、串行、半双工、基于主从架构的通信总线协议。它只需要两根线(时钟线 SCL 和数据线 SDA)就能连接多个设备。
以下是其基本原理的核心要点:
-
两条总线线缆 (Two-Wire Interface):
- SCL (Serial Clock Line - 串行时钟线): 由主设备(Master)产生和控制的时钟信号线。它同步所有设备之间的数据传输速率。
- SDA (Serial Data Line - 串行数据线): 承载实际传输数据的双向线。主设备和从设备(Slave)都可以在特定时刻驱动这条线(但同一时刻只能有一个设备驱动),数据在时钟上升沿或下降沿(取决于模式)被采样。
-
主从架构 (Master-Slave Architecture):
- 主设备 (Master): 控制通信的发起者。它负责:
- 生成时钟信号 (SCL)。
- 发起数据传输(启动和停止通信)。
- 指定与哪个从设备通信(通过地址)。
- 控制数据传输的方向(读或写)。
- 通常是一个微控制器(MCU)或 SoC。
- 从设备 (Slave): 响应主设备命令的设备。它:
- 侦听总线上的启动条件(Start Condition)。
- 识别主设备发送的自身唯一地址。
- 接收主设备发送的数据或向主设备发送数据。
- 在通信过程中对接收到的字节给出确认信号(ACK)。
- 通常是各种外设,如传感器(温度、湿度、加速度计)、存储器(EEPROM)、实时时钟(RTC)、IO 扩展芯片等。
- 一个 I²C 总线上只能有一个主设备在同一时刻控制总线(但可以有多个主设备,需配合仲裁机制),但可以连接多个从设备(只要地址唯一)。
- 主设备 (Master): 控制通信的发起者。它负责:
-
开漏输出和上拉电阻 (Open-Drain Outputs and Pull-up Resistors):
- 连接到 SCL 和 SDA 线的器件通常使用开漏(或开集)输出驱动。
- 两根总线都通过上拉电阻连接到正电源电压(VDD)。
- 这种结构意味着:
- 任何设备都可以将线路拉低(驱动为逻辑 ‘0’)。
- 当没有设备驱动线路时,上拉电阻将其拉高到逻辑 ‘1’(空闲状态)。
- 天然实现了“线与”(Wire-AND) 功能:只有当所有设备都不拉低线路时,线路才为高电平;只要有一个设备拉低,线路就为低电平。这个特性对实现总线仲裁(Arbitration)和时钟同步(Clock Synchronization)至关重要。
-
地址机制 (Addressing Mechanism):
- 每个从设备在出厂时或在系统中被配置有一个唯一的 7 位(最常见)或 10 位 I²C 地址。
- 主设备在启动通信后发送的第一帧完整数据就是目标从设备的地址(通常包含 7 位地址 + 1 位读写方向位)。
- 所有从设备都会侦听这个地址。只有地址匹配的那个从设备才会在后续通信中响应主设备(发送 ACK/NACK 和数据),其他设备保持静默。
-
通信流程: 一次典型的 I²C 数据传输由以下几部分组成:
- 起始条件 (Start Condition): 主设备在 SCL 为高电平时将 SDA 线从高电平拉到低电平。这个独特的边沿跳变告知所有从设备:通信开始/重新开始。
- 地址帧 + R/W 位 (Address Frame + R/W Bit): 主设备发送 7 位(或 10 位)的从设备地址,紧接着发送 1 位数据方向位(Read/Write Bit:0 表示主设备要写到从设备;1 表示主设备要读从设备的数据)。
- 应答位 (Acknowledge Bit - ACK/NACK): 每传输完一个完整的地址帧或数据帧(8位)后,接收方(地址帧时是目标从设备;数据帧时可能是主或从,取决于方向)必须在第 9 个时钟脉冲期间驱动 SDA 线为低电平(ACK),表示成功收到并准备继续。如果接收方在第 9 个时钟期间保持 SDA 为高电平,表示 NACK(未应答)。
- 数据帧 (Data Frame): 在地址和 ACK 之后,开始传输数据帧。每帧 8 位(一个字节)。在每字节传输完后都有一个 ACK/NACK。传输方向由地址帧中的 R/W 位决定。
- 停止条件 (Stop Condition): 主设备在 SCL 为高电平时将 SDA 线从低电平释放(拉回)到高电平。这个边沿跳变表示通信结束。
-
时钟同步和仲裁 (Clock Synchronization and Arbitration):
- 时钟同步 (Clock Synchronization): 当多个可能的主设备(多主系统)同时尝试驱动总线时,SCL 线上的“线与”特性允许较慢的设备通过保持 SCL 为低电平(时钟拉伸,Clock Stretching)来延迟通信,直到它准备好处理下一个数据位。最终 SCL 时钟的频率由最慢的那个决定该位周期的设备决定。
- 总线仲裁 (Bus Arbitration): 发生在主设备们同时尝试占用总线时(通过同时发出起始条件)。通过竞争 SDA 线上的数据位来裁决。在发送过程中,每个主设备都会同时比较它发送的位和 SDA 线上实际的电平(也是“线与”的结果)。如果主设备发送的是 ‘1’(不拉低 SDA),但检测到 SDA 被别的设备拉低成了 ‘0’,则该主设备知道它仲裁失败,立即释放 SDA 线(转为输入模式)并停止尝试发送,让赢得仲裁的主设备继续通信,整个过程数据不会丢失或损坏。
总结:
I²C 的核心是利用两根线(SCL, SDA),在主设备控制下,通过精确定义的启动、停止条件和地址帧,实现一个主设备与多个具有唯一地址的从设备之间的半双工通信。依靠开漏输出、上拉电阻、ACK/NACK 机制确保可靠传输,并通过时钟同步和总线仲裁支持多主环境。其简单性、低成本和连接设备多(地址限制内)的优势使其在嵌入式系统中广泛应用。
希望这个中文解释能清晰地说明 I²C 的基本原理!
MCU实现I2C通信
当时接手这项工作时,对方给我一周的时间,我是自信可以在两三天内完成。因为对I2C的通信协议还是非常熟悉的,看下定时芯片RX-8025SA的规格书应该就可以搞定了。呵呵,又可以提前完成了!现在总结一下
资料下载
佚名
2021-11-01 16:24:42
I2C通信协议应该如何学习
我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有
资料下载
Lynne
2020-04-28 08:00:00
Arduino教程之I2C模块使用教程资料免费下载
为什么叫I2C模块?和一元硬币差不多大小的一块PCB上放了三个芯片,分管三个功能:时间计算、温度侦测、数据存储。这三个芯片都是通过I2C总线通信
资料下载
佚名
2019-01-22 16:59:25
I2C通信协议:了解I2C Primer、 PMBus和SMBus
I2C Primer的基本特性和标准,并重点说明在通信实现过程中如何正确使用该协议。从I2C的
2023-06-15 15:29:01
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 传感器常见类型有哪些?
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机