USB PROTOCOL

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

://wenku.baidu.com/view/339c456baf1ffc4ffe47aca0.html://wenku.baidu.com/view/57dfded126fff705cc170af8.html的一些基本概念1.管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(StreamPipe)和有格式的信息管道(MessagePipe)。任何USB设备一旦上电就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。2.端点(Endpoint)是USB设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2组端点(2个输入,2个输出),高速和全速设备最多支持15组端点。3.接口(Interface)。应用软件通过和设备之间的数据交换来完成设备的控制和数据传输。通常需要多个管道来完成数据交换,因为同一管道只支持一种类型的数据传输。用在一起来对设备进行控制的若干管道称为设备的接口.4.设备和端点之间关系:一个USB设备可以包括若干个端点,不同的端点以端点编号和方向区分。不同端点可以支持不同的传输类型、访问间隔以及最大数据包大小。除端点0外,所有的端点只支持一个方向的数据传输。端点0是一个特殊的端点,它支持双向的控制传输。管道和端点关联,和关联的端点有相同的属性,如支持的传输类型、最大包长度、传输方向等。5.描述符(Descriptor)描述设备的属性(Attributes).它本身是一个数据结构,第一个字节表示描述符的大小(字节数),第二个字节表示描述符的类型(Type).描述符的种类有:1)设备描述符(Device),描述一个设备的一般信息.2)设备修饰描述符(Device_Qualifier),描述一个高速设备在其它速度下该如何变化的信息.3)配置描述符(Configuration),描述一个特定的设备配置,如接口的数目等.一个USB设备有一个或多个配置描述符.每个配置有一个或多个接口并且每个接口有0个或多个端点.4)其它速度配置描述符(Other_speed_configuration),描述高速设备在其它可能的速度下的一个配置.5)接口描述符(Interface),描述一种配置中的一个特定的接口.6)端点描述符(Endpoint),描述主机需要的去决定端点所需带宽的信息.这个描述符只能附加在GetDescriptor()或GetDescriptor()请求中传送,不能单独传送.端点0没有此描述符.7)字符串描述符(String),第0个字符串描述符指定设备支持的语言,其它的描述符则各包含一个UNICODE字符串.设备描述符,配置描述符和接口描述符可能会包含字符串描述符.6.USB设备请求(USBDeviceRequest)请求是从主机通过控制管道发送到设备.标准的设备请求有:1)ClearFeature2)GetConfiguration3)GetDescriptor4)GetInterface5)GetStatus6)SetAddress7)SetConfiguration8)SetDescriptor9)SetFeature10)SetInterface11)SynchFrameUSB3.0系统拓扑结构系统是最多只能有7层的树状结构最多只能支持127个设备和HubHost+RootHub永远是在第一层复合(Compound)设备一般占两层功能设备不能作为非叶节点,只有Hub才可以USB3.0Hub其实包含了一个USB2的Hub和一个SuperSpeedHubUSB3.0的重要特性:1.增加了一个重要的数据传输速率2.点对点方式传输包,使活动链路数目达到最少3.异步方式的通知功能,去除了轮询方式的必要4.基于链路级的电源管理,这是总线结构的基础设计5.向后兼容USB2.0,驱动级和物理层级别上都达到了兼容的目的USB3.0与USB2.0的区别1.数据传输速率,3.0是SuperSpeed5.0Gbps,2.0是1.5Mbps,12Mbps或480Mbps2.数据接口,3.0是全双工,独立于USB2.0信号的四路差分信号,支持同时双向数据传输2.0是半双工,双路差分信号,单向数据传输,需要事先协商好总路线的传输方向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是和USB2.0差不多,只是未配置的电源有50%的增幅,已配置的电源有80%的增幅7.主机控制器,3.0用的是xHCI,2.0则是EHCI。xHCI中提供了虚拟化技术支持。USB3.0电源状态1.U0,Linkactive2.U1,Linkidle-fastexit.退出延时us级3.U2,Linkidle-slowexit.退出延时us-ms级4.U3,Linksuspend.无时钟信号,退出延时us-ms级USB3.0数据包类型1.LinkManagementPackets,链路管理包,仅发生在两个相连的端口之间,主要是用来进行链路管理2.TransactionPackets,事务包,发生在设备和主机之间,用来控制数据包的流量,配置设备和Hubs.它没有数据3.DataPackets,数据包,发生在设备和主机之间.它包括两部分:包头和实际数据.其中数据部分还包括一个32位的CRC校验码来保证数据的完整性.4.IsochronousTimestampPackets,同步时间戳包,它是唯一的多播方式发送的.发送方向是从主机到所有U0状态的设备.USB传输类型1.控制传输(ControlTransfers)控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST到Device的SETUP事务传输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT传输表明请求是否成功完成。控制传输通过控制管道在应用软件和Device的控制端点之间进行,控制传输过程中传输的数据是有格式定义的,USB设备或主机可根据格式定义解析获得的数据含义。其他三种传输类型都没有格式定义。控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为8;全速设备可以是8或16或32或64。2.批量传输(BulkTransfers)批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。低速USB设备不支持批量传输,高速批量端点的最大包长度为512,全速批量端点的最大包长度可以为8、16、32、64。批量传输在访问USB总线时,相对其他传输类型具有最低的优先级,USBHOST总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。高速的批量端点必须支持PING操作,向主机报告端点的状态,NYET表示否定应答,没有准备好接收下一个数据包,ACK表示肯定应答,已经准备好接收下一个数据包。3.中断传输(InterruptTransfers)中断传输是一种轮询的传输方式,是一种单向的传输,HOST通过固定的间隔对中断端点进行查询,若有数据传输或可以接收数据则返回数据或发送数据,否则返回NAK,表示尚未准备好。中断传输的延迟有保证,但并非实时传输,它是一种延迟有限的可靠传输,支持错误重传。对于高速/全速/低速端点,最大包长度分别可以达到1024/64/8Bytes。高速中断传输不得占用超过80%的微帧时间,全速和低速不得超过90%。中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔可以是1~255mS,低速端点为10~255mS,高速端点为(2interval-1)*125uS,其中interval取1到16之间的值。除高速高带宽中断端点外,一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进行三次中断事务传输,传输高达3072字节的数据。4.同步传输(IsochronousTransfers)同步传输是一种实时的、不可靠的传输,不支持错误重发机制。只有高速和全速端点支持同步传输,高速同步端点的最大包长度为1024,低速的为1023。除高速高带宽同步端点外,一个微帧内仅允许一次同步事务传输,高速高带宽端点最多可以在一个微帧内进行三次同步事务传输,传输高达3072字节的数据。全速同步传输不得占用超过80%的帧时间,高速同步传输不得占用超过90%的微帧时间。同步端点的访问也和中断端点一样,有固定的时间间隔限制。在主机控制器和USBHUB之间还有另外一种传输——分离传输(SplitTransaction),它仅在主机控制器和HUB之间执行,通过分离传输,可以允许全速/低速设备连接到高速主机。分离传输对于USB设备来说是透明的、不可见的。USB协议中的基本概念2010年08月15日星期日23:051、端点,位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)。2、帧,时间概念,在USB中,一帧就是1mS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。3、上行、下行:设备到主机为上行,主机到设备为下行。一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置的,至于硬件的实现机制,就不要管它了)。数据在USB线里传送是由低位到高位发送的。USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。一、域是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型:1、同步域(SYNC):八位,值固定为00000001,用于本地时钟与输入同步;2、标识域(PID):由四位标识符+四位标识符反码构成,表明包的类型和格式;3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址0000000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址;4、端点域(ENDP):四位,由此可知一个USB设备有的端点数量最大为16个;5、帧号域(FRAM):11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800;6、数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度;7、校验域(CRC),对令牌包和数据包中非PID域进行校验的一种方法。二、包由域构成,有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同,介绍如下:包可分为输入包

1 / 97
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功