24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
公司新闻>
串行通信协议第 6 部...

公司新闻

串行通信协议第 6 部分 - I2C


串行通信协议第 6 部分 - I2C

在串行通信协议系列的下一部分中,我们将研究流行的 I 2 C 协议。这是在前面的文章中我们正在研究一些不同类型的可用串行通信协议的后续文章。这些为在合理短距离内在设备之间传输数据提供了实用的解决方案。典型应用包括通过微控制器从产生数据的外围设备中捕获大量数据。

本系列涵盖了一些比较流行的协议。在本系列的最后,我们将通过查看每个协议的优点和缺点来总结。我们希望您下次想在设计中实现串行通信总线时会发现本系列很有价值

I 2 C(发音为 I-squared-C)代表内部集成电路。简而言之,它是一种单端、同步、多主、多从、封装交换串行通信总线。我们现在将解释这一口的含义。

由于它是同步的,这意味着它有一条时钟线。这种类型的通信协议被微控制器广泛用于短距离传输数据或与设备通信。尽管 I 2 C 是由飞利浦半导体(现为 NXP)发明的,但许多其他制造商生产的 IC I 2 C 通信协议兼容或使用 I 2 C 通信协议。SMBus 是一种基本上与 I 2 C兼容的协议,主要区别在于 SMBus 具有较低的最大频率、超时功能和较低的最大电流 - 因此本文中的讨论也非常适用于 SMBus

I 2 C 总线具有指定为主设备和从设备的设备。主设备是产生时钟信号并启动与从设备通信的设备。从设备是接收时钟信号并在被主设备寻址时做出响应的设备。I 2 C 总线可以是多从,也可以是多主,即一个主设备可以有多个从设备,一个从设备可以有多个主设备:

I2C多从多主接线示例

I 2 C 协议具有三种基本的消息格式类型;每条消息都以 START 信号开始,然后以 STOP 信号结束。在第一种消息格式中,单个消息由主机发送到从机,从机将数据传输到从机。在第二种消息格式中,单个消息由主机发送到从机,从机将数据从从机传输回主机。在最终的组合消息格式中,主设备向一个或多个从设备发送多个读或写命令。每个命令必须包含目标从设备的地址。

I 2 C 总线由两条传输线组成,不包括地线。通常,I 2 C 总线由作为时钟信号的 SCL 线和作为数据信号的 SDA 线组成。时钟线是单向的,从主机到从机。 

这是一种半双工串行通信,即在任一时刻只能向一个方向发送数据,因此主从不能同时发送数据。

带有上拉电阻的 I2C 接线示例

I 2 C 具有漏极开路或集电极开路输出,这意味着驱动器可以将线路拉低但不能将其拉高。总线需要外部上拉电阻将每条线路的空闲状态设置为高电平,即当没有设备将其拉低时:

I2C 主从驱动程序简化的硬件示例

上拉电阻也决定了总线的通信速度,取决于总线的总电容。较高值的上拉电阻将降低通信速率,而较低的电阻值将提供较高的通信速率。内部驱动程序也将显着决定通信速度。更大的(更高的电流能力)驱动器将产生更快的上升和下降时间并增加潜在的通信速率。一个好的经验法则是首先考虑使用值为 4.7 kΩ 的上拉电阻,然后在必要时进行调整。此外,在不需要更高速度的情况下降低通信速率可能是一种很好的做法,因为它可以大大降低电容效应,并且总线的功耗也会更低。但是,电阻值必须介于指定的允许限值之间

不同选择的上拉电阻值的信号示例

还可以使用以下公式计算所需的上拉电阻值:

其中最小电阻值使用以下公式计算:

V CC – I 2 C 高电平(上拉)电压吗
V OL -
I 2 C 驱动器的有效逻辑低电平
I OL -
是拉低逻辑电平所需的驱动器电流(使电容放电)

最大电阻值的计算方法如下:

T r – SCL SDA 线的上升时间
C b –
是每条总线的电容负载

I 2 C 总线的典型参数如下:

此外,下图显示了不同要求如何影响最小和最大上拉电阻限制:

最小和最大的上拉电阻值图表

我们还必须考虑到 I 2 C 总线可以与多个电压电平设备一起使用。例如,您可以通过将上拉电阻连接到 3.3 V 电源,将公共总线连接到 5 V 3.3 V 设备。这将与两种设备类型兼容。但是,在某些情况下,这将不起作用,例如,在同时使用 5 V 1.2 V 设备的情况下。此处,一个设备使用的最高电压 1.2 V 会被另一个设备读取为低电压或未知电压。在这些情况下,逻辑电平转换器是使两种设备类型都能使用公共总线的正确解决方案。

下面是一个示例时间图,显示了 I 2 C 总线上的数据位:

I2C中的数据包示例

在数据传输开始条件 (S) 下,SDA 被拉低,而 SCL 保持高电平

然后 SCL 被拉低,SDA 设置第一个数据位电平,同时保持 SCL 为低。(蓝条)

SLC 保持高电平时采样来自 SDA 的数据。SDA 不得在 SLC 的上升沿和下降沿之间改变状态(绿条)

该过程以设置的比特率重复

最后一位由时钟脉冲设置,在此期间 SDA 被拉低以准备停止位

SCL 上升并跟随 SDA 的上升沿时出现停止条件 (P)

通常,一台主I 2 C 通信设备最多可支持1008 个从设备。然而,这使得硬件设计非常复杂,并且要求 I 2 C 总线以最低速度运行。这是因为很长的传输线的电容增加,使得信号上升和下降时间变慢。高速总线的问题在于,当电容增加太多时,由于信号的上升和下降时间增加,位可能会重叠。

一种解决方案是,如果总线包括太多从设备,可以使用缓冲或多路复用技术将单个长总线分成更小的段。这将有助于将总线段的电容保持在最大允许值以下,甚至允许使用多路复用器将具有相同地址的多个设备分开。

缓冲用于将每个段的电容与其他段隔离,并允许在更长的电线或迹线上使用单独的从站和主站。 

I2C 总线上的缓冲和复用技术

在某些情况下,当从设备需要延迟主设备发送更多数据时,它可能需要将时钟强制为低电平。通常,当从设备在将数据发送到主设备之前需要时间准备数据时,就会发生这种情况。例如,要完成模数转换或 EEPROM 存储命令尚未完成写入非易失性存储器。此操作称为时钟拉伸

对于一个主设备与多个从设备进行通信,需要一种寻址机制。大多数情况下,从设备地址将由被拉低或拉高的设备上的引脚设置。当主设备发送命令时,所有连接到总线的设备都会收到该命令。但是,在每个消息的开头,主设备会发送一组寻址位。结果是只有一个设备会响应该命令,该设备将是该命令所针对的设备。其他从设备将忽略该命令。

有大量可用的 IC 可以使用 I 2 C 总线。这些组件及其应用的一些示例是:

RTC(实时时钟)

低速 DAC(数模转换器)或 ADC(模数转换器)

显示数据通道的色彩平衡设置

改变智能数字扬声器的音量

与外部存储设备通信,例如 EEPROM

控制 OLED LCD 显示器

打开和关闭电源 

请输入搜索关键字

确定