书城工业技术智能仪器设计基础
19100400000023

第23章 通信接口技术(4)

6.4.1.2USB的物理接口和电气特性

USB总线由VBUS(USB电源)、D+(数据)、D-(数据)和GND(USB地)4根线组成,用以传送信号和提供电源。线缆的最大长度不超过5m,USB1.1的传输速率最高为12Mbps(低速外设的标准速率为1.5Mbps,高速外设的标准速率为12Mbps)。

USB外设可以使用计算机里的电源(+5V,500mA),也可外接USB电源。在所有的USB信道之间动态地分配带宽是USB总线的特征之一,这大大提高了USB带宽的利用率。当一台USB外设长时间(3ms以上)不使用时,就处于挂起状态,这时只消耗0.5mA电流。按USB1.0/1.1标准,USB的标准脉冲时钟频率为12MHz,而其总线脉冲时钟为1ms(1kHz),即每隔1msUSB器件应为USB线缆产生1个时钟脉冲序列,这个脉冲序列成为帧开始数据包(SOF)。高速外设长度为每帧12000bit(位),而低速外设长度只有每帧1500bit。1个USB数据包可包含0~1023字节数据。每个数据包的传送都以1个同步字段开始。

6.4.1.3USB系统组成

1.USB系统硬件组成

一个USB系统包括三类硬件设备:USB主机(USB HOST)、USB设备(USBDEVICE)、USB集线器(USB HUB)。

(1)USB HOST在一个系统中,有且仅有一个USB HOST。USB HOST有以下功能:管理USB系统;每秒产生一帧数据;发送配置请求对USB设备进行配置操作;对总线上的错误进行管理和恢复。

(2)USBDEVICE在一个USB系统中,USBDEVICE和USB HUB总数不能超过127个。USBDEVICE接收USB总线上的所有数据包,通过数据包的地址来判断是否为发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过相应USE HOST的数据包与USB HOST进行数据传输。

(3)USB HUB用于设备扩展连接,所有USBDE VICE都连接在USB HUB的端口上。一个USB HOST总与一个根HUB(USB ROOT HUB)相连。USB HUB为其每个端口提供100mA电流设备使用。同时,USB HUB可以通过端口的电气变化诊断出设备的插拔操作,并通过响应USB HOST的数据包把端口状态汇报给USB HOST。一般来说,USB设备与USB HUB间的连线长度不超过5m。USB系统的级联不能超过5级(包括ROOT HUB)。

2.USB系统软件组成

(1)主控制器驱动程序(Host Controller Driver):主控制器驱动程序完成对USB交换的调度,并通过根HUB或其他的USB完成对交换的初始化,在主控制器与USB设备之间建立通信通道。

(2)设备驱动程序:设备驱动程序是用来驱动USB设备的程序,通常由操作系统或USB设备制造商提供。

(3)USB芯片驱动程序:USB芯片驱动程序在设备设置时读取描述寄存器以获取USB设备的特征,并根据这些特征,在请求发生时组织数据传输。

6.4.2USB通信流

USB为主机上的软件和客户的USB功能模块之间的通信提供服务。功能模块会对通信流有不同的要求,需要不同的客户来实现相互作用。通过允许将不同的USB功能模块的不同通信流分离开来,从而提供更好的整体总线利用率。每一个通信流都要使用某一个总线访问来完成客户和功能模块之间的通信,并且终止于设备的某一个端点。设备端点用于区别任意的通信流。

一个USB逻辑设备对整个系统而言就是一个端点的集合。根据其使用的接口,端点可以被分成不同的端点集。接口是对功能的认识。系统软件使用默认管道(与端点0对应)来管理USB设备;而客户软件使用的是管道束(与一个端点集对应)。客户软件要求数据在主机上的缓冲区和USB设备上的端点之间,通过USB总线来移动。主控制器(或依赖于传送方向的USB设备)对数据进行分组,然后通过USB来传送。当使用总线访问来实现USB上的数据传输时,主控制器也会协同工作。

