当前位置:首页 > 技术学院 > 技术前线
[导读]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、连续读时序(页读取) 连续读是主机连续从从机读取多个字节数据,这个和单字节读操作类似。如下:


连续读时序

连续读时序

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

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

在现代电子系统中,总线作为连接各个组件的关键通信通道,起着至关重要的作用。CANBUS 总线和 I2C 总线是众多总线类型中应用广泛的两种,它们各自具备独特的特性,适用于不同的应用场景。深入了解这两种总线的区别,对于电子...

关键字: 总线 CANBUS I2C

在嵌入式开发领域,UART、I2C、SPI等接口技术被广泛使用,它们为微控制器与外部设备之间的通信提供了高效、可靠的途径。本文将详细介绍这三种常用的外设接口。

关键字: UART I2C

在现代嵌入式系统开发中,串行通信协议扮演着至关重要的角色。其中,UART(通用异步收发传输器)、I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)...

关键字: UART I2C SPI 串行总线

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。I2C总线(Inter-Integrated Circuit)是一种同步半双工串行通信总线,是P...

关键字: I2C总线 SDA

在嵌入式系统的开发过程中,调试是至关重要的一环。调试工具的选择直接影响到开发效率、系统稳定性以及后期的维护成本。在众多通信协议中,UART(通用异步收发传输器)因其简单性、灵活性以及广泛的工具支持,成为嵌入式调试中的首选...

关键字: 嵌入式 UART SPI I2C

在电子通信领域,IIC(Inter-Integrated Circuit),又称I²C,作为一种高效、简洁的串行通信协议,广泛应用于微控制器与各种外围设备之间的数据传输。IIC总线以其独特的两根线设计——数据线(SDA)...

关键字: IIC引脚 SDA SCL

RTC模块作为一个独立的定时器,能够提供精确的实时时间,并为电子系统提供精确的时间基准。本文将详细阐述RTC实时时钟的基本概念、工作原理以及其在现代电子设备中的应用。

关键字: RTC I2C SPI

SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。

关键字: I2C 总线通信 时钟线

今天,小编将在这篇文章中为大家带来I2C总线的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: I2C 总线

在这篇文章中,小编将对I2C总线的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: I2C 总线
关闭