USB通信技术研究

时间:2022-10-03 02:00:46

USB通信技术研究

摘要:讨论了USB通信技术,分析了USB通信协议。画出了USB通信流,给出了USB通信参考模型以及USB设备枚举流程。

关键词:USB;通信技术;协议

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10959-01

1 引言

USB是一种新型、快速、双向、同步传输的并可以热插拔的通用串行数据传输总线 [1],它具有以下优点:

(1)使用简单:所用USB系统的接口一致,连线简单。USB能智能识别USB链上设备的插入或拆卸,系统可对设备进行自动检测和配置,支持热插拔。新添加设备系统不需要重新启动。

(2)应用范围广:USB系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种传输方式。一个USB系统可同时支持不同速率的设备,最多可支持127个物理设备。USB设备的带宽可从低速的1.5Mbps、全速的12Mbps到高速的480Mbps,比一般的串口快100倍以上。

(3)纠错能力较强:在USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。

(4)总线供电:USB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流。USB设备也可采用自供电方式。

(5)成本低:USB接口电路简单,易于实现,特别是低速设备。USB系统接口/电缆也比较简单,成本比串口/并口低。[2]

随着各种类型USB的产品陆续推出,USB通信的优点越来越明显,得到了日益广泛的应用。如:除能够连接键盘、鼠标、各类打印机、扫描仪、数码相机、ISDN、电话系统、数字音响、高速磁盘等设备,还可用于手机通用充电器。

2 USB通信参考模型和USB通信流

2.1 USB通信参考模型

USB通信参考模型如图1所示,主要由客户软件、USB系统软件、USB主机控制器、主机控制器的驱动程序、USB驱动程序五个模块构成:

(1)客户软件:为一个特定的USB设备而在主机上运行的软件。这种软件由USB设备的提供者提供,或由操作系统提供。客户软件通过对USB驱动程序界面发出调用和响应调用的IRP请求,消费从应用端点来的数据或生产到消费端点去的数据。

(2)USB系统软件:由USB驱动程序、主机控制器的驱动程序、主机软件集合而成。此软件用于在特定的操作系统中支持USB,它由操作系统提供。与具体的USB设备无关,独立于客户软件。

(3)USB主机控制器:总线在主机方面的接口,具有一个内集成的集线器(根集线器)提供与USB电缆的连接,是软件和硬件的总和。用于支持USB设备通过USB连到主机上。主机控制器为每个事务在总线上通过包传送数据。

(4)主机控制器的驱动程序:位于USB主机控制器与USB系统软件之间。将IRP转换成事务或将事务转换成IRP(按照主机控制器的要求),并对它们进行组织,以使主机控制器进行操作。

(5)USB驱动程序:USB系统软件与客户软件之间的接口,给客户软件提供一些方便的使用USB设备的功能。

图1 USB通信参考模型

2.2 USB通信流

USB是为主机软件和它的USB应用设备间的通信服务的,对于客户与应用间不同的交互,USB设备对数据流有不同的要求。USB为此提供了更好的overall总线使用,它允许各种不同的数据流相互独立地进入一个USB设备。每种通信流都采取了某种总线访问方法来完成主机上的软件与设备之间的通信。每个通信都在设备上的某个端点结束。不同设备的不同端点用于区分不同的通信流。

一个USB逻辑设备对USB系统来说就是一个端点集合。端点可以根据它们实现的接口来分类。USB系统软件通过一个缺省的控制通道来管理设备。而客户软件用通道束管理接口。通道束的一端为端点,一端为缓冲区。客户软件要求通信数据在主机上的一个缓冲区和USB设备上的一个端点之间进行。主机控制器或USB设备(取决于数据传送方向)将数据打包后在USB上传。由主机控制器协调何时用总线访问在USB上传递的数据。如图2所示的 USB通信流说明了数据如何在主机一侧中的内存缓冲区和设备中的端点中传送。

图2 USB通信流

3 USB通信协议

