2024年5月4日发(作者:)

USB 2.0 规范初探

USB 2.0 规范

USB体系简介

USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度

可达480Mb/S。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,

设备最多可以获得500mA的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)

或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它

们。一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设

备包括主机、HUB以及USB功能设备。

USB体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB

接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG设备。一个

USB系统中仅有一个USB主机;设备包括USB功能设备和USB HUB,最多支持127个设

备;物理连接即指的是USB的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。

一个USB HOST最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使

用,而不能被分配给任何一个设备,因此一个USB HOST最多可以同时支持127个地址,如果一个设

备只占用一个地址,那么可最多支持127个USB设备。在实际的USB体系中,如果要连接127个USB

设备,必须要使用USB HUB,而USB HUB也是需要占用地址的,所以实际可支持的USB功能设备

的数量将小于127。

USB体系采用分层的星型拓扑来连接所有USB设备,如下图所示:

以HOST-ROOT HUB

为起点,最多支持7层

(Tier),也就是说任何一个

USB系统中最多可以允许5

个USB HUB级联。一个复

合设备(Compound Device)

将同时占据两层或更多的

层。

ROOT HUB是一个特殊的USB HUB,它集成在主机控制器里,不占用地址。ROOT HUB不但

实现了普通USB HUB的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介

绍。

“复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备

通过内置的USB HUB组合而成的设备,比如带录音话筒的USB摄像头等。

USB采用轮询的广播机制轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB体

轮询的广播机制

By Hevry Email: @

Page 1 of 17

USB 2.0 规范初探

系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据

包。

USB采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向

或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌

包作出响应。握手包表示了传输的成功与否。

数据包:USB总线上数据传输的最小单位,包括SYNC、数据及EOP三个部分。其中数据的格

式针对不同的包有不同的格式。但都以8位的PID开始。PID指定了数据包的类型(共16种)。令牌

包即指PID为IN/OUT/SETUP的包。

端点(Endpoint):是USB设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传

输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2组端点(2个输入,2个输

出),高速和全速设备最多支持15组端点。

管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的

流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB设备一旦上电就存

在一个信息管道,即默认的控制管道默认的控制管道,

默认的控制管道

USB主机通过该管道来获取设备的描述、配置、状

态,并对设备进行配置。

USB设备连接到HOST时,HOST必须通过默认的控制管道对其进行枚举枚举,完成获得

枚举

其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB设备

的即插即用特性即依赖于此。

枚举:是USB体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含

该子类定义的特殊请求)。通过枚举HOST可以获得设备的基本描述信息,如支持的USB版本、PID、

VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最

大包长度)。HOST根据PID和VID加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的

设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取100mA的电流。

USB体系定义了四种类型的传输,它们是:

控制传输:主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。

中断传输:用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。

批量传输:用于对延迟要求宽松,大量数据的可靠传输,如U盘等。

同步传输:用于对可靠性要求不高的实时数据传输,如摄像头、USB音响等。

注意:中断传输并不意味这传输过程中,设备会先中断

HOST

,继而通知

HOST

启动传输。中断传输

也是

HOST

发起的传输,采用轮询的方式询问设备是否有数据发送,若有则传输数据,否则

NAK

机。

不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务、可

占用USB带宽的限制以及最大包长度有一定的差异。

USB设备通过管道和HOST通信,在默认控制管道上接受并处理以下三种类型的请求:

1. 标准请求:

标准请求

:一共有11个标准请求,如得到设备描述、设置地址、得到配置描述等。

所有USB设备均应支持这些请求。HOST通过标准请求来识别和配置设备。

By Hevry Email: @

Page 2 of 17

USB 2.0 规范初探

2. 类(class)请求:

请求

:USB还定义了若干个子类,如HUB类、大容量存储器类等。不

同的类又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描

述符中可以得到。

3. 厂商请求:

厂商请求

:这部分请求并不是USB规范定义的,而是设备生产商为了实现一定的

功能而自己定义的请求。

USB HUB提供了一种低成本、低复杂度的USB接口扩展方法。HUB的上行PORT面

向HOST,下行PORT面向设备(HUB或功能设备)。在下行PORT上,HUB提供了设备

连接检测和设备移除检测的能力,并给各下行PORT供电。HUB可以单独使能各下行PORT,

不同PORT可以工作在不同的速度等级(高速/全速/低速)。

HUB由HUB重发器(HUB Repeater)、转发器(Transaction Translator)以及HUB控制

器(HUB Controller)三部分组成。HUB Repeater是上行PORT和下行PORT之间的一个协

