双向总线概述

双向总线(例如I2C, SMBus, LIN)在今天的电子产品中已经变得非常普遍,部分原因是它们非常简单。只需两根线——数据和时钟——多个器件就能彼此进行通信。根据I2C总线规范,最多128个器件可以共享相同的数据和时钟线;实现的方法是使用外部上拉电阻以及每个器件上的开漏驱动器。如果没有器件发送低电平0,总线自然被上拉电阻上拉到高电平1。但是,总线上的任何一个器件都可以把总线拉到低电平0。

总线上的主器件可以在任何时刻驱动总线,从器件需要在收到询问后的一段时间内对总线主器件的询问做出响应。在多主应用场合,作为总线主器件的各个器件要求执行自己的总线仲裁。希望维持对总线控制的主器件要求通过将总线拉到0对总线进行测试;这个动作会提醒其他主器件总线正在使用中。

为什么分割双向总线?

I2C总线规范所包含的参考电路允许将I2C总线分割为输入和输出对。需要这种配置有多个原因。首先,分割总线可以用来以光学的方式隔离总线上的主从器件,用于解决安全、噪声和接地问题(图1)。另外,通过放大分割总线(图2)或用执行介质转换的电路代替放大器,可以提高性能。这种方法不仅可以增加总线的工作距离,而且可以通过减小电容提高总线的性能。随着电容的减小,信号时间常数τ将由上拉电阻主导。

20160703A01

图1:双向总线隔离。

20160703A02

图2:双向总线中继。

对于双向总线控制器的设计人员来说,总线分割技术可以用于调试。典型的双向协议调试难度很大,因为当一个控制器正维持对总线控制的情况下,另一个不正常工作的控制器可能会把总线拉到0。这时候如果不知道每个器件控制器的内部状态,那么就无法识别总线上的发送器件。但是,通过监视图2中的/gateB1和/gateA2线,只需使用标准的实验室设备和调试技术就能识别发送器件和任何并发的总线保持。

最后,总线分割技术还能用来将支持I2C的器件连接到没有I2C控制器的另外一个器件。在这种情况下,分割总线可以连接到其他器件的GPIO端口(图3)。

20160703A03

图3:连接GPIO的分割总线。

有好几种公开发表的电路可以实现双向总线的分割。遗憾的是,分割总线应用的参考电路要么针对特殊应用要求专门设计的电路,要么需要外部控制逻辑(见I2C标准),这种逻辑使用传输门实现发送器与接收器的通信,不会产生可能造成闭锁的反馈路径。这种闭锁条件在图2中很明显,当IOA将总线拉到0时会通过/gateB1迫使将IOB拉到0,这又会无限期地通过/gateA2将IOA拉到0。

本设计实例中提供的双侧仲裁器可以将一条双向总线分割成发送和接收对,并通过正常方式构建起来用于任何分割总线应用。另外,它不需要外部控制逻辑——总线仅受数据总线状态的控制。

20160703A04

图4:双侧仲裁器使能电路。

双侧仲裁

这种仲裁器如图5所示,由图4所示的交叉耦合型使能电路组成。这种仲裁器之所以可行是因为根据定义,双向总线只支持半双工通信。在稳定状态,DATA总线被上拉电阻R1和R2拉到高电平,迫使OUT1和OUT2输出为0,这将使两个NMOSFET同时处于截止状态。当IC1将DATA总线拉低时,OUT1变1,从而使Q2拉低IC2的DATA总线。与此同时,OUT1连接到NOR门U2的输入端,断开从OUT2回到Q2的反馈环路。断开反馈环路可以消除闭锁状态,使得任何其他控制逻辑都没必要使用,因为维持其数据线的第一个电路赢得竞争后,将通过NOR门闭塞其他电路。

20160703A05

图5:双向总线的双侧仲裁。

20160703A06

图6:双侧仲裁可实现总线放大。

鉴于这种电路的自然特性,双侧仲裁可以应用于任何分割总线应用。图6显示了应用到放大应用的双侧仲裁。这种电路很容易扩展到介质转换和总线隔离,只需将放大器元件分别用介质转换电路或光隔离器替代即可。出于总线控制器调试目的,可以通过监视放大器之间的信号线识别出发生故障的总线控制器。图7显示了应用于I2C到GPIO连接的双侧仲裁电路。

20160703A07

图7:I2C到GPIO连接。

本文小结

有诸多理由将双向总线分割成发送/接收对。从提高性能到方便调试到隔离,总线分割是许多设计师最终都会发现很有用的一种技术。

双侧仲裁是一种总线仲裁技术,支持大多数总线分割应用。借助双向总线通信的行为,双侧仲裁不需要外部控制电路,相当简单,足以用于许多应用,不会增加不必要的复杂性。

《电子技术设计》2016年7月刊版权所有,谢绝转载。

20160630000123