I2C总线通信的过程有哪些?
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
I²C(Inter-Intergrated Circuit)总线通信是一个主从式、同步、串行、半双工的通信协议,其通信过程包含以下关键步骤:
-
总线空闲状态 (Bus Idle State)
- 在通信开始前,总线处于空闲状态。
- SDA(串行数据线)和 SCL(串行时钟线) 都必须被上拉电阻拉至高电平。
-
起始条件 (START Condition)
- 当总线空闲时,主设备通过发起 START 条件来开始一次通信。
- 主设备将 SDA 线从高电平切换到低电平,同时 SCL 线保持高电平。
- 在 SCL 为高电平时 SDA 的下降沿标志着 START 条件。
-
发送从设备地址帧 (Slave Address Frame)
- START 条件之后,主设备开始发送数据(时钟由主设备产生)。
- 第一个数据字节(8-bit)是从设备地址帧。
- 7-bit 地址 (MSB First): 前 7 位(Bit 7 到 Bit 1)是目标从设备的唯一地址(0x00 - 0x7F)。
- 1-bit 读写指示 (Bit 0): 最低位(LSB)表示主设备是向从设备写入数据 (0) 还是从从设备读取数据 (1)。
- (注意:存在 10-bit 地址扩展模式,过程类似但需发送两个地址帧)
-
接收应答位 (ACK)
- 每个数据字节(包括地址字节)发送完毕后(8 个数据位后),发送方会释放 SDA 线。
- 接收方必须在第 9 个时钟脉冲(ACK/NACK 时钟周期)期间做出响应:
- ACK (Acknowledgement): 接收方(此时对于地址帧通常是从设备)成功接收到字节后,会将 SDA 线拉低,表示应答有效。
- NACK (Negative Acknowledgement): 如果接收方没有成功接收(例如地址不匹配),或主设备在读取过程中结束传输,SDA 线保持高电平,表示不应答。
-
数据传输 (Data Frames)
- ACK 之后,通信将继续:
- 写操作 (主->从): 主设备发送数据字节(8-bit)。每个字节后,从设备必须发送 ACK(拉低 SDA)来确认接收,然后主设备继续发送下一个字节或产生停止条件。
- 读操作 (从->主): 主设备释放 SDA 控制权(但仍在产生 SCL),由被寻址的从设备在 SCL 上升沿期间将数据放到 SDA 线上。每个字节后,主设备必须发送 ACK(拉低 SDA)来确认接收并通知从设备继续发送(除了最后一个字节),或发送 NACK(保持 SDA 高)来通知从设备停止发送。
- 无论是地址帧还是数据帧,都是在 SCL 为低电平期间允许 SDA 变化,在 SCL 为高电平时 SDA 必须保持稳定(供接收方采样)。
- 数据按照高位在前 (MSB First) 的顺序传输。
- ACK 之后,通信将继续:
-
重复起始条件 (Repeated START Condition - Sr)
- 主设备可以在不释放总线控制权(不发出 STOP 条件)的情况下,通过发出一个新的 START 条件(SDA 从高到低的跳变发生在 SCL 高电平期间)来开始与另一个(或同一个)从设备的新通信序列。
- 这在切换读写方向或与多个从设备通信时很常用。
-
停止条件 (STOP Condition)
- 主设备通过发起 STOP 条件来结束一次通信并释放总线。
- 主设备在 SCL 线为高电平时,将 SDA 线从低电平切换到高电平。
- 在 SCL 为高电平时 SDA 的上升沿标志着 STOP 条件。
- 总线随后返回空闲状态(SDA 和 SCL 均为高电平)。
总结流程图:
- 空闲: SDA = H, SCL = H
- START: SDA: H->L (while SCL=H)
- 地址帧发送: 主设备发送7位地址 + 1位读/写位
- 地址ACK: 从设备拉低SDA响应
- 数据帧传输:
- 写操作:
- 主设备发送数据字节
- 从设备ACK响应
- (重复数据发送+ACK)
- 读操作:
- 从设备发送数据字节
- 主设备ACK响应(要求继续)或NACK响应(结束读取)
- (重复数据发送+ACK/NACK)
- 写操作:
- 可选 Sr: 发出新的 START 条件
- STOP: SDA: L->H (while SCL=H) -> 总线空闲
这个过程确保了 I²C 总线上设备间有序的数据交换。关键的控制信号(START, STOP, ACK, NACK)都是通过特定的 SDA 和 SCL 时序组合来实现的。
I2C总线的工作模式介绍
两根线组成:数据线(SDA)和时钟线(SCL)。数据线负责传输数据,而时钟线则用于同步数据传输。I2C总线是全双工的,意味着数据可以在两个方向上传输。它支持多个主设备和从设备,但在同一时刻只能有一个主设备控制
2025-01-17 15:32:25
I2C总线与单片机的连接
组成:数据线(SDA)和时钟线(SCL)。SDA负责数据的传输,而SCL则用于同步数据传输。I2C协议支持多主机和多从机的通信,每个设备都有一个唯一的地址。通
2025-01-17 15:18:40
I2C通信协议应该如何学习
我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习
资料下载
Lynne
2020-04-28 08:00:00
换一换
- 如何分清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功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机