技术热线: 4007-888-234

单片机开发:I2C通信协议的基本原理

更新时间: 2020-09-26
阅读量:3694

我们在单片机芯片上常看到的I2C串行通信协议,最初是由飞利浦半导体公司在1982年发明的(现在称为NXP半导体)。该协议提供短距离的板内的通信的有效手段,是理想的嵌入式系统和主要设计关注点是简单性和低制造成本的微计算应用程序。

英锐恩单片机开发工程师表示,对于想要使用I2C协议的产品的工程师来说,以I2C语言进行编程成为必需的技能。在下面的文章中,我们对I2C信号传输的工作原理进行了基本介绍。我们将介绍I2C信号传输协议以及I2C协议的关键功能,使其非常适合在嵌入式计算项目中使用。

一、I2C信号传输是如何传输的?

英锐恩单片机开发工程师介绍,我们可以从对该协议及其必需组件的基本概述开始对I2C的讨论。

名称I2C是术语“集成电路间”的缩写。在这里,术语“集成电路”主要是指“计算机芯片”。有许多类型的计算机芯片,包括用于处理(CPU),内存(RAM和EEPROM)和其他功能的计算机芯片。集成电路间协议的概念告诉我们,该协议将允许这些单独的芯片相互通信。实际上,这正是I2C协议的用途。

I2C协议旨在使多个从设备(例如内存和其他外围芯片)能够在短距离上与一个或多个主设备(例如微控制器)进行通信。重要的是,I2C通信协议允许在多个从设备与一个以上的主设备之间进行精确的通信:多达1008个单独的设备可以通过同一条总线进行通信。使这成为可能的协议功能是两线配置,从机寻址以及与I2C相关联的已定义消息协议。

I2C通信协议使用两线配置传送消息。串行时钟线(通常缩写为SCL)通过将时钟信号从主设备传输到从设备来同步I2C总线上主设备和从设备之间的数据传输。在I2C中,时钟信号始终由主设备生成。I2C中的第二条线称为串行数据线或SDA。该导线允许在主设备和从设备之间进行双向数据传输。

i2c-diagram.png

二、I2C总线协议

英锐恩单片机开发人员表示,串行通信协议基本上是一组规则,它定义了一个或多个电子设备之间的通信的共同的语言和语法。对于使用I2C的任何设备,数据传输将始终由主设备启动。这是因为I2C中的主设备控制时钟线,该时钟线使总线上的所有数据传输同步。

源自I2C总线上的主设备的消息遵循可预测的格式:

1.要传输数据,主设备必须生成一个START条件。
2.在启动条件之后,将发送一个从地址,以指示将消息发送到的位置。
3.单个位指示主设备是否将从从设备读取或写入数据。
4.在传输数据的每个字节之后使用ACK位来确认接收。
5.数据以单字节(8位)块的形式传输,然后是ACK位。
6.当消息结束时,STOP条件表示数据传输结束。

三、启动和停止条件

通信协议的目的是实现多个主从设备之间的通信,通信通过一系列通过SDA导线传输的消息进行。英锐恩单片机开发人员解释,当需要发送消息时,系统必须生成指示消息开始的START条件,然后生成指示消息结论的STOP条件,就像在电话的任何一端说“你好!”和“再见!” 。

在I2C协议中,通信线为“漏极开路”,必须使用上拉电阻激活。当需要发送消息时,通过在SDA线中产生从高到低的变化来创建START条件。保持SDA线为高电平的上拉电阻被释放,并且该线被拉低-这必须在SCL被拉高时完成。相反,当SDA线从低电平变为高电平且SCL被拉低时,将产生STOP条件。

在任何使用I2C的设备中,都使用上拉电阻器在四种基本工作模式之间切换设备。有些设备同时使用全部四个,而其他I2C设备只能使用一个或两个。四种潜在的操作模式是:

1.主设备将数据传输到从设备。
2.主设备从从设备接收数据。
3.从设备将数据传输到主设备。
4.从设备从主设备接收数据。

四、从站寻址

英锐恩单片机开发工程师介绍,在I2C协议中,从设备寻址可确保在主设备发送消息时将正确的从设备标识为收件人。I2C协议支持两种不同的从地址寻址格式:7位寻址和10位寻址。

在7位寻址中,从设备的地址在START条件之后立即以7位发送。第8位用作读/写指示符,其中0指示主机要向从机写入信息,而1指示主机要从从机读取信息。7位寻址通常将允许多达128个设备在总线上具有唯一的从机地址,但是保留16个7位地址用于特殊功能,则该数目略低,为112。

在10位寻址中,可以使用全部10位地址,这意味着最多可以将1024个从设备连接到系统。在此,在启动条件之后使用特殊的保留地址来指示存在10位地址。在10位地址指示符之后,将发送地址的前两位,然后是读/写指示符,然后是ACK。一旦从机确认了主机,主机发送的下一个字节将包含其余的从机地址。

英锐恩单片机开发人员表示,我们还经常看到一些使用8位寻址方案的从设备。尽管这些设备未遵循典型的I2C约定,但仍然存在使用I2C协议与8位寻址从设备进行通信的方法。

以上就是英锐恩单片机开发工程师分享的单片机中I2C通信协议的基本原理。英锐恩专注单片机应用方案设计与开发,提供8位单片机、16位单片机、32位单片机、运放芯片和模拟开关。