登录/注册

I2C总线通信的过程有哪些?

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。

更多

I²C(Inter-Intergrated Circuit)总线通信是一个主从式、同步、串行、半双工的通信协议,其通信过程包含以下关键步骤:

  1. 总线空闲状态 (Bus Idle State)

    • 在通信开始前,总线处于空闲状态。
    • SDA(串行数据线)和 SCL(串行时钟线) 都必须被上拉电阻拉至高电平。
  2. 起始条件 (START Condition)

    • 当总线空闲时,主设备通过发起 START 条件来开始一次通信。
    • 主设备将 SDA 线从高电平切换到低电平,同时 SCL 线保持高电平
    • 在 SCL 为高电平时 SDA 的下降沿标志着 START 条件。
  3. 发送从设备地址帧 (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 地址扩展模式,过程类似但需发送两个地址帧)
  4. 接收应答位 (ACK)

    • 每个数据字节(包括地址字节)发送完毕后(8 个数据位后),发送方会释放 SDA 线。
    • 接收方必须在第 9 个时钟脉冲(ACK/NACK 时钟周期)期间做出响应:
      • ACK (Acknowledgement): 接收方(此时对于地址帧通常是从设备)成功接收到字节后,会将 SDA 线拉低,表示应答有效。
      • NACK (Negative Acknowledgement): 如果接收方没有成功接收(例如地址不匹配),或主设备在读取过程中结束传输,SDA 线保持高电平,表示不应答。
  5. 数据传输 (Data Frames)

    • ACK 之后,通信将继续:
      • 写操作 (主->从): 主设备发送数据字节(8-bit)。每个字节后,从设备必须发送 ACK(拉低 SDA)来确认接收,然后主设备继续发送下一个字节或产生停止条件。
      • 读操作 (从->主): 主设备释放 SDA 控制权(但仍在产生 SCL),由被寻址的从设备在 SCL 上升沿期间将数据放到 SDA 线上。每个字节后,主设备必须发送 ACK(拉低 SDA)来确认接收并通知从设备继续发送(除了最后一个字节),或发送 NACK(保持 SDA 高)来通知从设备停止发送。
    • 无论是地址帧还是数据帧,都是在 SCL 为低电平期间允许 SDA 变化,在 SCL 为高电平时 SDA 必须保持稳定(供接收方采样)。
    • 数据按照高位在前 (MSB First) 的顺序传输。
  6. 重复起始条件 (Repeated START Condition - Sr)

    • 主设备可以在不释放总线控制权(不发出 STOP 条件)的情况下,通过发出一个新的 START 条件(SDA 从高到低的跳变发生在 SCL 高电平期间)来开始与另一个(或同一个)从设备的新通信序列。
    • 这在切换读写方向或与多个从设备通信时很常用。
  7. 停止条件 (STOP Condition)

    • 主设备通过发起 STOP 条件来结束一次通信并释放总线。
    • 主设备在 SCL 线为高电平时,将 SDA 线从低电平切换到高电平
    • 在 SCL 为高电平时 SDA 的上升沿标志着 STOP 条件。
    • 总线随后返回空闲状态(SDA 和 SCL 均为高电平)。

总结流程图:

  1. 空闲: SDA = H, SCL = H
  2. START: SDA: H->L (while SCL=H)
  3. 地址帧发送: 主设备发送7位地址 + 1位读/写位
  4. 地址ACK: 从设备拉低SDA响应
  5. 数据帧传输:
    • 写操作:
      • 主设备发送数据字节
      • 从设备ACK响应
      • (重复数据发送+ACK)
    • 读操作:
      • 从设备发送数据字节
      • 主设备ACK响应(要求继续)或NACK响应(结束读取)
      • (重复数据发送+ACK/NACK)
  6. 可选 Sr: 发出新的 START 条件
  7. STOP: SDA: L->H (while SCL=H) -> 总线空闲

这个过程确保了 I²C 总线上设备间有序的数据交换。关键的控制信号(START, STOP, ACK, NACK)都是通过特定的 SDA 和 SCL 时序组合来实现的。

I2C总线通信原理 如何设计I2C总线电路

、高效的通信接口标准。I2C总线通信原理主要包括以下要点:

2025-01-31 15:01:00

I2C总线的工作模式介绍

两根线组成:数据线(SDA)和时钟线(SCL)。数据线负责传输数据,而时钟线则用于同步数据传输。I2C总线是全双工的,意味着数据可以在两个方向上传输。它支持多个主设备和从设备,但在同一时刻只能有一个主设备控制

2025-01-17 15:32:25

I2C总线与单片机的连接

组成:数据线(SDA)和时钟线(SCL)。SDA负责数据的传输,而SCL则用于同步数据传输。I2C协议支持多主机和多从机的通信,每个设备都有一个唯一的地址。通

2025-01-17 15:18:40

I2C总线协议英文资料

I2C总线协议英文资料

资料下载 犇犇不是犇犇 2021-11-24 10:00:06

判断I2C总线通信的异常及及解决方法

此问题由某客户提出,应用处理器AP 与MCU 进行I2C 通信,通信会经常发生异常,需要定位原因.

资料下载 佚名 2021-05-14 10:00:38

I2C通信协议应该如何学习

我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习

资料下载 Lynne 2020-04-28 08:00:00

I2C总线的规范详细说明

本文档的主要内容详细介绍的是I2C总线的规范详细说明

资料下载 佚名 2019-09-30 17:29:52

I2C串行总线的组成及工作原理的详细资料说明

常用的串行扩展总线有:I2C总线,SPI

资料下载 陈文博 2019-07-31 17:35:00

I2C总线应用实例分析

在现代电子系统中,I2C总线因其简单、灵活和高效的特点而被广泛应用于各种设备之间的通信。

2025-01-17 15:09:35

I2C串行总线协议是什么?I2C总线哪些优点?

I2C串行总线协议是什么?I2C总线

2023-09-12 11:18:17

基于单片机的I2C总线与AT24C01实验 I2C总线通信原理讲解

在单片机应用系统中,串行通信总线技术是非常重要的通信手段。常用的串行总线

2023-07-27 16:51:32

I2C总线的常见通信方式

SDA和SCL需要外接上拉电阻,根据总线上的I2C设备数量,系统的通信速度,设计选择不同的上拉电阻。

2022-06-29 11:28:56

I2C总线的基本通信总结

在电子设计开发中I2C大家已经很熟悉了,每一种电子产品小到电子开关,大到卫星通信都会利用的I2C

2021-08-26 14:08:36

i2c总线用来做什么_i2c总线数据传输过程

I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有

2020-11-24 14:16:18

I2C总线模块解析

I2C总线由Philips公司推出,是近年来在微电子通信控制领域广泛采用的一种新型总线

2020-08-10 16:39:02

7天热门专题 换一换
相关标签