0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C总线数据包结构详解

科技绿洲 来源:网络整理 作者:网络整理 2025-01-17 15:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

I2C(Inter-Integrated Circuit)总线是一种用于连接微控制器和各种外围设备的通信协议。它使用两条线:串行数据线(SDA)和串行时钟线(SCL),实现了设备之间的简单、高效通信。以下是I2C总线数据包结构的详解:

一、I2C总线数据包的基本组成

I2C总线上的数据传输以数据包为单位进行,每个数据包包含起始信号、设备地址、数据传输方向位、数据字节以及应答信号(ACK/NACK)等部分。

  1. 起始信号(S)
    • 起始信号标志着数据传输的开始。当SCL为高电平时,SDA由高电平向低电平跳变,即产生起始信号。
    • 所有连接到I2C总线的设备都会检测到起始信号,并准备接收后续的数据。
  2. 设备地址
    • 紧接着起始信号的是设备地址。I2C总线上的每个设备都有一个唯一的地址,用于区分不同的设备。
    • 设备地址可以是7位或10位,但在实际应用中,7位地址更为常见。
    • 设备地址后面紧跟着一个数据传输方向位,用于指示后续的数据传输方向。该位为0时表示写操作,为1时表示读操作。
  3. 数据字节
    • 数据以字节为单位进行传输,每个字节包含8位数据。
    • 在传输每个字节时,主设备在SCL的每个时钟周期内将一位数据放置在SDA线上。数据从高位到低位依次传输。
  4. 应答信号(ACK/NACK)
    • 每传输完一个字节后,接收设备会返回一个应答信号。
    • 应答信号为低电平时表示应答(ACK),表示接收设备已正确接收到数据,并准备接收下一个字节。
    • 应答信号为高电平时表示非应答(NACK),表示接收设备无法接收更多数据或数据传输出现错误。

二、I2C总线数据包的传输过程

  1. 写操作
    • 主设备发送起始信号。
    • 主设备发送从设备地址和数据传输方向位(写操作)。
    • 从设备确认地址匹配后返回应答信号。
    • 主设备发送数据字节。
    • 从设备接收数据字节并返回应答信号。
    • 重复上述步骤,直到所有数据传输完毕。
    • 主设备发送停止信号,标志着数据传输的结束。
  2. 读操作
    • 主设备发送起始信号。
    • 主设备发送从设备地址和数据传输方向位(读操作)。
    • 从设备确认地址匹配后返回应答信号。
    • 从设备发送数据字节。
    • 主设备接收数据字节并返回应答信号(如果需要继续接收数据)或非应答信号(如果不需要继续接收数据)。
    • 重复上述步骤,直到所有数据传输完毕。
    • 主设备发送停止信号,标志着数据传输的结束。

三、I2C总线数据包的复合格式

在实际应用中,I2C通信更常用的是复合格式,即在一次通信过程中包含多次起始信号和停止信号。这种格式允许主设备在一次通信中访问多个从设备或进行复杂的读写操作。