主机上的软件通过一系列的通信流来与逻辑设备进行通信。这一系列的通信流由设备设计者来选择,从而使设备的通信要求与USB提供的传输特性更有效地匹配。

1.设备端点

端点是一个USB设备惟一可以确认的部分,它是主机和设备之间的通信流终点。每一个USB逻辑设备都包含了一个相当独立的进行操作的端点集合。软件只能通过一个或多个端点与一个USB设备通信。在设备接入时,每一个逻辑设备都有一个由系统分配的惟一地址。而一个设备上的任一个端点都有一个由设备确定的惟一的标识和端点号。利用设备的地址和端点号就可以惟一地指定任一端点。

(1)0端点所有的USB设备都要拥有端点0,它总是在设备一经接入和上电时就进行配置。该端点用于对一个逻辑设备进行初始化和一般的操作。端点0支持控制传输,通过它访问一般的USB状态和控制操作。

(2)非0端点除了0端点外,功能设备还具有其他端点。低速功能设备有两个端点可供选择;全速设备最多可有16个输入端点和16个输出端点。

2.管道

一个USB管道是设备上的一个端点和主机上的软件的联合体。管道表示经过一个存储器缓冲区和一个设备上的端点,可以在主机和USB设备软件之间传送数据的能力。USB管道分为流管道和消息管道。

(1)流管道流管道在传输数据时对数据分组没有结构的要求。数据在管道中以顺序方式(先进先出方式)进行传输,这种传输通常不是双向的。流管道可以支持批量、同步和中断传输类型。

(2)消息管道消息管道通常以双向方式来与端点进行沟通,要求通信流具有一定的结构。主机先向该USB设备发出请求,请求后面是数据传输的方向,端点会在后来的某一时刻返回一个状态作为响应。消息管道支持控制传输类型,与端点0对应的管道(即默认管道)总是一个消息管道。

6.4.3USB的传输方式

USB传输支持4种数据类型:控制信号流、块数据流、中断数据流和实时数据流。控制数据流的作用是当USB设备加入系统时,USB软件与设备之间建立起控制信号流来发送控制信号,这种数据不允许出错或丢失;块数据流通常用于发送大量数据;中断数据流是用于传送少量随机输入信号,包括事件通知信号、输入字符或坐标等;实时数据流用于传输连续的固定速率的数据,它所需要的带宽与所传输数据的采样率有关。

与USB数据流类型相对应,在USB规范中规定了4种不同的数据传输方式。

(1)控制传输方式。该方式用来处理主机的USB设备的数据传输,包括设备控制指令、设备状态查询及确认命令。当USB设备收到这些数据和命令后,将依据先进先出的原则处理到达的数据。

控制传输是双向的,分为2~3个段,Setup阶段(可有可无)、Data阶段和Status阶段。

在Setup阶段,主机传送命令给设备;在Data阶段,传输Setup阶段所设定的数据;在Status阶段,设备返回确认信号给主机。

USB协议规定每一个USB设备要用端点0来完成控制传送,在USB设备第一次被USB主机检测到时与USB主机交换信息,提供设备配置、对外设设定、传送状态这类双向通信。

(2)批处理方式。批处理可以是单向的,也可以是双向的。该方式用来传输要求正确无误的数据。通常,打印机、扫描仪和数码相机是以这种方式与主机连接。

(3)中断传输方式。中断传输是单向的,且仅输入到主机。该方式传送的数据量很少,但这些数据需要及时处理。此方式主要用于键盘、鼠标以及游戏手柄等外部设备上。

USB的中断是查询(Polling)类型,主机要频繁地请求端点输入。USB设备在满速情况下,其查询周期为1ms~255ms;对于低速情况,查询周期为10ms~255ms。因此,最快的查询频率是1kHz。

