串行总线的选择原则
除了时钟线外,I²C/SMBus还为总线上传输的每个字节提供一个应答位。这使得有效数据速率降低了12%。通信过程开始于一个启动条件,并跟随从器件地址和一个数据方向位(读/写),最后结束于一个停止条件。对于1-Wire系统,首先需要满足网络层的要求(即选择某个特定器件,执行search ROM命令或者广播);接下来发送与特定器件相关的命令代码,该代码同时会影响数据的传输方向(读/写)。
原有I²C和SMBus总线系统的一个突出问题是其有限的7位地址空间。由于可提供超过127种不同器件类型,我们无法根据从器件地址推断器件功能。此外,许多I²C器件还允许用户随意设置1个或多个地址位,以在总线上挂接多个相同器件。这种特性进一步减少了可用的地址空间。解决地址冲突问题的标准做法是将总线系统划分成若干段,某一时刻可在软件控制下激活某个网络段。该网络段需要增加更多硬件,也使应用固件更为复杂。I²C系统不具备网络节点查找或枚举功能,因此很难处理节点数动态变化的系统。这一问题可借助SMBus Specification Version 2.013中的地址分辨率协议得以解决。但是,支持该特性的SMBus器件极为稀少。
SPI和MICROWIRE接口
SPI14和MICROWIRE15 (SPI的子集)均需要为每个从器件提供一条额外的片选线。由于具有片选信号,SPI协议只定义了针对存储器地址和状态寄存器的读/写命令。它不提供应答功能。通常,SPI器件的数据输入和数据输出采用不同的引脚。鉴于数据输出在除了读操作外的任何情况下均为三态(禁止),因此可将两个数据引脚接到一起以构成单根双向数据线。当其它总线系统无法提供所需的功能或需要较高的数据传输速率时,可选用SPI总线,它可以支持2Mbps或更高的速率。SPI和MICROWIRE的不利因素在于产生CS信号的译码逻辑,以寻址某个特定器件。但是不会产生地址冲突问题。和I²C总线一样,不提供节点查找功能。主机无法根据从器件的逻辑地址来推断器件功能,因此很难管理节点动态变化的网络。
RS-485、LVDS、CAN、USB 2.0和FireWire
我们对这些标准进行讨论,以举例说明差分传输的特点。这类总线系统中传输速率最快的两种是FireWire16和USB 2.017,它们采用点对点电气连接。使用先进的节点或集线器,可以构成树状拓扑的虚拟总线,数据包从源发送至端点(USB),或采用对等传输(FireWire),突发数据速率高达480Mbps (USB 2.0)或1600Mbps (FireWire)。尺寸有限的数据包以及接收/缓冲/重发通信机制增加了传输时间,反过来降低了有效的数据吞吐能力。USB的拓扑和协议允许最多连接126个节点,FireWire允许最多63个节点,使用无源电缆时节点间的最大传输距离为4.5m。专为包括PC外设、多媒体、工业控制和航空(仅FireWire)应用而设计,USB和FireWire器件可以带电插入系统(热插拔)。该特性允许网络节点数动态变化。
LVDS18、RS-48519和CAN20可实现挂接主机和从机的总线型结构,甚至可以连接多个主机。这些标准中低压差分信号(LVDS)是速率最快的,如果总线长度不超过10m,可工作在100Mbps速率下。可用的数据速率及吞吐可以更快或更慢,具体取决于网络尺寸。LVDS电气标准专为背板应用而设计,支持热插拔功能,但不包含任何协议。
RS-485也仅定义了电气参数。RS-485定义了负载和每条总线的最大负载数目(32),而不是以节点的形式给出。一个电气节点的负载可以小于1。12m网络距离下的典型数据速率可高达35Mbps,1200m距离下数据速率可达100kbps,这些特性足以满足数据采集和控制应用。RS-485设备的协议通常基于原来设计用于RS-232的部分协议。
与此不同,控制器局域网(CAN)为分布式实时控制定义了通信协议,安全性非常高,专门面向汽车应用和工业自动化领域。数据速率从40m距离下的1Mbps到1000m距离下的50kbps。寻址方式是基于消息的,协议本身对节点数没有任何限制。CAN节点支持热插拔,网络节点数可以动态变化。
结语
在简单、低成本总线系统中,与LIN总线和SensorPath相比,1-Wire系统的从器件可提供最广泛的功能和网络驱动器。I²C和SMBus除了需要数据线和参考地之外,还需要时钟线和VCC电源,当然可供选择的器件功能也非常多。SPI和MICROWIRE需要额外的片选线,但可以提供更高的数据速率。除支持寄生供电和网络节点查找功能外,1-Wire接口和协议还支持热插拔,这一特性通常仅在使用差分信号的高速系统以及SMBus 2.0兼容产品中才提供。iButton®产品是使用极为广泛的热插拔1-Wire器件,热插拔是这类器件的正常工作方式。事实已经证明,1-Wire器件在下列应用中极为有效:
串行总线选择原 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)