当前位置:首页 > 技术学院 > 技术前线
[导读]I2C通信协议使用两根线(串行数据线SDA和串行时钟线SCL)进行通信,其中SDA用于传输数据,SCL用于传输时钟信号;支持多主设备和多从设备的通信,通过地址来识别不同的设备,并支持数据的读取和写入操作。

一、基本概念。

IIC(I2C)协议是一种串行通信协议,用于连接微控制器和外围设备。IIC协议只需要两根信号线(时钟线SCL和数据线SDA)就能完成设备之间的通信;支持多主机和多从机通信,通过设备地址区分不同的设备;标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s;具有应答机制,可以检测数据的正确性和设备的存在性。

I2C通信协议使用两根线(串行数据线SDA和串行时钟线SCL)进行通信,其中SDA用于传输数据,SCL用于传输时钟信号;支持多主设备和多从设备的通信,通过地址来识别不同的设备,并支持数据的读取和写入操作。

I2C通信协议在很多嵌入式系统和电子设备中被广泛应用,例如传感器、存储器、显示屏等设备之间的通信;由于其简单的硬件连接和灵活的设备支持,I2C通信协议在许多应用中都具有很好的适用性。


物理拓扑结构图

物理拓扑结构图

通信的原理是控制SCL和SDA的时序,时期满足总线协议从而进行数据的传输。 I2C总线上每一个设备都可以作为主机或者从机,而且每一个设备都会对应一个唯一的地址(地址可以从器件手册得知)。主从设备之间通过这个地址来确定与哪个器件进行通信。 I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。主设备与从设备之间以字节(8位)位单位进行双向的数据传输。

二、时序介绍。 整体时序图如下:


I2C协议整体时序图

I2C协议整体时序图

协议时序状态说明: (1)总线空闲状态:SDA为高电平,SCL为高电平。 (2)I2C协议起始位:SCL为高电平,SDA出现下降沿,产生一个起始位。 (3)I2C协议结束位:SCL为高电平,SDA出现上升沿,产生一个结束位。 (4)I2C读写数据状态:主要包括数据的串行输入输出和数据接受方对数据发送方的响应信号。具体的时序如图:


读写数据具体时序

读写数据具体时序

当主机向从机写入数据时,SDA上的数据在SCL的高电平期间被写入从机中。从主机的角度看,需要在SCL低电平期间改变要写入的数据。而当主机读从机中的数据时,从机在SCL低电平期间改变要写入的数据,在SCL的高电平期间数据保持稳定,从主机角度看,需要在SCL的高电平期间将SDA上的数据读取存储。 数据传输过程:每当一个字节的数据或命令传输完成时,数据接受方会发送一位应答位,在响应应答位时,数据发出方将SDA总线设置为三态输入,由于总线上都有上拉电阻吗,因此此时总线默认为高电平,若数据接受方正确接受数据,则数据接受方将SDA总线拉低,表示此次的数据或命令接受成功。所以,主机将一字节的数据或命令传出后,会将SDA信号设置为三态输入,等待从机应答,即SDA被从机拉为低电平,若应答正确,表明可以结束或开始下一个数据或命令的传输,否则表明当前的数据或命令传输失败,主机就可以放弃写入或者重新发起写入。

三、I2C器件地址。 每个I2C器件都有一个器件地址,有的器件地址在出厂就设置好,无需更改,有的留下几个控制地址的引脚,由用户自己在硬件设计时确定。 一般情况下主机和从机的角色是确定的,主机向总线上发送地址信息,这条总线上所有的从机都会接收到总线上发来的地址,并与从机本身的地址做比较,如果一致,则匹配成功,相应的从机向总线上发送一位应答位,表示此次通信建立起来了,主机没有收到应答信号则表示寻址失败。 I2C协议在进行数据传输时,主机首先需要向总线上发出控制命令,其中,包括从机的器件地址和读写控制,然后等待相应的从机响应。如图:


控制命令传输数据格式

控制命令传输数据格式

I2C 传输时,按照从高到低的位序进行传输。控制字节的最低位为读写控制位,当该位为 0 时表示主机对从机进行写操作,当该位为 1 时表示主机对从机进行读操作。例如,当需要对片选地址为 3’b100 的器件 发起写操作,则控制字节应该为 1010_100_0。若进行读操作,则控制字节应该为 1010_100_1。

四、I2C存储器地址。 每个支持I2C协议的器件,内部总会有一些可供读写的寄存器或存储器,因此,我们需要对一个器件的存储单元进行读写,就必须要能够指定存储器单元的地址。I2C协议设计了有从机存储器单元寻址地址段,该地址段为一个字节或两个字节长度,在主机确认收到从机返回的控制字节响应后由主机发出,地址长度因器件类型不同。以下是一个字节和两个字节的示意图:


一个存储器字节地址

一个存储器字节地址


存储器两个字节地址

存储器两个字节地址

五、I2C写时序。 1、单字节写时序:不同器件地址字节不同,所以对于写时序会有差别,图示为1字节地址段器件单字节写时序图。


iic通信协议原理(https协议原理)

iic通信协议原理(https协议原理)

根据时序图,从主机的角度分析一次写入单字节数据过程如下; a、主机设置SDA为输出; b、主机发出起始信号; c、主机传输器件地址字节,其中最低位为0,表明为写操作; d、主机设置SDA为三态输入,等待读取从机应答信号; e、读取应答位信号成功,主机设置SDA为输出,传输1字节地址数据; f、主机设置SDA为三态输入,读取应答信号; g、读取应答信号成功,对于两字节地址段器件,传输地址数据低字节,对于1字节地址段器件,主机设置为输出,开始传输待写入的数据; h、设置SDA为三态输入,读取应答信号,对于两字节地址段器件,接着发送一次低字节位地址信息,并读取应答信号; i、读取应答信号成功,主机产生STOP位,终止传输。 2、I2C连续写时序(页写时序) 连续写也称页写,但不是所有的器件都支持连续写时序,连续写是主机连续写多个字节数据到从机,和单字节写操作类似,下图为连续写时序:


页写时序

页写时序

六、I2C读时序。 1、单字节读时序。 单字节读操作分为1字节地址段器件单字节数据读操作和2字节地址段器件单字节数据读操作。以下为1字节地址段器件单字节数据读操作:


1字节地址段器件

1字节地址段器件

从主机角度描述一次读取数据过程: a、主机设置SDA为输出; b、主机发起起始信号; c、主机传输器件地址字节,其中最低位为0,表明为写操作; d、主机设置SDA为三态输入,读取从机应答信号; e、读取英达信号成功,主机设置SDA为输出,传输1字节地址数据; f、主机设置SDA为三态输入,读取从机应答信号; g、读取应答信号成功,主机设置SDA为输出,对于两字节的地址段器件,接着传输低字节地址数据,对于1字节地址段器件跳过次步骤; h、主机发起起始信号; i、主机传输器件地址字节,其中最低位为1,表明为读操作; j、设置SDA为三态输入,读取从机应答位信号; k、读取应答位信号成功,主机设置SDA为三态输入,读取SDA总线上的一个字节的数据; l、产生无应答信号(高电平),无需设置为输出高电平,由于上拉电阻的原因,总线会被自动拉高。 m、主机产生STOP位,终止传输。 2、连续读时序(页读取) 连续读是主机连续从从机读取多个字节数据,这个和单字节读操作类似。如下:


连续读时序

连续读时序

具体时序分析类似于单字节读取。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