
1.3.2 板级总线
PC是一个系统,该系统由主板与显卡、网卡、鼠标、键盘、显示器等组成,显卡、网卡与主板的连接是通过PCI总线槽连接的,鼠标、键盘与主板是通过USB接口连接的,显示器是通过HDMI接口与主板连接的。PCI总线槽、USB接口、HDMI接口只是其物理接口形式,PCI、USB、HDMI都有其特定的通信协议标准、电气接口标准、机械接口标准,我们可以把它们都看作一种板级总线。鼠标、键盘、显示器虽然都有外壳,但是这些接口都由其控制板引出,准确地讲,PC是通过主板上的USB接口与鼠标、键盘控制板上的USB接口连接的。
在一个嵌入式系统中,主板和扩展I/O模块(MPU与MCU、MCU与MCU)之间也通过各种板级总线来连接,最常见的I/O设备总线是UART串口和USB,比如键盘、读卡器使用UART串口或USB。显示器/显示屏有HDMI接口,也有USB接口,选择哪种接口的显示器/显示屏取决于主板的处理器支持哪种接口。
在工业控制系统中常用到传感信号采集,比如温/湿度采集、压力采集、视频采集等。许多时候,需要同时采集多路传感器信号,处理器没有那么多接口一一对应地接入这些传感器信号,为此,通常设计一个采集卡,通过总线将该采集卡与工业主板连接,实现多路传感器信号的接入。这些采集卡常用的板级总线有CPCI总线与PC104总线,嵌入式软件设计与这些总线协议相关的工作包括设备驱动开发和应用层协议设计。
1. 串口通信
串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串行通信是指通信的发送端和接收端之间数据信息的传输在单根数据线上,以每次一个二进制的0、1为最小单位将数据逐位进行传输的通信模式。
典型的串口通信使用3根线完成,分别是地线(GND)、发送线(TX)、接收线(RX),如图1-17所示。由于串口通信是异步的,因此端口能够在一根线上发送数据的同时在另一根线上接收数据,实现全双工通信。

