面试遇到再不怕了:IIC协议

描述

 

I2C(Inter-Integrated Circuit),有时也称为IIC或TWI(Two-Wire Interface),是一种用于低速度串行通信的总线协议,主要用于连接微控制器与其外围设备,如传感器、EEPROM、RTC(实时时钟)等。I2C 由飞利浦半导体(现今的恩智浦半导体)在1980年代初期开发。

I2C 通信仅需两根线:

SDA(Serial Data):数据线,用于数据的双向传输。

SCL(Serial Clock):时钟线,用于同步信号。

I2C 协议的特点包括:

主从架构:

在I2C总线上,任何设备都可以是主设备或从设备。主设备负责生成时钟信号和控制总线,而从设备接收主设备的指令。通常,微控制器充当主设备的角色。

支持多主设备和多从设备:

I2C 总线允许多个主设备和多个从设备共存,每个设备都有唯一的地址。在多主模式下,各主设备需要通过一定的仲裁机制来协调对总线的访问。

地址和数据传输:

在I2C通信中,数据传输是通过发送设备地址加读写位开始的,随后跟随的是数据传输。如果有多个从设备,主设备通过地址来指定与之通信的从设备。

同步:

I2C是一种同步协议,意味着数据的传输是由时钟信号(SCL线)来控制的。

I2C 协议的优点是简单、成本低且灵活,只需两根线就能连接多个设备。不足之处是速度相比SPI和UART较慢,且总线长度有限制,随着连接的设备数量增加,可能会影响通信速度和可靠性。

I2CI2C

一、IIC的通信流程

I2C

I2C

启动信号:

通信开始时,主设备发出启动信号。这通过将数据线(SDA)从高电平拉低,而时钟线(SCL)保持在高电平来实现。这个动作通知所有从设备主设备即将开始通信。

发送设备地址及读写位:

紧接着启动信号,主设备发送从设备的地址以及操作位(读/写)到数据线上。每个从设备都有一个唯一的地址。读写位决定了操作是读数据(通常设为1)还是写数据(通常设为0)。

从设备应答:

地址和读写位发送完毕后,被寻址的从设备需要通过发送一个应答信号(ACK)来响应。应答信号是在数据线(SDA)上产生一个低电平信号,同时时钟线(SCL)为高电平。

数据传输:

成功建立连接和从设备应答之后,数据可以开始传输。数据是按字节传输的,每传输完一个字节后,接收方(无论是主设备还是从设备)都需要发送一个应答信号(ACK)。

停止信号:

数据传输完成后,主设备发出一个停止信号来终止通信。这通过将数据线(SDA)从低电平拉高,而时钟线(SCL)保持在高电平来实现,标志着一次I2C交流的结束。

I2CI2C

二、发送1bit数据的流程

I2C

主设备首先确保时钟线SCL处于高电平状态。

然后,主设备会将要发送的比特数据设置在数据线SDA上。如果发送的是‘1’比特,SDA线会被设置为高电平;如果发送的是‘0’比特,SDA线会被设置为低电平。SDA线上的数据必须在SCL线的一个时钟脉冲开始之前稳定。

在数据线SDA稳定后,主设备通过将时钟线SCL从高电平拉低到低电平,来通知从设备数据线上的数据可以被读取。从设备在SCL线为高电平的时候读取SDA线上的数据。

完成这个数据位的传输后,主设备通常会将时钟线SCL恢复到高电平,准备发送下一个比特或产生一个停止条件以结束通信。

重要的是,在SCL线为高电平期间,数据线SDA上的数据必须保持稳定,因为任何在SCL高电平时的SDA变化都可能被视为控制信号(例如启动或停止条件)。

I2CI2C

三、IIC需要外接上拉电阻

I2C

I2C

I2C

I2C总线的设计是开漏(open-drain)或开集(open-collector)输出,这意味着连接到总线的设备能够将总线拉低到地(GND),但是不能将总线推高至电源电压(Vcc)。

上拉电阻的作用主要包括以下几点:

提供拉高电平:

设备将总线释放时,上拉电阻将SDA和SCL线拉高到正逻辑电平(通常是Vcc),确保线路在非驱动状态时为高电平。

限制电流:

当总线设备将SDA或SCL线拉低时,上拉电阻起到限流的作用,防止电流过大导致设备损坏。

防止总线冲突: 

多个设备可能会同时尝试控制总线。由于开漏设计,任何设备都可以安全地将总线拉低而不会对其他设备造成伤害。上拉电阻确保了在这种情况下不会出现短路。

增强信号完整性:

上拉电阻也有助于维护信号的完整性,减少因为长线路或者其他电气特性引起的信号退化。

选择合适的上拉电阻值是很重要的。电阻值太大,电流太小,导致总线拉高速度变慢,影响通信速率;电阻值太小,可能导致电流过大,浪费功率,且拉低总线时可能会对设备造成损害。通常,上拉电阻的选择取决于总线容量(总线上设备的数量和总线长度)和系统工作的电源电压。常见的电阻值范围从1.8kΩ到10kΩ不等。

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分