什么是内部集成电路(I2C)?

发布时间:2022/9/22 17:04:13

一什么是I2C?


飞利浦发明了I2C总线,这是一种简单的双向双线同步串行总线。只需要两根电线就可以在连接到总线的设备之间传输数据。



主设备用于打开设备进行传输,并启动总线进行数据传输。此时,任何被寻址的设备都被视为从设备。在总线上,主设备和从设备、发送和接收数据之间的关系不是恒定的,但它确实依赖于当时的数据传输方向。如果主机希望向从设备发送数据,则它首先寻址从设备,然后主动向从设备传输数据,最后结束数据传输;如果主机想要从从属设备接收数据,则主设备首先寻址从属设备。然后,主机在终止接收操作之前接收由设备递送的数据。在这些条件下。时钟由主机生成,数据传输由主机终止。



二I2C的简史


1980年,飞利浦开始开发通信总线,以连接各种低速设备(飞利浦芯片)。

1982年,原始版本使用100KHz的通信速率,提供7位地址,并将总线上的设备数量限制为112个(有几个保留地址)。

1992年,第一个规范发布,增加了400kHz的快速模式和扩展的10位地址空间。

1998年,随着技术的进步,对通信速率的要求越来越高,达到了高速3.4兆赫,后来又升级到5兆赫,并使用差分信号来提高抗噪性。




三I2C基本内容


I²C:内部集成电路,字面意思是集成电路之间,是I²C总线的缩写。

I2C只需要两根线,最多可以支持1008个从设备进行同步串行通信。


与SPI不同,I2C可以支持多主、多从总线。

 fcc6c683-a715-4aff-85a4-f7bf5677965c.webp.jpg

I2C

I2C双线信号

每个I2C总线由两个信号组成:SCL时钟和SDA数据。当前总线主控器始终生成时钟信号。


I2C总线驱动器与UART和SPI不同,是开漏(如果你不知道开漏意味着什么,请谷歌),这意味着它们可以将适当的信号线拉低,但不能将其驱动高。


当没有设备将信号推低时,每条信号线上的上拉电阻器将其返回到高电平。

30b09152-cd82-4ba9-8bad-b2fbb29d321c.webp.jpg

Signal of I2C

信号电平

I2C总线信号电平通常在5伏和3.3伏之间。如果总线上的设备与这两个级别兼容,则可以直接使用该设备。


如果信号电压实质上不同(5V和2.5V),或者如果电平不兼容,则电平转换是必不可少的。


四I2C总线的开发和设计需要注意


1.总线容量和驱动能力

由于I2C总线的外围扩展设备都是CMOS设备,并且总线具有足够的电流驱动能力,因此总线上扩展的节点数量由电容负载而不是电流负载能力决定。



总线上的每个实际节点设备在其总线接口处具有等效电容。由于类似的电容,总线传输将被延迟,从而导致数据传输错误。


总线负载容量通常为400pF,并且每个I2C设备具有其自己的电容值,通常不超过20pF,由此可以估计总线长度和节点数量。由于总线上的每个外围设备都有一个设备地址,因此设备地址也限制了总线上外围设备的扩展。


2.I2C总线的电气结构

内部I2C总线接口是双向传输电路,如图所示,因为I2C总线是双向同步串行总线。由于总线端口的输出具有开漏结构,因此必须在总线上安装上拉电阻器。电源电压、SDA、SCL和总线串联电阻都受到上拉电阻器的影响。有关选择,请参阅适用的数据表,其范围通常在4.7K到10K之间。

 31401898-b5b8-473a-bb47-f3fa249f0e7d.webp.jpg

Typical Application

3.每个节点都有一个固定的节点地址。由于I2C总线是双向同步串行系统,总线上的单片机可以作为主节点,其设备地址由软件给出,并保存在总线的地址寄存器中,即主设备的从地址。当在多主总线系统中使用单片机作为从节点时,其从地址是有意义的,从而为总线上的所有外围设备产生标准化的设备地址。



4.I2C总线定时

在I2C接口上传输的每个数据帧的长度为一个字节。然而,一旦总线启动,可以通信的字节数量就没有限制;所需要的只是另一方确认传输的每个字节。发送时首先传输最重要的信息块。每次传输在开始时都有一个开始信号,在结束时都有停止信号。通过在总线传输了一个字节之后操作时钟线,可以停止传输。


① 时钟和数据传输:

外部设备通常用于将SDA引脚拉高。当SCL为低电平时,只能修改SDA引脚上的数据;当SCL为高时,SDA引脚上的数据指示启动或停止状态。如图所示

4e076d8d-43d2-46da-b1ba-349efe199cf0.webp.jpg

Clock and data transmission

② 开始和结束条件:

启动条件是SCL为高的从高到低的SDA,它必须在任何其他命令之前出现。停止条件是从低到高的SDA和SCL高。如图所示,在读取序列之后,停止指令将EEPROM置于待机模式。

c74ac828-c54c-4bd9-a0b9-e47349142b2b.webp.jpg

Start and end conditions

③ 答案:

所有地址和数据字作为8位字不断发送到EEPROM,EEPROM通过发送“0”来确认每个字的接收。如图所示,确认发生在第九个时钟周期。

1b1ae8e4-894d-40fc-bbc0-ab44e376a44a.webp.jpg

Answer

 16a06dbf-92b9-4308-9e82-2eab6d38b8bc.webp.jpg

I2C Version History

额外介绍一下SMBus:

基于I2C的“系统管理总线”由英特尔于1995年推出。(SMBus)。SMBus是一种更严格控制的格式,旨在提高PC主板上支持IC之间的通信可预测性。


SMBus和I2C之间的主要区别在于,SMBus的速度限制为10kHz至100kHz,而I2C可以支持0kHz至5MHz的设备。

 

五设计示例

AT24C256是ATMEL的256kbit串行电可擦除可编程只读存储器,封装在一个8引脚双列直插式设备中,具有较小的结构、大量的存储容量和其他可用于2线总线的功能。将其中四个IC串联连接,以创建具有高容量数据存储要求的数据采集系统。

d1e8bdbd-3b9e-449a-895a-726f16171266.webp.jpg

 AT24C256

可以使用EEPROM存储器设备来接收和传输数据。每个连接到总线的设备都有自己唯一的地址。


当主机访问EEPROM时。它向EEPROM存储器发送启动条件和控制信号,以及翻转数据传输和接收方向的红旗信号。在从EEPROM获得响应信号之后,可以读出相关数据,


六总结


通过上面的例子,我们可以知道I2C的优势主要表现在:


1.硬件电路已被简化。串行数据线(SDA)和串行时钟线是该总线(SCL)中唯一需要的线路。


2.总线上的每个I2C设备都有一个唯一的地址,软件可以使用该地址对其进行寻址。


3.由于总线上可能有许多主I2C设备,因此I2C总线接口协议包括冲突监控和仲裁机制,以防止数据丢失或通信故障。


4.该串行双线双向总线的标准模式为100kbit/s,快速模式为400kbit/s,高速模式为3.4mbit/s。


5.通过I2C设备中的滤波和抗干扰技术来确保数据的完整性。


6.由于连接到总线的设备数量有限,因此总线的容抗不能超过400pF。