飞利浦发明的I2C 总线,是一种简单的双向双线同步串行总线。在连接到总线的设备之间传送数据只需要两根线。
主设备用于打开设备进行传输,并启动总线进行数据传输。此时,任何寻址设备都被视为从设备。总线上,主从、发送和接收数据的关系并不是恒定不变的,但它确实依赖于当时的数据传输方向。如果主机希望向从设备发送数据,则首先寻址从设备,然后主动向从设备传输数据,最后结束数据传输;如果主机希望从从设备接收数据,则主设备首先寻址从设备。然后,主机在终止接收操作之前接收设备发送的数据。在这些条件下。时间时钟由主机产生,数据传输由主机终止。
在 1980 年,开始研发通讯总线,以连接各种低速设备(飞利浦芯片)。
1982年,最初的版本使用100KHz的通信速率,提供7位地址,并将总线上的设备数量限制为112个(有几个保留地址)。
1992年,发布了第一个规范,增加了400kHz的快速模式和扩展的10位地址空间。
1998年,随着技术的进步,对通信速率的要求越来越高,达到了高速的3.4 MHz,后来又升级到5 MHz,并采用差分信号来提高抗噪性。
I2C :内部集成电路,字面意思是集成电路之间,是 I2C 总线的缩写。
I2C只需要两根线,可支持多达1008个从设备进行同步串行通信。
I2C
I2C双线信号
每个I2C 总线由两个信号组成: SCL 时钟和 SDA 数据。本总线主控器在任何时候都产生时钟信号。
I2C总线驱动程序与和spi不同,是开路漏(如果您不知道开漏意味着什么),这意味着他们可以将适当的信号线画得低一些,但不能把它开高。
当没有设备将信号压低时,每个信号线上的上拉电阻将信号恢复到高电平。
I2C信号
信号电平
的I2C 总线信号电平通常在5到3.3伏之间。总线上的设备,如果与这两个级别兼容,就可以直接利用。
如果信号电压相差很大(5V和2.5V),或者电平不兼容,电平转换是必不可少的。
1. 总线容量和驱动能力
由于I2C 总线的外围扩展器件均为 CMOS 器件,且总线具有足够的电流驱动能力,因此总线上扩展节点的数目由电容负载决定,而不是由电流负载能力决定。
总线上的每个实际节点设备在其总线接口处都有一个等效电容。由于类似电容,总线传输会延迟,造成数据传输错误。
总线负载能力通常为400pF,每个I2C设备都有自己的电容值,通常不超过20pF,从中可以估计总线长度和节点数量。由于总线上的每一个外围设备都有一个设备地址,设备地址也限制了总线上外围设备的扩展。
2. I2C总线的电气结构
内部I2C总线接口是一个双向传输电路,如图所示,由于I2C总线是一种双向同步串行总线。因为总线端口的输出具有开漏结构,上拉电阻必须安装在总线上。电源电压、SDA、SCL和总线串联电阻都受到上拉电阻,如需选择,请参阅适用的数据表,其范围通常为4.7K至10K。
典型应用
3. 每个节点都有一个固定的节点地址。
因为I2C总线是一个双向同步串行系统,总线上的一个单片机可以作为主节点,其设备地址由软件给出并保存在总线的地址寄存器中,这被称为主设备的从地址。单片机作为多主总线系统中的从节点时,它的从地址是有意义的,从而使总线上的所有外围设备都有标准化的设备地址。
4. I2C总线定时
在I2C接口上传输的每一帧数据的长度都是一个字节。然而,一旦总线启动,就没有对可以通信的字节数量的限制;所需要的只是另一方确认传输的每个字节。最重要的信息块在发送时首先传输。每次传输在开始时有一个开始信号,在结束时有一个停止信号。通过在总线已经传送了一个字节之后操纵时钟线,可以停止传输。
1.时钟和数据传输:
通常使用外部设备将SDA引脚拉高。当SCL为低电平时,SDA引脚上的数据只能修改;当SCL为高电平时,SDA引脚上的数据表示开始或停止状态。如图所示
时钟和数据传输
2.开始和结束条件:
启动条件是具有SCL高的高到低SDA,它必须出现在任何其他命令之前。停止条件是低到高的SDA和SCL高。停止指令将在读序列后,EEPROM进入待机模式,如图所示。
开始和结束条件
3.回答:
所有的地址和数据字都以 8 位字的形式连续地发送到内存芯片。确认收到每个字,通过发送一个“0.” 如图所示,确认发生在第九时钟周期。
回答
在AT24C256是一个 256kbit 串行电可编程只读存储器从在一个 8 引脚双列直插式设备封装一个小结构,大量的存储容量,以及其他功能,可在 2 线总线利用。将其中四个IC串联起来,创建一个具有大容量数据存储需求的数据采集系统。
AT24C256
通过EEPROM存储器可以接收和传输数据。连接到总线的每个设备都有自己唯一的地址。
当主机访问EEPROM时它将启动状态和控制信号发送到EEPROM存储器,以及红色标志信号来翻转数据传输和接收的方向。在从EEPROM得到响应信号之后,可以读出相关数据,
通过上面的例子,我们可以知道I2C的优势主要表现在:
1. 硬件电路进行了精简。串行数据线(SDA)和串行时钟线是该总线(SCL)中唯一需要的线。
2. 总线上的每个I2C设备都有一个唯一的地址,软件可以用它来寻址。
3. 由于总线上可能有许多主 I2C 设备,I2C 总线接口协议包括冲突监视和仲裁机制,以防止数据丢失或通信故障。
4. 这种串行双线双向总线的标准模式为100k bi t/s,快速模式为400k bi t/s,高速模式为3.4 mbit/s。
5. I2C器件采用滤波和抗干扰技术,保证了数据的完整性。
6. 总线的容抗不能超过400pF,因为连接到它的设备数量是有限的。