USB通过通道在主机缓冲区与设备端点间传送数据。在消息通道中传递的数据具有USB定义的格式,它的数据净荷区中包含的数据允许具有设备指定的格式。USB要求任何在通道上传送的数据均被打包,数据的解释工作由客户软件和应用层软件负责。

3.1 包字段格式

所有USB包都从同步字段开始。所有的包都分别有包开始和包结束分隔符。包开始分隔符是同步字段的一部分。所有USB包的同步字段后都紧跟着包标识符(PID),包标识符被分为4个编码组:标记(令牌),数据,握手和专用。表1列出了包标识符类型,编码及其描述。

表1 PID类型

包格式根据端口类型而变化。有4种端口类型:批处理,控制,中断和同步。

批处理事务类型的特点是以错误检测和重试的方式保证主机和功能部件之间的数据的无错发送的能力。批处理事务是由标记,数据和握手包构成的三时相的事务。

当主机准备好了接收批处理数据的时候,它发出输入标记。功能部件通过端口返回数据包,如果不能返回数据,则返回NAK或STALL握手作为应答。NAK表示功能部件暂时不能返回数据,而STALL表示端口永久地被停止,需要USB系统软件干涉。如果主机收到合法的的数据包,则它用ACK握手来应答。如果收到数据时主机检测到错误,它不返回握手包给功能部件。

当主机准备好了传送成批数据的时候,它首先发出一个后跟数据包的输出标记包。如果数据由功能部件无错地接收到,那么它将返回三个握手中的一个:(1)ACK表示数据包无错地接收到,通知主机可以发送下一个包;(2)NAK表示数据被无错地收到,但主机应该重新发送数据。因为数据功能部件处于妨碍它接受数据的暂时的条件(例如缓冲满)中;(3)如果端口被停止,则返回STALL以告诉主机不要重试传输,因为功能部件上有错误条件;如果接收到的数据有CRC或者位填充错,那么不返回任何握手。

控制传送最少有2个事务阶段:建立和状态。控制传送可以有选择性地包括建立和状态阶段之间的数据阶段。在建立阶段里,建立事务用于向功能部件的控制端口传输信息。建立事务在格式上类似于输出,但是使用的是建立而不是输出的PID。建立总是在建立事务的数据时相上使用DATA0 PID。收到建立的功能部件必须接受建立数据并用ACK应答,如果数据被损坏,则丢弃数据且不返回握手。[3]

4 USB设备枚举流程

当外部设备与主机连接时,主机会检测到一个连接条件,就开始进行总线复位。主机首先使用默认地址(地址0)读取设备描述符。设备返回设备描述符后,主机就给设备分配一个地址,使设备从默认状态进入地址状态。在以后的通信中,设备就只对这个地址的信息作出应答。

分配地址之后,主机就用新的地址获取完整的设备描述符。接着主机将依次读取设备的配置描述符、接口描述符和端点描述符。主机读取完描述符后,对设备进行配置,使得设备从地址状态进入配置状态。完配置完成后,设备即可使用。枚举完成,USB接口可以传输数据。

5 小结

作为一种新型、快速、双向、同步传输并可以热插拔的通用串行数据传输总线,USB将得到越来越广泛的应用,研究USB通信技术,将进一步推动各种类型USB产品的开发,具有广泛的应用前景和市场价值。本文讨论了USB通信技术,给出了USB参考模型,画出了USB通信流,分析了USB通信协议。有关USB驱动程序设计,接口设计将在后续论文中阐述。

参考文献:

[1]周立功.USB固件编程与驱动开发[M].北京航空航天大学出版社, 2003: 1-3.

[2]肖踞雄.USB系统结构与应用设计[M].单片机及嵌入式系统应用, 2002(5): 12-14.

[3]Universal Serial Bus Specification, Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, NEC, Philips, Revision 2. 0, April 27, 2000: 1-50.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:“找回”丢失的品牌机驱动光盘 下一篇:C++的this指针和C#的this引用