跳过主要内容

AN-CM-285 I2C总线复用器

内容

术语和定义

2CInter-Integrated电路
SDA串行数据行
sci串行时钟线
附近地区查表
也不一种数字逻辑门,当两个输入值为0时,输出为真(1或高)

参考文献

有关文件及软件,请浏览:

//www.xmece.com/configurable-mixed-signal

下载我们的免费GreenPAK软件设计师(1]以打开。gp文件[2],并查看所提出的电路设计。使用GreenPAK开发工具(3.可以在几分钟内将设计冻结到您自己定制的集成电路中。yabo国际娱乐Dialog Semiconductor提供完整的申请资料库[4],包括设计实例,以及对Dialog IC的功能和模块的解释。

  1. GreenPAK设计软件,《软件下载及用户指南》,Dialog Semiconductoryabo国际娱乐
  2. AN-CM-285 I2C总线复用器GreenPAK设计文件,Dialog半导yabo国际娱乐体
  3. GreenPAK开发工具GreenPAK开发工具网页,对话半导体yabo国际娱乐
  4. GreenPAK应用笔记GreenPAK应用笔记网页,Dialog半导体yabo国际娱乐
  5. SLG46826V, Datasheet, yabo国际娱乐Dialog Semiconductor。

www.i2c.info

作者:Anas Ajaj

介绍

在这个应用笔记中,我们将阐明如何建立一个双向2位mux电路,可以使用I2C线。如果需要的话,该电路还具有作为电平移位器的额外功能。该设计是基于GreenPAK SLG46826V,尽管任何GreenPAK与I2C可以为此目的工作。由于SDA和SCL线的双向性,该设计可用于单主机或多主机I2C通信。

SLG46826V GPAK是一种双轨集成电路,包含了构建适合I的双向多路复用电路所需的所有元件2C协议。使用GPAK IC可以实现小的形状因子。再加上已经很小的尺寸来实现I2C多路复用电路,GreenPAK也能够集成电路所需的振荡器和上拉电阻。

该设计已经为现实世界的应用程序进行了优化,可以很容易地修改以适应读者系统的要求。

通过将它放在一个I中来检验它2C网络由一块Arduino板和四个I组成2C-LCD屏幕,其中每个屏幕包含相同的I2C的地址。在设计好的GreenPAK IC的帮助下,每个屏幕都被单独写入。

2C协议

连接两个或多个设备来发送和接收信息需要一个特殊的通信路径,该路径由发送方和接收方共享的通信协议控制。一种集成电路总线,也称为I2C,是一种非常常见的双向通信总线,使用两条线在设备之间发送串行信息。

2用于在控制器和一组外设之间创建一个通信网络。由于它的高效和易于布线,已经得到了许多电子传感器和执行器的支持。我的2C总线支持7位和10位地址空间设备,由两条信号线组成:SCL和SDA线,用于与设备通信。SCL是“串行时钟”的缩写,它携带由主机驱动的时钟信号。SDA代表“串行数据”,因此主从机可以同时发送和接收数据。当我之间没有transfer2C外围设备,SCL和SDA线都被拉到VDD

我们可以用I连接128个设备2C协议,共享相同的SCL和SDA线路。一个小规模的例子显示在图1

系统通常需要为不同的集成电路提供不同的电源电压,今天的外围设备通常在I的帮助下连接到微控制器上2C bus和I2C电平移位器或I2c总线多路复用器解决兼容性。

图1:我2C网络图

2C总线多路复用器

在我2C网络中的每个设备都必须有一个唯一的不重复地址,才能正确地实现主从机之间的通信,但是当许多传感器和外设被组合在同一总线上时,就可能发生同一个I2C地址分配给多个设备。为了解决这个问题,我们实现了一个独特的多路复用电路,将具有相同地址的从站连接到通信总线,并且我们可以通过轮询输入交换通道。

我的2C总线多路复用电路是用于总线SCL和SDA的双向选择器,设计使用SLG46826双轨IC构建四通道输出多路复用电路,如图所示图2.SCL线的双向性,虽然对单主系统来说不是必需的,但确保了拓扑可以在多主配置中使用,其中主主(附加在图2)可以仲裁是否有备用主机(连接到右边的地址图2)可以向主I发送命令2C网络。

图2:我2C总线多路复用器IC图

GreenPAK设计

本设计主要包括两个部分;SDA线路复用器和SCL线路复用器。该电路的关键特性是SLG46826的双向引脚和OE(输出使能)逻辑的配置和灵活性。OE(输出使能)逻辑可以配置一个特定的引脚是输入还是输出。

SDA线多路复用器

在这一部分,引脚3将连接到一个引脚7,13,15,16基于输入A0和A1的状态。这些输入被配置为数字输入/输出。输出类型是开放漏极NMOS,输入被拉至10 kΩ电阻。见图3NOR门控制每个引脚的OE '输出使能';当OE是“低”,引脚成为一个输入连接到一个10K的上拉电阻,当OE是“高”,引脚成为一个输出,是GND。

图3:SDA线复用器设计

3位LUT7的输出连接引脚3的OE, 3L8 NOR门的输出复用连接引脚7、13、15、16的OE。时间延迟块被配置为操作下降边缘延迟,因此产生一个时间延迟到NOR门。使用3L3、3L4、3L5、2L2和2L3块构建了2位解复用器。

因此,当[A1A0] =[00]时,3L8输出通到引脚7,有源通道为0到3L3,而其余通道的输入被拉至1。当[A1A0] =[01]时,3L8输出通过引脚13到3L4,当[A1A0] =[10]时,输出通过引脚15到3L5,当[A1A0] =[11]时,3L8输出通过两个and门2L3和2L2到引脚16。

图4:Pin 6属性

利用3L0、3L1和3L2模块构建一个2位复用电路;然后它选择一个来自引脚7,13,15,16的输入信号,并将其传递到NOR门,以便稍后传递到引脚3 (SDA)。引脚4和5被配置为连接到下拉电阻的输入端,然后通道0在初始状态为[A0A1] =[00]激活。

MF1和MF2是多功能块,可以配置为执行多个功能。在这个设计中,它们被用来产生一个时间延迟,此外,还用来形成NOR门。每个计数器的dily IN输入连接到NOR门输出。

图5:MF1(多功能块)配置

活动设计顺序:

当总线处于Idle状态(不发送或接收)时,通信引脚被连接到一个上拉电阻(高),所有引脚根据通过到OE的信号处于输入状态。如果其中一个输入接收到LO信号,该信号将通过NOR门传播,在适当的OE上产生HI信号,基于A0A1。这将引脚配置为输出,并因此保持为GND。如果输入返回到HI,将产生一个短时间延迟来保持OE状态,以考虑到引脚从LO到HI(从输入到输出)需要的时间。

要继续处理事件的顺序,请考虑下面这个例子:

初始状态下,总线上没有通信,[A1A0] =[00]。即,所有引脚都是输入,并且由于上拉电阻为输入激活,信号HI从所有输入通过到IC。当引脚3接收到来自master的LO时,信号通到3L8,然后到3位LUT3, 3L3输出也是低的,因为信号低到达引脚7的OE,使得引脚7的状态由输入变为输出。LO信号通过总线SDA0传播到外部设备。

当主电路释放通信总线时,由于现有的上拉电阻,输入变成HI。然后HI传递到3L8,该3L8反转信号,并将信号低传递到引脚7的OE,导致引脚将其状态从输出变为输入。由于上拉电阻是主动的,HI被传递到外部设备,并在下降边缘上施加一个时间延迟,以便在接收新值之前给引脚足够的时间来改变其IO状态。

sci系列多路复用器

与SDA总线的多路复用电路设计一样,设计了另一个SCL总线的多路复用电路,配置引脚6、17、18、19和20作为数字输入/输出,并在引脚上激活内部上拉电阻。因此,信号从主通过引脚6将连接到一个引脚17,18,19和20根据A1和A0。使用3L11、3L12、3L13和2L0块构建一个2位解复用器,使用4L0、3L6和2L1块构建一个2位多路复用器,从而实现双向通信。

图6:SCL线多路复用器设计
表1:选择输入状态
A0
A1
启用通道
0
0
通道0
1
0
通道1
0
1
通道2
1
1
通道3

水平转移特性

SLG46826有双电源VDD和VDD2,这允许设计添加电平移动作为mux电路的另一个特征。引脚3、6和7由V供电DD而引脚13、15、16、17、18、19和20则使用V电源DD2.因此,可以使用这个多路复用电路作为通道1,2,3的电平移动电路,而不需要通道0。期望电压(VDD和VDD2)可从项目信息中选择。

表2:实现的多路复用器GreenPAK引脚图
权力
GreenPAK销
函数
GreenPAKPin
函数
权力
VDD
3.
SDA
7
SDA0
通道0
VDD
VDD
6
sci
17
SCL0
VDD2
13
SDA1
通道1
VDD2
18
SCL1
VDD2
15
SDA2
通道2
VDD2
19
SCL2
VDD2
16
SDA3
通道3
VDD2
20.
SCL3
VDD2

结果

为了确保设计能够像预期的那样工作,我们将设计置于现实场景中:控制四个屏幕(I2C-LCD)都有相同的静态I2C的地址。所有的通信都来自于一个主机,在这个例子中,是一个Arduino板。

我已经为Arduino板编写了一个程序,它可以像主机一样运行,并通过I在每个屏幕上打印出不同的短语2C协议。公车上的屏幕被I互换了2C多路复用电路和Arduino数字输出控制A0和A1。在每个打印指令之前,总线在屏幕之间多路复用。图7描述实现后的屏幕输出。

图7:我2c - lcd实现后的输出

结论

在本应用笔记中,使用SLG46826 IC和GreenPAK设计软件构建了一个2位多路复用电路。用SLG46826也可以很容易地实现level-shift实现。