(4)等时传输方式。等时传输可以是单向的,也可以是双向的。该方式主要用于传输连续、实时的数据,用于对数的正确性要求不高而对时间极为敏感的外部设备,如麦克风、音箱以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据,在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。

在这4种数据传输方式中,除等时传输方式外,其他3种方式在数据传输发生错误时,都会试图重新发送数据以保证其准确性。

6.4.4USB交换的包格式

USB总线的数据传输交换是通过包来实现的,包是组成USB交换的基本单位。USB总线的每一次交换至少需要3个包才能完成。USB设备之间问题首先由主机发出标志(令牌)包开始。标志包中含有设备地址码、端点号、传输方向和传输类型等信息。其次是数据源向数据目的地发送数据包或者发送无数据传送的指示信息。在一次交换中,数据包可以携带的数据最多为1024bit。最后是数据接收方向数据发送方回送一个握手包,提供数据是否正常发送出去的反馈信息,如果有错误,则重发。除了等时传输外,其他传输类型都需要握手包。可见,包就是用来产生所有的USB交换的机制,也是USB数据传输的基本方式。在这种传输方式下,几个不同目标的包可以组合在一起,共享总线,且不占用IRQ线,也不需要占用I/O地址空间,节约了系统资源,提高了性能又减少了开销。

包的种类及格式如下:

(1)标志包。USB总线是一种基于标志的总线协议,所以所有的交换都以标志(Token)包为首部。标志包定义了要传输交换的类型,包含包类型域(PID)、地址域(ADDR)、端点域(ENDP)和检查域(CRC)。

SYNC:所有包的开始都是同步(SYNC)域,输入电路利用它来同步,以便有效数据到来时识别,长度为8位。

PID:包类型域,Token包有4种类型,它们是OUT、IN、Setup和SOF。

ADDR:设备地址域,确定包的传输目的地。7位长度,可有128个地址。

ENDP:端点域,确定包是传输到设备的哪个端点。4位长度,一个设备可以有16个端点号。

CRC:检查域,5位长度,用于ADDR域和ENDP域的校验。

标志包有4种类型,分别为帧开始包、接收包、发送包和设置包。

(2)数据包。若主机请求设备发送数据,则送INToken到设备某一端点,设备将以数据(Data)包形式加以响应。若主机请求目标设备接收数据,则送OUTToken到目标设备的某一端点,设备将接收数据包。一个数据包包含PID域、数据域和CRC域3个部分。通过数据包的PID域即能识别DATA0和DATA1两种类型数据包。

(3)握手包。设备使用握手(Handshake)包来报告交换的状态,通过不同类型的握手包可以传送不同的结果报告。握手包由数据的接收方(可能是目标设备,也可能是HUB)发往数据的发送方。等时传输没有握手包。握手包只有一个PID域。握手包有ACK(应答包)、NAK(无应答包)、STALL(挂起包)和NYET(接收设备还没有响应)4种类型。

(4)预告包。当主机希望在低速方式下与低速设备通信时,主机将送预告包作为开始包,然后与低速设备通信。预告包由一个同步序列和一个全速的PID域组成。PID之后,主机必须在低速包传送前延迟4个全速字节时间,以便主HUB打开低速端口并准备接收低速信号。低速设备只支持控制和中断传输,而且交换中携带的数据仅限于8字节。

6.5HART协议

HART协议(Highway Addressable Remote Transducer Protocol)意为“高速可寻址远程传感器通信协议”,它是一种全新概念的工业现场总线。

现场总线技术是为满足工业测控系统的需要而产生的。它是计算机技术、网络技术和控制技术的结晶。根据IEC/ISA的定义,现场总线应是连接智能现场设备和自动化系统的数字式、双向传输、多分支结构的通信网络。现场总线在控制现场要建立一条高可靠性的数据通信线路,来实现各智能传感器之间和智能传感器与工控机之间的数据通信。