图1-17 典型串口通信示意图
串行数据传输的特点是数据传输按位顺序进行,仅需一根传输线即可。与并行通信相比,串行数据传输具有节省传输线、传输距离长、串行通信的通信时钟频率容易提高、抗干扰能力强等优势,但是传输速度比并行通信慢得多。由于串行通信连线少、成本低,因此它在数据采集和控制系统中得到了广泛的应用,产品也多种多样。
使用串行通信时,每个字符都是一次一位传送的,每一位为1或者为0。所以一个字节的传送需要8次,并且从按位低到高依次传送。要正确通过只包含0和1的传输信号想表达的信息,收发双方要事先进行约定。
串口通信最重要的参数是波特率、数据位、停止位和奇偶的校验。波特率是串口通信速率,发送端与接收端的通信速率必须一致。串口通信时,数据的收发以周期为单位来进行,每个周期传输几个二进制位,这个周期就叫作一个通信单元,一个通信单元由起始位+数据位+校验位+停止位组成。对于两个需要进行串口通信的端口,这些参数必须匹配,这也是能够实现串口通信的前提。
(1)波特率
通信速率是指单位时间内传输的信息量,可以用比特率和波特率来表示。比特率是指每秒传输的二进制位数,用bit/s表示。波特率指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位,即:
1波特(B)=1比特(bit)=1位/秒(bit/s)
串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位,即在传送开始前需要设定相同的波特率,这是传送成功的第一步。
波特率不能随意指定,主要是因为通信双方必须事先设定相同的波特率才能成功通信,如果发送方和接收方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定的。常用的波特率是9600或者115 200。
(2)起始位
起始位表示发送方要开始发送一个通信单元,起始位的定义是串口通信标准事先指定的,是由通信线上的电平变化来反映的。
(3)数据位
数据位是一个通信单元中发送的有效信息位,是本次通信真正要发送的有效数据,串口通信一次发送多少位有效数据是可以设定的(一般选择8位数据位,因为通过串口发送的文字信息都是ASCⅡ编码,而ASCⅡ中一个字符刚好编码为8位)。
(4)校验位
校验位用来校验数据位,以防止数据位出错。
(5)停止位
停止位是发送方用来表示本通信单元结束标志的,停止位的定义是串口通信标准事先指定的,由通信线上的电平变化来反映。常见的有1位停止位、1.5位停止位、2位停止位等,通常使用1位停止位。
2. CPCI总线
1995年11月,PCI工业计算机制造者联合会(PICMIG)颁布了Compact PCI规范1.0,1997年推出了CPCI 2.0规范。CPCI总线规范=PCI总线的电气规范+针孔连接器标准(IEC-1076-4-101)+欧洲卡规范(IEC297/IEEE1011.1)。
Compact PCI继续采用PCI局部总线技术,与传统的桌面PCI系统完全兼容。与PCI相比,Compact PCI抛弃了传统的机械结构,改用高可靠的欧洲卡结构,从而改善了散热条件、提高了抗振动冲击能力,符合电磁兼容性的要求,此外,Compact PCI还抛弃了金手指式的互联方式,改用2mm密度的针孔连接器,具有气密性、防腐性,进一步提高了可靠性、增加了负载能力。
Compact PCI总线有以下优点:
1)可热插拔。Compact PCI的背板采用了长、中、短插针结构,其中板选信号IDSEL、BD_SEL#为短针脚,卡片拔出时可提前获知卡片插入/拔出信号。Power和Ground为长针脚,确保可安全带电插入或拔出卡片。另外,Compact PCI制定了热插拔的硬件过程和软件管理接口,保证了卡片热插拔过程的有效性。
2)和桌面PCI系统完全兼容。采用PCI局部总线技术,支持使用PC和工作站的接口芯片。使用Compact PCI能在桌面工作站上开发整个应用,无须任何改变就能将其移到目标环境,极大地缩短了将产品推向市场的时间。
3)散热性能良好。Compact PCI系统为系统中所有发热板卡提供了顺畅的散热路径。冷空气可以随意在板卡间流动,并将热量带走。集成在板卡底部的风扇系统也加速了散热进程。由于良好的机械设计带来了通畅的散热途径,因此Compact PCI系统极少出现散热方面的问题。
4)抗震性强。Compact PCI卡顶端和底部均有导轨支持,可以牢固地固定在机箱上。前面板紧固装置将前面板与周围的机架安全地固定在一起。卡与槽的连接部分通过针孔连接器紧密地连接。由于卡的四面均将其牢牢地固定在其位置上,因此即使在剧烈的冲击和震动场合,也能保证持久连接而不会接触不良。
3. PC/104总线
PC/104是一种工业计算机总线标准。PC/104有两个版本,即8位和16位,分别与PC和PC/AT相对应。PC/104 PLUS则与PCI总线相对应。
PC/104是IEEE 996标准的延伸。第一块PC104产生于1987年,但严格意义的规范说明在1992年才公布,从那以后,对PC104感兴趣的人越来越多,当时就有125个厂家引进PC104规范生产PC104兼容产品。像原来的PC总线一样,PC104一直以一个非法定标准在执行,而不是委员会设计制定的。1992年,IEEE开始着手为PC和PC/AT总线制定一个精简的IEEE P996标准(草稿),PC104作为基本文件被采纳,叫作IEEE P996.1兼容PC嵌入式模块标准。PC104是一种专门为嵌入式控制而定义的工业控制总线。其信号定义和PC/AT基本一致,但电气和机械规范却完全不同,是一种优化的、小型的、堆栈式结构的嵌入式控制系统。
PC104与普通PC总线控制系统的主要区别是:
1)小尺寸结构。标准模块的机械尺寸是3.6in×3.8in,即96mm×90mm。
2)堆栈式连接。去掉总线背板和插板滑道,总线以“针”和“孔”的形式层叠连接,即PC104总线模块之间的总线通过上层的针和下层的孔相互咬合相连,这种层叠封装具有极好的抗震性。
3)轻松总线驱动。减少元件数量和电源消耗,4mA的总线驱动即可使模块正常工作,每个模块能耗为1~2W。
PC104有两个版本,即8位和16位,分别与PC和PC/AT相对应。8位PC104共有64个总线管脚,单列双排插针和插孔,P1有64针,P2有40针,合计104个总线信号,PC104因此得名。当8位模块和16位模块连接时,16位模块必须在8位模块的下面。P2总线连接在8位元模块中是可选的,这样让这些模块无论处于何处都可在堆栈中使用。
PC104 PLUS则与PCI总线相对应。PC104 PLUS是专为PCI总线设计的,可以连接高速外接设备。PC104 PLUS在硬件上通过一个120孔插座,可以实现总线级联。PC104 PLUS包括PCI规范2.1版要求的所有信号。为了向下兼容,PC104 PLUS保持了PC104的所有特性。PC104 PLUS规范包含两种总线标准,即ISA和PCI,所以它像其他PC一样,可以双总线并存。
PC104 PLUS与PC104相比有以下3个特点:
1)相对PC/104连接,增加了第三个连接接口支持PCI总线;
2)改变了组件高度的需求,增加了模块的柔韧性;
3)加入了控制逻辑单元,以满足高速度总线的需求。