usb 2.0 规范摘要

一、usb体系简介

usb是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/s。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。USB2.0被设计成为向下兼容的模式,当有全速(USB1.1)或者低速(USB1.0)设备连接到高速(USB2.0)主机时,主机可以通过分立传输来支持它们。一条USB总线上,可达到的最高传输速度等级由该总线上的最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。

USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机;设备包括USB功能设备和USB HuB,最多支持127个设备;物理连接即指的是USB的传输线。在USB2.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)将同时占据两层或更多的层。

说明:

1。Root HUB是一个特殊的USB HUB,它集成在主机控制器里,不占用地址。Root HUB 不但实现了普通USB HUB的功能,还包括其他一些功能。

2。“复合设备”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的USB HuB组合而成的设备,比如带录音话筒的USB摄像头等。

USB采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB体系中仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。

USB采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包做出响应。握手包表示了传输的成功与否。

说明:

1。数据包:USB总线上的数据传输的最小单位,包括SYNC、数据及EOP三个部分。其中数据的格式针对不同的包有不同的格式。但都以8位的PID开始。PID制定了数据包的类型(共16种)。灵牌包即指PID为IN/OUT/SETUP的包。

2。端点(EndPoint):是USB设备中的可以进行数据收发的最小的单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2组端点(2个输入,2个输出),高速和全速设备最多支持15组端点。

管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(stream Pipe)和有格式的信息管道(Message Pipe)。任何USB设备一旦上电就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。

USB设备连接到HOST时,HOST必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB设备的即插即用特性即依赖于此。

说明:

1。枚举:是USB体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含该子类定义的特殊请求)。通过枚举HOST可以获得设备的基本描述信息,如支持的USB版本、PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最大包长度)。HOST根据PID和VID加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取100mA的电流。

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

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

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

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

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

注意:中断传输并不意味着传输过程中,设备会先中断HOST,继而通知HOST启动传输。中断传输也是HOST发起的传输,采用轮询方式询问河北是否有数据发送,若有则传输数据,否则NAK主机。

不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务可占用USB带宽的限制以及最大包长度有一定的差异。

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

1。标准请求:一共有11个标准请求,如得到设备描述、设置地址、得到配置描述等。所有USB设备均应支持这些请求。HOST通过标准请求来识别和配置设备。

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 Repeator是上行PORT和下行PORT之间的一个协议控制的开关,它负责高速数据包的重生和分发。HUB控制器负责和HOST的通信,HOST通过HUB类请求和HUB控制器通信,获得关于hub本身和下行PORT的hub描述符,进行hub和下行port的监控和管理。转发器提供了从高速和全速/低速通讯的转换能力,通过hub可以在高速host和全速/低速设备之间进行匹配。hub在硬件上支持Reset、Resume、Suspend。

说明:重生与分发:指的是HUB Repeator需要识别从上行(下行)PORT上接收到的数据,并分发到下行(上行)PORT。所谓分发主要是从上行PORT接收到的数据包需要向所有使能的高速下行PORT发送,即广播。

USB HOST在USB体系中负责设备连接/移除的检测、HOST和设备之间控制流和数据流的管理、传输状态的收集、总线电源的供给。

 

二、usb数据流模型

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

在HOST端,应用软件(Client SW)不能直接访问USB总线,而必须通过USB系统软件和USB主机控制器来访问USB总线,在USB总线上和USB设备进行通信。从逻辑上
可以分为功能层、设备层和总线接口层三个层次。其中:

1。功能层完成:功能级的描述、定义和行为;

2。设备级完成从功能级到传输级的转换。把一次功能级的行为转换为一次一次的基本传输;

3。USB总线接口层则处理总线上的Bit流,完成数据传输的物理层实现和总线管理。

图中黑色箭头代表真实的数据流,灰色箭头代表逻辑上的通讯。

物理上,USB设备通过分层的星型总线连接到HOST,但在逻辑上HUB是透明的,各USB设备和HOST直接连接,和HOST上的应用软件形成一对一的关系。USB 系统中数据的传输,宏观的看来是在 HOST 和 USB 功能设备之间进行;微观的看是 在应用软件的 Buffer 和 USB 功能设备的端点之 间进行。一般来说端点都有 Buffer,可以认为 USB 通讯就是应用软件 Buffer 和设备端点 Buffer 之间的数据交换,交换的通道称为管道。应用软 件通过和设备之间的数据交换来完成设备的控 制和数据传输。通常需要多个管道来完成数据交 换,因为同一管道只支持一种类型的数据传输。 用在一起来对设备进行控制的若干管道称为设 备的接口,这就是端点、管道和接口的关系。
传输方向等。

三、usb协议层规范

USB采用little endian字节顺序,在总线上先传输一个字节的最低有效位,最后传输最高有效位,采用NRZI编码,若遇到连续的6个1,要求进行位填充,即插入一个0。

所有的USB包都由SYNC开始,高速包的SYNC宽度为32bit,全速/低速包的SYNC宽度为8bit。实际接收到的SYNC长度由于USB HUB的关系,可能会小于该值。

USB数据包的格式:


PID表示数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacks)以及特殊包4大类,共16种类型的PID。具体定义见英文协议第196页。

对于令牌包来说,PID 之后是 7 位的地址和 4 位的端点号。令牌包没有数据域,以 5 位 的 CRC 校验和结束。SOF 是一类特殊的令牌包,PID 后跟的是 11 位的帧编号。
对于数据包来说,PID 之后直接跟数据域,数据域的长度为 N 字节,数据域后以 16 位的 CRC 校验和结束。

握手包仅有 PID 域,没有数据也没有校验和。

分离传输会用到一类特殊的包,Start-Split 和 Complete-Split 包.

在 Start-Split 和 Complete-Split 包中主要指定了此次分离传输所在的 HUB 的地址和下行 端口编号以及端点类型(控制、中断、批量、同步)。以及此次传输中数据包在整个数据中 的位置(第一个包、中间的包、末尾的包)。

握手包包括 ACK,NAK,STALL 以及 NYET 四种,其中 ACK 表示肯定的应答,成功 的数据传输;NAK 表示否定的应答,失败的数据传输,要求重新传输;STALL 表示功能错 误或端点被设置了 STALL 属性;NYET 表示尚未准备好,要求等待。
数据在 USB 总线上的传输以包为单位,包只能在帧内传输。高速 USB 总线的帧周期为125uS,全速以及低速 USB 总线的帧周期为 1mS。帧的起始由一个特定的包(SOF 包)表 示,帧尾为 EOF。EOF 不是一个包,而是一种电平状态,EOF 期间不允许有数据传输。

四、usb框架

五、usb主机:硬件和软件

六、usb hub 规范

七、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值