I2C 总线多路复用器

电子说

1.3w人已加入

描述

  在本文中,我们将阐明如何构建可与 I 2 C 线路一起使用的双向 2 位多路复用器电路。如果需要,该电路还具有作为电平转换器工作的额外功能。该设计基于 GreenPAK™ SLG46826V。由于 SDA 和 SCL 线路的双向性,该设计可用于单主或多主 I 2 C 通信。

  该电路是一个双轨 IC,包括构建适合 I 2 C 协议的双向多路复用器电路所需的所有元件。使用此 IC 可实现小尺寸。除了实现 I 2 C 多路复用器电路的小尺寸外,GreenPAK 还能够集成电路所需的振荡器和上拉电阻器。

  该设计针对实际应用进行了优化,可以轻松修改以满足阅读器系统的要求。

  通过将其放置在由 Arduino 板和四个 I 2 C-LCD 屏幕组成的 I 2 C 网络中对其进行了检查,其中每个屏幕包含相同的 I 2 C 地址。在设计的 IC 的帮助下,每个屏幕都被单独写入。

  I 2 C 协议

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

  I 2 C 用于在控制器和一组外围设备之间创建通信网络。它已得到众多电子传感器和执行器的支持,因为它高效且易于布线。I 2 C 总线支持7 位和10 位地址空间设备,由两条信号线组成:SCL 和SDA 线,用于与设备进行通信。SCL 代表“串行时钟”,它承载由主机驱动的时钟信号。SDA 代表“串行数据”,因此主机和从机都可以发送和接收数据。当I 2 C 外设之间没有传输时,SCL 和SDA 线都被上拉到V DD。

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

  系统通常需要为不同的 IC 提供多种不同的电源电压,如今的外围设备通常在 I 2 C 总线和 I 2 C 电平转换器或 I 2 C 总线多路复用器的帮助下连接到微控制器以解决兼容性问题。

多路复用器

图 1:I2C 网络图

  I 2 C 总线多路复用器

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

  I 2 C 总线多路复用器电路是 SCL 和 SDA 总线的双向选择器,设计使用 SLG46826 双轨 IC 构建四通道输出多路复用器电路,如图 2 所示。 SCL 线的双向性,虽然单主系统不需要,但确保拓扑可用于多主配置,其中主主(连接到图 2 的左侧)可以仲裁辅助主(连接到地址上的图 2 的右侧)可以向主 I 2 C 网络发送命令。

多路复用器

图 2:I2C 总线多路复用器 IC 图

  GreenPAK 设计

  设计由两个主要部分组成;SDA 线多路复用器和 SCL 线多路复用器。该电路的关键行为是 SLG46826 的双向引脚和 OE(输出启用)逻辑的配置和灵活性,用于配置特定引脚是输入还是输出。可以在 Dialog 的网站上找到在GreenPAK Designer 软件中创建的完整设计文件。

  SDA 线路多路复用器

  在这部分中,引脚 3 将根据输入 A0 和 A1 的状态连接到引脚 7、13、15、16 之一。这些输入已配置为用作数字输入/输出。输出类型为漏极开路 NMOS,输入上拉至 10 kΩ 电阻。如图 3 所示,NOR 门控制每个引脚的 OE“输出使能”;当 OE 为“低”时,引脚变为连接到 10K 上拉电阻的输入,当 OE 为“高”时,引脚变为输出且为 GND。

多路复用器

图 3:SDA 线路复用器设计

  3 位 LUT7 的输出连接到引脚 3 的 OE,而 3L8 或非门的输出将被多路复用并连接到引脚 7、13、15、16 的 OE。时间延迟块被配置为下降Edge Delay 并因此产生到 NOR 门的时间延迟。2 位解复用器是使用块 3L3、3L4、3L5、2L2 和 2L3 构建的。

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

多路复用器

图 4:引脚 6 属性

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

  MF1 和 MF2 是多功能块,可配置为执行多个功能。在这个设计中,它们被用来产生一个时间延迟,此外,用来制定或非门。每个计数器的“DLY IN”输入连接到或非门输出。

多路复用器

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

  设计事件顺序

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

  要继续处理事件序列,请考虑以下示例:

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

  当主机释放通信总线时,由于现有的上拉电阻,输入变为 HI。然后 HI 传递到 3L8,后者反转信号并将信号低电平传递到引脚 7 的 OE,从而导致引脚将其状态从输出更改为输入。由于上拉电阻处于活动状态,HI 被传递到外部设备,并在下降沿应用时间延迟,以便在接收新值之前为引脚提供足够的时间来改变其 IO 状态。

  SCL 线路多路复用器

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

多路复用器

图 6:SCL 线路复用器设计

多路复用器

表 1:选择输入状态

  SLG46826 具有双电源 V DD和 V DD2,这允许设计添加电平转换作为多路复用器电路的另一个功能。引脚 3、6 和 7 由 V DD供电,而引脚13、15、16、17、18、19和 20 由 V DD2供电。因此,可以将此复用器电路用作通道 1、2、3 的电平转换电路,而无需通道 0。可以从项目信息中选择所需的电压(V DD和 V DD2)。

  电平转换功能

多路复用器

表 2:已实现多路复用器的 GreenPAK 引脚图

  结果

  为确保设计按预期工作,该设计置于真实场景中:控制四个屏幕 (I 2 C-LCD),所有屏幕均具有相同的静态 I 2 C 地址。所有通信都来自一个主设备,在这种情况下,是一个 Arduino 板。已经为 Arduino 板编写了一个程序,它可以作为主机运行,并通过 I 2 C 协议在每个屏幕上打印不同的短语。屏幕通过 I 2 C 多路复用器电路和 Arduino 数字输出在总线上互换,以控制 A0 和 A1。在每个打印指令之前,总线在屏幕之间多路复用。图 7 描述了实施后的屏幕输出。

多路复用器

图 7:实施后的 I2C-LCD 输出


文章来源:eeweb Dialog Semiconductor

 

编辑:ymf

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分