双向总线(例如,I 2 C、SMBus 和 LIN)在当今的电子产品中已变得无处不在,部分原因在于它们的简单性。仅使用两条线——数据线和时钟线——多个设备就可以相互通信。根据I 2 C总线规范,多128个设备可以共享相同的数据和时钟线;这是通过在每个设备上使用外部上拉电阻和开漏驱动器来实现的。如果没有设备在传输 0,则总线自然会被上拉电阻拉到 1。但是,总线上的任何设备都可以将其拉为 0。
本文引用地址:双向总线介绍
双向总线(例如,I 2 C、SMBus 和 LIN)在当今的电子产品中已变得无处不在,部分原因在于它们的简单性。仅使用两条线——数据线和时钟线——多个设备就可以相互通信。根据I 2 C总线规范,多128个设备可以共享相同的数据和时钟线;这是通过在每个设备上使用外部上拉电阻和开漏驱动器来实现的。如果没有设备在传输 0,则总线自然会被上拉电阻拉到 1。但是,总线上的任何设备都可以将其拉为 0。
允许总线master随时驱动总线,slave在一定时间内响应总线master的查询
收到查询后。在多主机场景中,充当总线主机的各个设备需要执行自己的总线仲裁。希望断言对总线的控制的总线主机需要通过将其拉至 0 来对其进行测试;这会通知其他主设备正在使用总线。
为什么拆分双向总线?
I 2 C 总线规范 [1] 包含一个参考电路,允许将其分为输入和输出对。出于多种原因需要此配置。首先,在安全、噪声和接地问题的情况下,分离总线可用于光学隔离总线主机和从机(图 1 )。此外,可以通过放大分离总线(图 2)或用执行媒体转换的电路替换放大器来实现性能提升。这可以增加总线的工作距离,并通过减少电容来提高性能。随着电容下降,信号时间常数 t 将由上拉电阻决定。
图 1 双向总线隔离
图2 双向总线中继器
对于那些设计双向总线控制器的人,可以使用总线拆分技术进行调试。双向协议的典型调试变得困难,因为行为不当的控制器可能将总线拉到 0,而另一个控制器正在断言对总线的控制。这种情况使得在不知道每个设备控制器的内部状态的情况下不可能识别总线上的传输设备。然而,通过监控图 2中的 /gateB1 和 /gateA2 线路, 可以仅使用标准实验室设备和调试技术来识别传输设备和总线的任何同时断言。
总线拆分技术可用于将支持 I 2 C 的设备连接到另一个没有 I 2 C 控制器的设备。在这种情况下,分离总线可以连接到其他设备的 GPIO(图 3)。
图 3 连接到 GPIO 的拆分总线
有几个已发布的电路可以拆分双向总线。不幸的是,用于分离总线应用的参考电路要么需要为特定应用专门设计的电路(如 见于已发表的文章),或需要使用传输门的外部控制逻辑(如 I 2C 标准中所示)允许发送器和接收器进行通信,而不会创建导致闩锁的反馈路径。闩锁情况在图 2中很明显,其中 IOA 将总线拉至 0 迫使 IOB 通过 /gateB1 拉至 0,然后强制 IOA 通过 /gateA2 无限期拉至 0。
本设计理念中介绍的双边仲裁器可以将双向总线拆分为发送和接收对,并以通用方式构建,使其可用于任何拆分总线应用。此外,它不需要外部控制逻辑——总线仅由数据总线的状态控制:
图 4 双边仲裁器使能电路
双边仲裁
图 5中所示的仲裁器由图 4中的交叉耦合使能电路组成,之所以起作用,是因为根据定义,双向总线仅支持半双工通信。在稳定状态下,DATA 总线被上拉电阻 R1 和 R2 拉高,迫使 OUT1 和 OUT2 为 0。这使两个 NMOS FET 都处于截止状态。当IC1拉低DATA时,OUT1变为1,使Q2拉低IC2的DATA总线。同时,OUT1 被馈送到或非门 U2 的输入端,断开从 OUT2 返回到 Q1 的反馈回路。反馈回路的这种中断消除了闭锁条件,使得任何其他控制逻辑都变得不必要,因为个断言其数据线的电路赢得了比赛,并通过或非门阻塞了另一个电路。
图5 双向总线的双边仲裁
图 6 双边仲裁启用总线放大
由于电路的通用性,双边仲裁可应用于任何拆分总线应用。图 6 显示了应用于放大的双边仲裁。通过分别用媒体转换电路或光隔离器替换放大器组件,这可以很容易地扩展到媒体转换和总线隔离。出于调试总线控制器的目的,可以监控放大器之间的线路以帮助识别故障总线控制器。图 7 显示了应用于 I 2 C 到 GPIO 连接的双边仲裁。
图 7 I 2 C 到 GPIO 连接
结论
将双向总线分成发送/接收对有多种原因。从提高性能到启用调试再到隔离,总线分离是一种许多设计人员都曾发现有用的技术。
双边仲裁是一种总线仲裁技术,可实现大多数总线拆分应用。它依赖于双向总线通信的行为来消除对外部控制电路的需求,并且足够通用以用于许多应用程序而不会增加不必要的复杂性。
相关文章