USB PROTOCOL.docx
《USB PROTOCOL.docx》由会员分享,可在线阅读,更多相关《USB PROTOCOL.docx(97页珍藏版)》请在三一办公上搜索。
1、USB的一些基本概念1. 管道(Pipe) 是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB 设备一旦上电就存在一个信息管道,即默认的控制管道,USB 主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。2. 端点(Endpoint)是USB 设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2 组端点(2 个输入,2 个输出),高速和全速设备最多支持15 组端点。3. 接口(Interface) 。应用软件
2、通过和设备之间的数据交换来完成设备的控制和数据传输。通常需要多个管道来完成数据交换,因为同一管道只支持一种类型的数据传输。用在一起来对设备进行控制的若干管道称为设备的接口.4. 设备和端点之间关系: 一个USB 设备可以包括若干个端点,不同的端点以端点编号和方向区分。不同端点可以支持不同的传输类型、访问间隔以及最大数据包大小。除端点0 外,所有的端点只支持一个方向的数据传输。端点0 是一个特殊的端点,它支持双向的控制传输。管道和端点关联,和关联的端点有相同的属性,如支持的传输类型、最大包长度、传输方向等。5. 描述符(Descriptor) 描述设备的属性(Attributes). 它本身是一
3、个数据结构, 第一个字节表示描述符的大小(字节数), 第二个字节表示描述符的类型(Type). 描述符的种类有:1) 设备描述符(Device), 描述一个设备的一般信息.2) 设备修饰描述符(Device_Qualifier), 描述一个高速设备在其它速度下该如何变化的信息.3) 配置描述符(Configuration), 描述一个特定的设备配置, 如接口的数目等. 一个USB设备有一个或多个配置描述符. 每个配置有一个或多个接口并且每个接口有0个或多个端点.4) 其它速度配置描述符(Other_speed_configuration), 描述高速设备在其它可能的速度下的一个配置.5) 接口
4、描述符(Interface), 描述一种配置中的一个特定的接口. 6) 端点描述符(Endpoint), 描述主机需要的去决定端点所需带宽的信息. 这个描述符只能附加在GetDescriptor()或GetDescriptor()请求中传送, 不能单独传送. 端点0没有此描述符.7) 字符串描述符(String), 第0个字符串描述符指定设备支持的语言, 其它的描述符则各包含一个UNICODE字符串. 设备描述符, 配置描述符 和 接口描述符可能会包含字符串描述符.6. USB设备请求(USB Device Request) 请求是从主机通过控制管道发送到设备. 标准的设备请求有:1) Cle
5、ar Feature2) Get Configuration3) Get Descriptor4) Get Interface5) Get Status6) Set Address7) Set Configuration8) Set Descriptor9) Set Feature10) Set Interface11) Synch FrameUSB3.0系统拓扑结构系统是最多只能有7层的树状结构最多只能支持127个设备和HubHost+RootHub永远是在第一层复合(Compound)设备一般占两层功能设备不能作为非叶节点, 只有Hub才可以USB3.0 Hub其实包含了一个USB2的Hu
6、b和一个SuperSpeed HubUSB3.0的重要特性: 1. 增加了一个重要的数据传输速率2. 点对点方式传输包, 使活动链路数目达到最少3. 异步方式的通知功能, 去除了轮询方式的必要4. 基于链路级的电源管理, 这是总线结构的基础设计5. 向后兼容USB2.0, 驱动级和物理层级别上都达到了兼容的目的USB3.0与USB2.0的区别1. 数据传输速率, 3.0是SuperSpeed 5.0Gbps, 2.0是 1.5Mbps, 12Mbps或480Mbps2. 数据接口, 3.0是全双工,独立于USB 2.0信号的四路差分信号,支持同时双向数据传输2.0是半双工,双路差分信号, 单向
7、数据传输, 需要事先协商好总路线的传输方向3. 信号线数目, 3.0是4路SuperSpeed数据线, 2路HighSpeed数据线和2路电源及地线2.0是2路LS/FS/HS数据线, 2路电源及地线4. 总线事务协议, 3.0是主机主导的异步方式的传输流量控制, 包传输是能显式地进行路由2.0是主机主导的轮询方式的传输流量控制, 包传输是通过广播方式到所有设备5. 电源管理, 3.0是多级别的链路电源管理, 支持Idle, sleep和suspend状态2.0是在端口级进行管理, 可以在entry/exit上有两种级别的挂机状态6. 总线电源, 3.0是和USB 2.0差不多, 只是未配置的
8、电源有50%的增幅, 已配置的电源有80%的增幅7. 主机控制器,3.0用的是xHCI,2.0则是EHCI。xHCI中提供了虚拟化技术支持。USB3.0电源状态1. U0, Link active2. U1, Link idle - fast exit. 退出延时us级3. U2, Link idle - slow exit. 退出延时us-ms级4. U3, Link suspend. 无时钟信号, 退出延时us-ms级USB3.0数据包类型1. Link Management Packets, 链路管理包, 仅发生在两个相连的端口之间,主要是用来进行链路管理2. Transaction P
9、ackets, 事务包, 发生在设备和主机之间, 用来控制数据包的流量, 配置设备和Hubs. 它没有数据3. Data Packets, 数据包, 发生在设备和主机之间. 它包括两部分:包头和实际数据. 其中数据部分还包括一个32位的CRC校验码来保证数据的完整性.4. Isochronous Timestamp Packets, 同步时间戳包, 它是唯一的多播方式发送的. 发送方向是从主机到所有U0状态的设备.USB传输类型1. 控制传输(Control Transfers)控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST 到Device 的SETUP 事务传
10、输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT 传输表明请求是否成功完成。控制传输通过控制管道在应用软件和Device 的控制端点之间进行,控制传输过程中传输的数据是有格式定义的,USB 设备或主机可根据格式定义解析获得的数据含义。其他三种传输类型都没有格式定义。控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为8;全速设备可以是8 或16 或32 或64。2. 批量传输(Bulk Transfers)批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传
11、输,适合数据量比较大的传输。低速USB 设备不支持批量传输,高速批量端点的最大包长度为512,全速批量端点的最大包长度可以为8、16、32、64。批量传输在访问USB 总线时,相对其他传输类型具有最低的优先级,USB HOST 总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。高速的批量端点必须支持PING 操作,向主机报告端点的状态,NYET 表示否定应答,没有准备好接收下一个数据包,ACK 表示肯定应答,已经准备好接收下一个数据包。3. 中断传输(Interrupt Transfers)中断传输是一种轮询的传输方式,是一种单向的传输,HOST 通过固定的间隔对中断端点进行查询,
12、若有数据传输或可以接收数据则返回数据或发送数据,否则返回NAK,表示尚未准备好。中断传输的延迟有保证,但并非实时传输,它是一种延迟有限的可靠传输,支持错误重传。对于高速/全速/低速端点,最大包长度分别可以达到1024/64/8 Bytes。高速中断传输不得占用超过80%的微帧时间,全速和低速不得超过90%。中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔可以是1255mS,低速端点为10255mS,高速端点为(2interval-1)*125uS,其中interval 取1到16 之间的值。除高速高带宽中断端点外,一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进
13、行三次中断事务传输,传输高达3072 字节的数据。4. 同步传输(Isochronous Transfers)同步传输是一种实时的、不可靠的传输,不支持错误重发机制。只有高速和全速端点支持同步传输,高速同步端点的最大包长度为1024,低速的为1023。除高速高带宽同步端点外,一个微帧内仅允许一次同步事务传输,高速高带宽端点最多可以在一个微帧内进行三次同步事务传输,传输高达3072 字节的数据。全速同步传输不得占用超过80%的帧时间,高速同步传输不得占用超过90%的微帧时间。同步端点的访问也和中断端点一样,有固定的时间间隔限制。在主机控制器和USB HUB 之间还有另外一种传输分离传输(Spli
14、t Transaction),它仅在主机控制器和HUB 之间执行,通过分离传输,可以允许全速/低速设备连接到高速主机。分离传输对于USB 设备来说是透明的、不可见的。USB协议中的基本概念2010年08月15日 星期日 23:051、端点,位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)。2、帧,时间概念,在USB中,一帧就是1mS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。3、上行、下行:设备到主机为上行,主机到设备为下
15、行。 一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置的,至于硬件的实现机制,就不要管它了)。 数据在USB线里传送是由低位到高位发送的。 USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。一、 域是USB数据最小的单位,由若干位组成(至于是多
16、少位由具体的域决定),域可分为七个类型:1、同步域(SYNC):八位,值固定为0000 0001,用于本地时钟与输入同步;2、标识域(PID):由四位标识符+四位标识符反码构成,表明包的类型和格式;3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址;4、端点域(ENDP):四位,由此可知一个USB设备有的端点数量最大为16个;5、帧号域(FRAM):11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800;6、数据域(DATA):长度为01023字节,在不同的传输类型中,数据域的长
17、度各不相同,但必须为整数个字节的长度;7、校验域(CRC),对令牌包和数据包中非PID域进行校验的一种方法。二、包由域构成,有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同,介绍如下:包可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的),其中输入包、输出包和设置包的格式都是一样的:SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)。1、帧起始包的格式:SYNC+PID+11位FRAM+CRC5(五位的校验码)。2、数据包:分为DATA0包和DATA1包,当USB发送数据
18、的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如为:SYNC+PID+01023字节+CRC16 。3、握手包:结构最为简单的包,格式如为:SYNC+PID 。三、事务分为IN事务、OUT事务和SETUP事务三大事务,每一种事务都由令牌包、数据包、握手包构成,每个包的发送有一定的时间先后顺序,因此事务分为三个阶段:1、令牌包阶段:启动一个输入、输出或设置的事务;2、数据包
19、阶段:按输入、输出发送相应的数据;3、握手包阶段:返回数据接收情况,在同步传输的IN和OUT事务中没有这个阶段,这是比较特殊的。 IN事务令牌包阶段:主机发送一个PID为IN的输入包给设备,通知设备要往主机发送数据;数据包阶段:设备根据情况会作出三种应答:(要注意:数据包阶段也不总是传送数据的,根据传输情况还会提前进入握手包阶段) A、设备端点正常,设备往主机里面发出数据包(DATA0与DATA1交替); B、设备正在忙,无法往主机发出数据包就发送NAK无效包,IN事务提前结束; C、相应设备端点被禁止,发送错误包STALL包,事务也就提前结束了,总线进入空闲状态。握手包阶段:主机正确接收到数
20、据之后就会向设备发送ACK包。 OUT事务令牌包阶段:主机发送一个PID为OUT的输出包给设备,通知设备要接收数据;数据包阶段:比较简单,就是主机会设备送数据,DATA0与DATA1交替;握手包阶段:设备根据情况会作出三种反应: A、设备端点接收正确,设备往主机返回ACK,通知主机可以发送新的数据,如果数据包发生了CRC校验错误,将不返回任何握手信息; B、设备正在忙,无法往主机发出数据包就发送NAK无效包,通知主机再次发送数据; C、相应设备端点被禁止,发送错误包STALL包,事务提前结束,总线直接进入空闲状态。 SETUT事务 A、令牌包阶段:主机发送一个PID为SETUP的输出包给设备,
21、通知设备要接收数据; B、数据包阶段:比较简单,就是主机会设备送数据,注意,这里只有一个固定为8个字节的DATA0包,这8个字节的内容就是标准的USB设备请求命令,共有11条; C、握手包阶段:设备接收到主机的命令信息后,返回ACK,此后总线进入空闲状态,并准备下一个传输(在SETUP事务后通常是一个IN或OUT事务构成的传输)。四、传输:传输由OUT、IN、SETUP事务其中的事务构成,传输有四种类型:中断传输、批量传输、同步传输、控制传输,中断传输和批量转输的结构一样,同步传输有最简单的结构,而控制传输是最重要的也是最复杂的传输。1、中断传输:由OUT事务和IN事务构成,用于键盘、鼠标等H
22、ID设备的数据传输中。2、批量传输:由OUT事务和IN事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽,当总线忙时,USB会优先进行其他类型的数据传输,而暂时停止批量转输。3、同步传输:由OUT事务和IN事务构成,有两个特殊地方,第一,在同步传输的IN和OUT事务中是没有返回包阶段的;第二,在数据包阶段所有的数据包都为DATA0 。4、控制传输:最重要的也是最复杂的传输,控制传输由三个阶段构成(初始设置阶段、可选数据阶段、状态信息步骤),每一个阶段可以看成一个的传输,控制传输其实是由三个传输构成的,用来于USB设备初次加接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB PROTOCOL
链接地址:https://www.31ppt.com/p-1938246.html