发布时间: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可以支持多主、多从总线。
I2C
I2C双线信号
每个I2C总线由两个信号组成:SCL时钟和SDA数据。当前总线主控器始终生成时钟信号。
I2C总线驱动器与UART和SPI不同,是开漏(如果你不知道开漏意味着什么,请谷歌),这意味着它们可以将适当的信号线拉低,但不能将其驱动高。
当没有设备将信号推低时,每条信号线上的上拉电阻器将其返回到高电平。
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之间。
Typical Application
3.每个节点都有一个固定的节点地址。由于I2C总线是双向同步串行系统,总线上的单片机可以作为主节点,其设备地址由软件给出,并保存在总线的地址寄存器中,即主设备的从地址。当在多主总线系统中使用单片机作为从节点时,其从地址是有意义的,从而为总线上的所有外围设备产生标准化的设备地址。
4.I2C总线定时
在I2C接口上传输的每个数据帧的长度为一个字节。然而,一旦总线启动,可以通信的字节数量就没有限制;所需要的只是另一方确认传输的每个字节。发送时首先传输最重要的信息块。每次传输在开始时都有一个开始信号,在结束时都有停止信号。通过在总线传输了一个字节之后操作时钟线,可以停止传输。
① 时钟和数据传输:
外部设备通常用于将SDA引脚拉高。当SCL为低电平时,只能修改SDA引脚上的数据;当SCL为高时,SDA引脚上的数据指示启动或停止状态。如图所示
Clock and data transmission
② 开始和结束条件:
启动条件是SCL为高的从高到低的SDA,它必须在任何其他命令之前出现。停止条件是从低到高的SDA和SCL高。如图所示,在读取序列之后,停止指令将EEPROM置于待机模式。
Start and end conditions
③ 答案:
所有地址和数据字作为8位字不断发送到EEPROM,EEPROM通过发送“0”来确认每个字的接收。如图所示,确认发生在第九个时钟周期。
Answer
I2C Version History
额外介绍一下SMBus:
基于I2C的“系统管理总线”由英特尔于1995年推出。(SMBus)。SMBus是一种更严格控制的格式,旨在提高PC主板上支持IC之间的通信可预测性。
SMBus和I2C之间的主要区别在于,SMBus的速度限制为10kHz至100kHz,而I2C可以支持0kHz至5MHz的设备。
五设计示例
AT24C256是ATMEL的256kbit串行电可擦除可编程只读存储器,封装在一个8引脚双列直插式设备中,具有较小的结构、大量的存储容量和其他可用于2线总线的功能。将其中四个IC串联连接,以创建具有高容量数据存储要求的数据采集系统。
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。