微处理器中常用的集成串行总线就是通用异步接收器传输总线(UART)、串行通信接口(SCI)与通用串行总线(USB)等,这些总线在速度、物理接口要求与通信方法学上都有所不同。
本文详细介绍了嵌入式系统设计的串行总线、驱动器与物理接口的特性,并为总线最优选择提供性能比较与选择建议。
由于在消费类电子产品、计算机外设、汽车与工业应用中增加了嵌入式功能,对低成本、高速与高可靠通信介质的要求也不断增长以满足这些应用,其结果就是越来越多的处理器与控制器用不同类型的总线集成在一起,实现与PC软件、开发系统(如仿真器)或网络中的其它设备进行通信。
目前流行的通信一般采用串行或并行模式,而串行模式应用更广泛。
微处理器中常用的集成串行总线就是通用异步接收器传输总线、串行通信接口、同步外设接口(SPI)、内部集成电路(I2C) 与通用串行总线,以及车用串行总线,包括控制器区域网(CAN)与本地互连网(LIN)。
这些总线在速度、物理接口要求与通信方法学上都有所不同。
本文将对嵌入式系统设计的串行总线、驱动器与物理接口这些要求提供一个总体介绍,为选择最优总线提供指导并给出一个比较图表(表1)。
为了说明方便起见,本文的阐述就是基于微处理器的设计。
串行与并行相比串行相比于并行的主要优点就是要求的线数较少。
例如,用在汽车工业中的LIN串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号与电源。
较少的线意味着所需要的控制器引脚较少。
集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址与数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。
相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。
另外,在PCB板设计中并行总线需要更多的线来与其它外设接口,使PCB板面积更大、更复杂,从而增加了硬件成本。
此外,工程师还可以很容易地将一个新器件加到一个串行网络中去,而且不会影响网络中的其它器件。
例如,可以很容易地去掉总线上旧器件并用新的来替代。
串行总线的故障自诊断与调试也非常简单,可以很容易地跟踪网络中一个有故障的器件并用新器件替换而不会干扰网络。
但另一方面,并行总线比串行速度快。
例如,Rambus公司的“Redwood”总线速度可高达6、4GHz,而最高的串行速度不会超过几个兆赫。
在工业与汽车应用中常用的串行协议1、UARTUART就是一种通用串行数据总线,用于异步通信。
该总线双向通信,可以实现全双工传输与接收。
在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器与其它器件,如EEPROM通信。
a、UART通信UART 首先将接收到的并行数据转换成串行数据来传输。
消息帧从一个低位起始位开始,后面就是7个或8个数据位,一个可用的奇偶位与一个或几个高位停止位。
接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。
如果选择了奇偶,UART就在数据位后面加上奇偶位。
奇偶位可用来帮助错误校验。
在接收过程中,UART从消息帧中去掉起始位与结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。
UART也产生额外的信号来指示发送与接收的状态。
例如,如果产生一个奇偶错误,UART就置位奇偶标志。
b、数据方向与通信速度数据传输可以首先从最低有效位(LSB)开始。
然而,有些UART允许灵活选择先发送最低有效位或最高有效位(MSB)。
微控制器中的UART传送数据的速度范围为每秒几百位到1、5Mb。
例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高达1、1152Mbps。
UART波特率还受发送与接收线对距离(线长度)的影响。
目前,市场上有只支持异步通信与同时支持异步与同步通信的两种硬件可用于UART。
前者就就是UART名字本身的含义,在摩托罗拉微控制器中被称为串行通信接口(SCI);Microchip微控制器中的通用同步异步收发器(USART)与在富士通微控制器中的UART就是后者的两个典型例子。
c、计算机中的UARTUART 就是计算机中串行通信端口的关键部分。
在计算机中,UART相连于产生兼容RS232规范信号的电路。
RS232标准定义逻辑“1”信号相对于地为3到25 伏,而逻辑“0”相对于地为-3到-25伏。
所以,当一个微控制器中的UART 相连于PC时,它需要一个RS232驱动器来转换电平。
2、同步外设接口同步外设接口(SPI)就是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM与显示驱动器之类的慢速外设器件通信。
a、SPI通信该总线通信基于主-从配置。
它有以下4个信号:MOSI:主出/从入MISO:主入/从出SCK:串行时钟SS:从属选择芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。
在SPI 传输中,数据就是同步进行发送与接收的。
数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。
然而,最常用的时钟设置基于时钟极性(CPOL)与时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。
CPOL 与CPHA的设置决定了数据取样的时钟沿。
b、数据方向与通信速度SPI传输串行数据时首先传输最高位。
波特率可以高达5Mbps,具体速度大小取决于SPI硬件。
例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
c、SPI与UART比较SPI通信快于UART通信,两者都可以用在中等速度外设的通信中,例如非易失性EEPROM存储器。
然而,SPI更常用于EEPROM或数模变换器的通信中。
有些UART能支持SPI通信,在这种情况下,会用一个通用IO作为从属选择引脚。
3、I2C总线I2C就是由飞利浦公司开发的双线同步总线。
像SPI一样,该总线可用来与EEPROM、ADC、DAC与LCD这类慢速器件进行通信。
a、I2C通信I2C就是一个半双工、多主总线,该总线网络有一个或几个主控器件与很多个从器件。
信息由两条串行线传输:串行数据线(SDA)与串行时钟线(SCL)。
图1显示了使用两个主控与三个从器件相连接的例子。
网络中的每一个器件都预指定一个7位或10位的地址。
飞利浦会给器件制造商分配地址,也有一个特定的地址用于高速通信,以及一个通用呼叫地址用于与网络中所有器件的通信。
10位寻址的优点就是允许更多的器件(高达1024个)布置在网络中。
然而,总线中器件的数目取决于总线的电容量,必须限制在400pF以内。
主控器件发起数据传送,并提供用于通信的时钟信号。
通信开始于SCL为高电平时SDA由高到低的转换,紧接着就是一个7位或10位的从地址,一个数据方向位(R/W),一个应答位与停止状态。
停止状态定义为在时钟信号为高时数据线电平由低到高的转换。
每一个数据字节长度为8 位,单次传送的字节数并没有限制。
由于I2C就是一个多主总线,因此可能有两个或更多的主控器件同时试图访问总线,在时钟信号为高电平时在总线上置“1”的主控器件赢得总线仲裁。
I2C有三种不同的运行模式:标准、快速与高速模式。
在使用快速与高速模式时,可能某个从属器件不能像主控器件那么快地处理数据。
此时,从属器件会将SCL线拉至低电平来保持总线,这迫使主控器件进入等待状态,直至从属器件准备就绪。
b、数据方向与通信速度数据传输首先从最高位开始。
I2C总线设计用于三种数据传输速度,每个都向下兼容性:低速,数据传输率为0到100kbps;快速,数据传输率可以高达400kbps;高速,数据传输率可以高达3、4Mbps。
c、I2C与SPI比较I2C与SPI都能用于低速器件的通信,而SPI的数据传输速率高于I2C。
此外,SPI 具有一个内在地址功能,不需要设计一个额外的寄存器来测试地址,从而减少软件与硬件的设计开销。
4、控制器区域网络控制器区域网络(CAN)就是一个多主异步串行总线。
由于它具有优良的错误处理机制及可靠的数据传送性能,该总线在汽车工业中非常普遍,在高安全系数要求的医疗行业中也正在得到普及。
CAN最初由德国的Robert Bosch公司开发,提供给汽车电子系统所用的低成本通信总线,现在已经成为国际标准,被采用为高速应用的ISO11898标准与用于低速应用的ISO11519标准。
a、CAN通信当总线空闲时,任何CAN节点都可以开始数据发送。
如果两个或更多的节点同时开始发送,就使用标识符来进行按位仲裁以解决访问冲突。
CAN就是一个广播类型的总线,所有节点都接收总线上的数据,硬件上的过滤机制决定消息就是否提供给该接点用。
b、四种消息帧的类型数据帧:该帧从一个发送器承载数据到一个接收器。
根据CAN规范有两种数据帧格式,它们的唯一本质区别在于标识符的长度:CAN标准帧,也称为CAN2、0A,支持11位长度的标识符;另一个就是CAN扩展帧,也称为CAN2、0B,支持29位长度的标识符。
图2显示了两种规范的CAN数据帧。
远程帧:此帧由一个接收CAN节点发送,用来请求带有远程帧中规定的标识符的数据帧。
错误帧:此帧将任何总线错误通知其它单元,在接收到这个帧时发送器会自动进行消息重发。
超载帧:超载帧由一个忙的CAN节点送出,以请求在前后数据帧之间增加一个额外的延迟。
c、CAN硬件术语基本CAN(Basic CAN)控制器:这就是一种廉价的CAN控制器,具有有限的发送/接收消息缓冲器,以及有限的CAN消息过滤机制。
完全CAN(Full CAN)控制器:完全CAN就是一个高成本、高性能的CAN控制器,具有能缓冲8个或更多消息的缓冲器用于接收与发送。
例如,富士通的集成CAN 微控制器能提供16个消息缓冲器用于接收与发送。
此外,富士通的MB90443微控制器能灵活地将两个CAN控制器的消息缓冲器组合在一个中,以形成能缓冲32个消息的缓冲器。
标准CAN控制器:该CAN控制器能够处理仅有11位标识符的消息。
扩展CAN控制器:该控制器能够处理含有11位与29位标识符的消息。
时间触发CAN(TTCAN)控制器:该CAN控制器根据时间与事件的触发来安排CAN消息,增强了CAN网络的总体性能与行为的确定性。
d、数据方向与通信速度数据字节的传输首先从最高位开始。
一个8位的数据字节能在一次发送中进行传输,最大的CAN总线速度就是1Mbps。
e、CAN在汽车中的应用图3的例子显示了CAN网络就是如何通过富士通的16位CAN微控制器在汽车中应用。
f、物理接口大多数CAN微控制器需要一个外部收发器来连接物理总线。
目前市场上提供以下一些收发器:高速CAN收发器有飞利浦的82C251,TI的SN65/75LBC031,Bosch的CF150,C250,Unitrode的UC5350;低速CAN收发器有飞利浦82C252、TJA1053,西门子TLE 6252G;单线CAN收发器有飞利浦AU5790,英飞凌TLE 6255,Delphi DK166153。