例如,主设备可以先向一个从设备发送一个寄存器地址,然后读取该寄存器的值。在这个过程中,主设备会先发送起始信号、从设备地址和写操作方向位,然后发送寄存器地址。接着,主设备会再次发送起始信号、从设备地址和读操作方向位,然后从设备会返回寄存器的值。最后,主设备发送停止信号结束通信。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    49

    文章

    8880

    浏览量

    165738
  • 通信协议
    +关注

    关注

    28

    文章

    1096

    浏览量

    42350
  • I2C总线
    +关注

    关注

    8

    文章

    422

    浏览量

    63504
  • 数据包
    +关注

    关注

    0

    文章

    270

    浏览量

    25657
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SGM4541 I2C总线过压保护器:设计与应用的详细解析

    SGM4541 I2C总线过压保护器:设计与应用的详细解析 在如今的电子设备设计中,保护电路免受过电压的损害是至关重要的。SG Micro Corp推出的SGM4541 I2C总线过压
    的头像 发表于 03-17 16:30 392次阅读

    SGM4541A:I2C总线过压保护的理想之选

    SGM4541A:I2C总线过压保护的理想之选 在电子设备的设计中,I2C总线的稳定运行至关重要。而SGM4541A作为一款低IQ I2C
    的头像 发表于 03-17 16:30 216次阅读

    I2C总线-通信线缆长度的影响及改进措施

    I2C总线确实不适合远距离通信,尤其是需要使用线缆与I2C接口器件进行通信,这里的“不适合”并不是说不可以,这也是本文的重点。一般使用I2C总线
    发表于 01-21 06:03

    探索PCF8584:I2C总线控制器的卓越之选

    探索PCF8584:I2C总线控制器的卓越之选 在电子工程师的日常工作中,选择合适的芯片来实现特定功能至关重要。今天,我们就来深入探讨一款功能强大的I2C总线控制器——PCF8584,
    的头像 发表于 12-28 15:40 764次阅读

    P82B715:I2C总线扩展的得力助手

    )的P82B715,一款专门用于缓冲高电容I2C总线系统的器件,看看它是如何解决这些问题的。 文件下载: p82b715.pdf 1. 器件概述 P82B715是一款支持通过I²C
    的头像 发表于 12-26 10:20 1599次阅读

    基于FPGA的I2C控制模块设计

    I2C_WRITE_WDATA.v模块实现I2C写时序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的头像 发表于 12-26 09:48 6024次阅读
    基于FPGA的<b class='flag-5'>I2C</b>控制模块设计

    深入解析TCA9617B:I2C总线中继器的卓越之选

    深入解析TCA9617B:I2C总线中继器的卓越之选 在电子工程师的日常设计工作中,I2C总线和SMBus系统的应用极为广泛。而TCA9617B作为一款BiCMOS双双向缓冲器,专为
    的头像 发表于 12-22 15:20 645次阅读

    AS32X601的I2C模块操作EEPROM详解

    国科安芯推出的AS32X601系列MCU芯片内置的I2C模块提供了符合工业标准的两线串行制接口,可用于MCU和外部I2C设备的通讯。I2C总线使用两条串行线:串行
    的头像 发表于 12-21 21:39 1600次阅读
    AS32X601的<b class='flag-5'>I2C</b>模块操作EEPROM<b class='flag-5'>详解</b>

    TCA9517-Q1电平转换I2C总线中继器:设计与应用详解

    TCA9517-Q1电平转换I2C总线中继器:设计与应用详解 在当今复杂的电子系统中,I2C和SMBus系统的应用越来越广泛,而电平转换和总线
    的头像 发表于 12-18 11:25 612次阅读

    I2C的SDA仲裁介绍

    I2C 支持 SDA 冲突检测和仲裁,可以保证在多个主机企图控制 I2C 总线时,I2C 总线上的数据
    发表于 12-16 06:25

    I2C总线协议

    I2C 总线使用两根信号线(数据线 SDA 和时钟线 SCL)在设备间传输数据。SCL 为单向时钟线,固定由主机驱动。SDA 为双向数据线,
    发表于 12-15 08:07

    I2C的状态码

    I2C 总线状态通过 I2C 状态寄存器 I2Cx_STAT 来标识,共 26 个正常接收或发送状态,和 2 个特殊状态(0xF8:
    发表于 12-08 08:04

    I2C死锁的问题

    读操作,I2C从设备应答后输出数据,如果在这个时刻I2C主设备异常复位而此时I2C从设备输出的数据位正好为0,也会导致
    发表于 12-04 06:00

    深入剖析I2C协议

    I2C是由Philips开发的简单的双向两线总线,在深入浅出理解SPI协议中,我们区分了单工,半双工,全双工协议数据流向的区别,根据特征,I2C协议属于半双工协议(即同一时刻,
    的头像 发表于 08-21 15:10 3922次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    I2C总线通信,为什么要进行电气隔离?

    I2C总线采用双向二线制,支持多主机多从机通信,具备高可靠性、抗干扰能力强,广泛应用于嵌入式系统中。
    的头像 发表于 08-11 11:04 2673次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>通信,为什么要进行电气隔离?