议控制的开关,它负责高速数据包的重生与分发重生与分发。

重生与分发

HUB控制器负责和HOST的通信,HOST

通过HUB类请求和HUB控制器通讯,获得关于HUB本身和下行PORT的HUB描述符,

进行HUB和下行PORT的监控和管理。转发器提供了从高速和全速/低速通讯的转换能力,

通过HUB可以在高速HOST和全速/低速设备之间进行匹配。HUB在硬件上支持Reset、

Resume、Suspend。

重生与分发:指的是HUB Repeater需要识别从上行(下行)PORT上接收到的数据,并分发到

下行(上行)PORT。所谓分发主要是指从上行PORT接收到的数据包需要向所有使能的高速下行PORT

发送,即广播。

USB HOST在USB体系中负责设备连接/移除的检测、HOST和设备之间控制流和数据

流的管理、传输状态的收集、总线电源的供给。

USB数据流模型

USB体系在实现时采用分层的结构,如下图所示:

在HSOT端,应用软件(Client

SW)不能直接访问USB总线,而

必须通过USB系统软件和USB主机

控制器来访问USB总线,在USB

总线上和USB设备进行通讯。从逻

辑上可以分为功能层、设备层和总

线接口层三个层次。其中功能层完

成功能级的描述、定义和行为;设

备级则完成从功能级到传输级的转

换,把一次功能级的行为转换为一

次一次的基本传输;USB总线接口

层则处理总线上的Bit流,完成数据

传输的物理层实现和总线管理。途

中黑色箭头代表真实的数据流,灰

色箭头代表逻辑上的通讯。

By Hevry Email: @

Page 3 of 17

USB 2.0 规范初探

物理上,USB设备通过分层的星型总线连接到HOST,但在逻辑上HUB是透明的,各

USB设备和HOST直接连接,和HOST上的应用软件形成一对一的关系。如下图所示:

各应用软件-功能设备对之间的通讯相互独

立,应用软件通过USB设备驱动程序(USBD)发

起IRQ请求,请求数据传输。主机控制器驱动

程序(HCD)接收IRQ请求,并解析成为USB

传输和传输事务(Transaction),并对USB系统

中的所有传输事务进行任务排定(因为可能同时

有多个应用软件发起IRQ请求)。主机控制器

(Host Controller)执行排定的传输任务,在同

一条共享的USB总线上进行数据包的传输。如

下图所示。

USB系统中数据的传输,宏观的看来是在

HOST和USB功能设备之间进行;微观的看是

在应用软件的Buffer和USB功能设备的端点之

间进行。一般来说端点都有Buffer,可以认为

USB通讯就是应用软件Buffer和设备端点Buffer

之间的数据交换,交换的通道称为管道。应用软

件通过和设备之间的数据交换来完成设备的控

制和数据传输。通常需要多个管道来完成数据交

换,因为同一管道只支持一种类型的数据传输。

用在一起来对设备进行控制的若干管道称为设

备的接口,这就是端点端点、管道和接口的关系。

端点

、管道和接口的关

口的关

一个USB设备可以包括若干个端点,不同

的端点以端点编号端点编号和方向方向区分。不同端点可以支

端点编号方向

持不同的传输类型、访问间隔以及最大数据包大

小。除端点0外,所有的端点只支持一个方向的

数据传输。端点0是一个特殊的端点,它支持双

向的控制传输。管道和端点关联,和关联的端点

有相同的属性,如支持的传输类型、最大包长度、

传输方向等。

四种传输类型

1. 控制传输:

控制传输是一种可靠的双向双向传输,一次控制传输可分为三个阶段。第一阶段为

双向

从HOST到Device的SETUP事务传输,这个阶段指定了此次控制传输的请求类型;

第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次

IN/OUT传输表明请求是否成功完成。

控制传输通过控制管道在应用软件和Device的控制端点之间进行,控制传输

过程中传输的数据是有格式定义的,USB设备或主机可根据格式定义解析获得的

数据含义。其他三种传输类型都没有格式定义。

By Hevry Email: @

Page 4 of 17

USB 2.0 规范初探

控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于

低速设备该值为8;全速设备可以是8或16或32或64。

最大包长度表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的

最大包长度

Buffer的大小。Buffer越大,单次可接收/发送的数据包越大,反之亦反。当通过一个端点

进行数据传输时,若数据的大小超过该端点的最大包长度时,需要将数据分成若干个数据

包传输,并且要求除最后一个包外,所有的包长度均等于该最大包长度。这也就是说如果

一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据传输结束。

控制传输在访问总线时也受到一些限制,如: