USB通信协议.ppt

上传人:赵** 文档编号:51605253 上传时间:2022-10-19 格式:PPT 页数:48 大小:412.47KB
返回 下载 相关 举报
USB通信协议.ppt_第1页
第1页 / 共48页
USB通信协议.ppt_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《USB通信协议.ppt》由会员分享,可在线阅读,更多相关《USB通信协议.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目录目录1、USB系统概述1.1USB主机1.2USB设备1.3管道1.4描述符1.5总线枚举2、USB物理特性3、USB数据传输4、USB事务处理4.1USB信息包 4.2USB事务处理(Transaction)5、USB传输类型5.1控制传输5.2块传输5.3中断传输5.4同步传输6、USB设备请求7、USB 枚举过程8、USB2.0接口芯片CY7C680138.1EZ-USB控制传输8.2Cypress提供的开发库 8.3上位机查找USB设备示例典型的USB应用系统组成:一个支持USB的主机,一个或多个带有USB端口的设备以及将设备连接到主机所需要的集线器、连接器和线缆。主机内设置了一个

2、根集线器,提供了主机上的初始附属点。1、USB系统概述 主机定时对集线器的状态进行查询。当一个新设备接入集线器时,主机会检测到集线器的状态改变,主机发出一个命令使该端口有效并对其进行设置。位于这个端口上的设备进行响应,主机收到关于设备的信息,主机的操作系统确定对这个设备使用哪种驱动程序,接着设备被分配一个唯一标识的地址,范围从0127,其中0为所有的设备在没有分配唯一地址时使用的默认地址。主机向它发出内部设置请求,当一个设备从总线上移走时,主机就从其可用资源列表中将这个设备删除。USB3.0主机支持4种速率,2.0主机只支持低速、全速和高速,1.X的主机只支持低速和全速模式(例外情况:On-T

3、he-GO(OTG无主机参与情况下外设直接互连通信)设备以及嵌入式系统中完成其他专属目的的主机,这些设备也许支持访问特殊周边设备所需的速率)1.1USB1.1USB主机主机 USB主机功能需要软件和硬件共同支持,硬件由USB主机控制器和含有一个或多个USB端口的根集线器构成。软件构架可分为:客户软件,USB系统软件,USB总线接口。客户软件负责和USB设备的功能单元进行通信,以实现特定的功能,一般由开发人员自行开发。客户软件不能直接访问USB设备,其与USB设备功能单元的通信必须经过USB系统软件和USB总线接口模块才能实现。客户软件一般包括USB设备驱动程序和界面应用程序。设备驱动程序负责和

4、USB系统软件进行通信。通常,它向USB总线驱动程序发出I/O请求包(IRP)以启动一次USB数据传输,此外,根据传输的方向,它还应提供一个或空或满的数据缓冲区以存储这些数据。界面应用程序负责和USB设备驱动程序进行通讯,以控制USB设备。它是最上层的软件,只能看到向USB设备发送的原始数据和从USB设备接收的最终数据。USB系统软件负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据传输。USB逻辑设备是程序猿与USB设备打交道的部分。USB系统软件分为USB总线驱动程序和USB主控制器驱动程序(操作体统提供)USB总线接口包括主控制器和根集线器两部分。主控制器负责完成主机和USB设备

5、之间数据的实际传输,包括对传输数据进行串行编解码、差错控制等。1.2 USB设备 USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功能单元。这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);USB逻辑设备被USB系统软件看做是一个端点的集合;功能单元被客户软件看做是一个接口的集合。SIE、端点和接口都是USB设备的组成单元。为了更好的描述USB设备特征,USB设备是由一些配置、接口、和端点组成,一个USB设备可以含有一个或多个配置,在每个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。其中,配置和接口是对USB设备功能的抽象,实际的数据传输由端点完成。在使

6、用USB设备前,必须指明其采用的配置和接口,这个步骤一般是在设备接入主机时设备进行自举完成的。USB设备使用各种描述符来说明其设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。他们通常被保存在USB设备的固件程序中。USB设备架构图如下:设备:设备代表一个USB设备,它由一个或多个配置组成。设备描述符用于说明设备的总体信息,并指明其所含的配置的个数。一个USB设备只能有一个设备描述符。配置一个USB设备可以包含一个或多个配置,如USB设备的低功耗模式和高功耗模式可分别对应一个配置。在使用USB设备之前,必须为其选择一个合适的适配器。配置描述符用于说明USB设备中各个配

7、置的特性,如配置含有的接口数等。USB设备的每一个配置都必须有一个配置描述符。接口一个配置可以包含一个或多个接口,如对一个光驱来说,当于用文件传输时使用其大容量存储接口;而当用于播放CD时,使用其音频接口。接口是端点的集合,可以包含一个或多个可替换的设置,用户能够在USB处于配置状态时,改变当前接口所含的个数和特性。接口描述符用于说明USB设备中各个接口的特性,如接口所属的设备类及其子类等。USB设备的每个接口都必须有一个接口描述符。端点端点是USB设备中实际的物理单元,USB数据传输就是在主机和USB设备各个端点之间进行的。每个端点所支持的数据传输方向一般而言也是确定的(或是IN或是OUT)

8、0端点比较特殊,它有数据输入IN和数据输出OUT两个物理单元,且只能支持控制传输。所有USB设备都必须含有一个0端点,用作缺省控制管道。系统软件及时使用该管道和USB逻辑设备进行配置通信的。利用设备地址、端点号和传输方向就可以指定一个端点,并和它进行通信1.3管道USB系统中的数据传输可以认为是在主机软件(USB系统软件和客户软件)和USB设备的各个端点之间的直接进行的。他们之间的连接称为管道。如下图:根据传输数据不同分为流管道与消息管道,流管道不具有USB定义的格式数据流,可用于块传输、中断传输、同步传输,通常是单向的。消息管道具有USB定义的格式,只能用于控制传输。USB设备0号端点所实现

9、的就是一条消息管道。1.4描述符USB采用USB标准描述符说明一个USB设备。这些描述符包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。对于高速设备还包括设备限定描述符和其他速率配置描述符。(1)设备描述符(DeviceDecriptor)用于指出USB设备的总体信息,其内容对该设备中同一传输模式下的所有配置都有效。一个设备只能有一个设备描述符,但是一个设备允许多个配置描述符。(2)配置描述符(ConfigurationDescriPtor)为usB设备的配置指出其配置信息,USB设备的一个配置可以包含一个或者多个接口,且每个接口都可以相互独立工作,所有的USB设备都至少支持

10、一个配置描述符,每个配置都必须有自己的配置描述符。当主机请求配置描述符时,其所有相关的接口描述符和端点描述符都将被返回。(3)接口描述符(hite而ceDescriPtor)用于指定usB设备中各个接口的特性,设备的每个接口都必须有一个描述符。USB设备的接口是一个端点的集合,负责完成设备的特定功能,接口可以包含一个或者多个可替换配置,它们能够在USB设备处于配置状态时,改变当前接口所含端点的个数和特性。USB设备同一配置的各个接口间不能使用相同的端点,但是同一接口的各个可替换配置间可以使用相同的端点。(4)端点描述符(Endpointdescriptor)用于指出usB设备端点的特性,如其所

11、支持的传输类型、传输方向等信息。除端点O外,USB设备的每个端点都必须有一端点描述符。(5)字符串描述符(stringDescriptor)用于保存一些文本信息,它是可选的。在USB设备的其他描述符中,可以含有指向字符串描述符的索引值。(6)设备限定描述符(DevieeQualifierDeseriptor)只适用于高速usB设备,如果高速USB设备既需要高速传输,又需要全速传输,则它必须支持设备限定描述符,以指出另一传输速率下该设备的总体信息。(7)其它速率配置描述符(Other_Speed_Configuration_Descriptor)用于指出高速设备在采用全速传输下的配置信息,其不能

12、用于低冷速USB设备,且主机只有在成功读取USB设备的设备限定描述符后,它才会进一步发出Get_Descriptor(Other_Speed_Configuration_Descriptor)请求。1.5 总线枚举当USB设备接上或者从USB设备移开时,主机启动一个被称作总线枚举的进程,来列举并怜理设备状态的改变,当USB设备接上一个加电端口时,系统采取以下操作:(1)USB设备已连接在下行端口上,集线器通过状态交换管道通知主机此事件。此时,USB设备处于加电状态,它所连接的端口是无效的;(2)主机通过询问集线器标记出某个设备已连接上;(3)主机一旦得知新设备已连上后,发送端口使能及复位命令给

13、此端口;(4)集线器将发向端口的复位信号持续10ms,当复位信号撤消后,端口己经有效,这时USB设备处于缺省状态,并且从总线上可以得到100mA的电流,所有设备寄存器状态已经复位,设备可对缺省地址产生响应;(5)主机给设备分配一个唯一的地址,设备进入地址状态;(6)在USB设备接受地址之前,其缺省控制管道在缺省地址处是可寻址的,主机通过读取设备描述符,决定设备缺省管道的实际数据净负荷大小;(7)主机从设备读取配置信息,从0读到n一1(n为配置个数),此操作需花费几毫秒;(8)基于从设备读取的配置信息及设备如何使用的信息,主机给设备一个配置值,此刻,USB设备处于配置状态,并配置有关的端口,按照

14、配置USB设备就可以从VBUS得到所要求的电量。从设备的角度而言,设备己经准备就绪。当USB设备断开时,集线器同样会通知主机,断开一个设备连接会使得设备所连接的端口无效,一收到断开通知,主机就会更新本地拓扑信息。2、USB的物理特性2.1USB接口USB使用一根屏蔽的4线电缆与设备进行互联。数据传输通过一个差分双绞线进行,这两根线分别表为D+与D-,另外两根是Vcc和Ground,其中Vcc向USB设备供电。使用USB电源的设备称为总线供电设备,而使用自己外部电源的设备叫做自供电设备。从一个设备连回主机,称为上行连接;从主机到设备的连接,称为下行连接。为房主回环的情况发生,上行和下行的端口使用

15、不同的连接器,所以USB在电缆和设备的连接中分别采用了两种类型的连接头。如下图:15A A型连接头型连接头1 23 4B B型连接头型连接头1 12 24 43 3黑黑GroundGround4 4绿绿Data+(D+)Data+(D+)3 3白白Data-(D-)Data-(D-)2 2红红VccVcc1 1缆线颜色缆线颜色信号名称信号名称引脚编号引脚编号3、USB数据传输在USB总线上所有与USB设备功能单元的数据传输都是由客户软件启动的,其传输过程必须经过四个软硬件实体:客户软件、USB总线驱动程序、USB主控制器驱动程序和USB主控制器。下图向下的箭头表示了客户软件向USB设备发送数据

16、的情况,其传输步骤如下:(l)客户软件把要传输的数据放入数据缓冲区,并向USB总线驱动程序发出IRP,以请求数据传输;(2)USB总线驱动程序响应客户软件的IRP,并将其中的数据转化为一个具有USB格式的事务处理,然后将其向下传递;(3)USB主控制器驱动程序负责为这些事务处理建立一系列以帧/小帧为单位的事务列表,并保证其不会超过USB的带宽;(4)USB总线控制器负责读取事务列表,并将其中的事务处理以信息包为单位发送到USB总线上;(5)USB设备接收到这些信息包后,sIE自动将其解包并将数据放入指定端点的接收缓冲区内,由芯片固件对其进行处理。客户软件USB总线驱动程序USB主控制器驱动程序

17、事务队列事务处理事务处理USB主控USBIRPs数据USBD接口HCD接口传输事务处理数据包HW/SW接口4、USB事务处理4.1 USB信息包 在USB协议中,USB的数据传输是由信息包组成,这些信息包组合起来可以构成完整的事务处理。包(packet)是USB系统中信息传送的基本单元,所有数据都是经过打包后在总线上传输的。USB包由五部分组成:同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),格式如下SYNC字段:由8位组成,作为每个数据封包的前导,用来产生同步作用,是USB设备与总线的包传输率同步,它的数值固定为00000001PID

18、字段:用来表示数据封包的类型。包标识符中的校验字段是通过对类型字段的每个位求反码,PID字段如下图所示:信息包的类型如下图:同步字段同步字段(SYNCSYNC)PIDPID字段字段数据字段数据字段CRCCRC字段字段包包结尾字段尾字段(EOPEOP)PID0PID0PID1PID1PID2PID2PID3PID3_PID0PID0_PID1PID1_PID2PID2_PID3PID3封包类型PID名称PID编码意义令牌OUT0001B从主机到设备的数据传输IN1001B从设备到主机的数据传输SOF0101B帧的起始标记与帧码SETUP1101B从主机到设备。表示要控制传输数据DATA00011

19、B偶数数据封包DATA11011B奇数数据封包握手ACK0010B接收器接收无错误的数据封包NAK1010B接收器无法接收数据或发射器无法送出数据STALL1110B端点产生停滞的状况特殊PRE1100B使能下游端口的USB总线的数据传输切换到低速设备数据字段:是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而不同。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,先传输的是字节的最低位,最后传输字节的最高位。(1)设备地址(ADDR)数据域ADDR数据域由7位组成,可用来寻址多达127个外围设备。(2)端点(ENDP)数据域E

20、NDP数据域由4位组成,通过这4位最多可寻址出32个端点。这个ENDP数据域仅用在IN、OUT与SETUP令牌信息包中。对于慢速设备科支持端点0以及端点1作为中断传输模式,而全速设备可以拥有16个输入端点IN,与16个输出端点OUT供32个端点。(3)帧序列号当USB令牌包的PID为SOF时,其数据字段必须为11位的帧序列号。帧序列号由主机产生,且每个数据帧自动加一,最大数值为0X7FF。当帧序列号达到最大数时将自动从0开始循环。(4)数据它存在于DATA信息包中,根据不同的传输类型,拥有不同字节大小,从0到1023字节循环冗余码:根据不同的信息包类型,CRC字段是由不同数目的位所组成。其中重

21、要的数据信息包采用CRC16的数据域(16个位),而其余的信息包类型则采用CRC5的数据域(5个位)。其中的循环冗余校验CRC是一种错误检测技术。由于数据在传输时,有时候会发生错误,因此CRC可根据数据算出一个校验值,然后依次判断数据的正确性。5、包结尾字段即发送方在包的结尾发出包结尾信号。USB主机根据EOP判断数据包的结束。4.2USB事务处理(Transaction)USB事务处理是主机与设备数据通信的基础,一个完整的是事务处理包含三个阶段:令牌阶段:定义了本次传输的类型,用于表征事务处理的开始。令牌阶段由令牌包和EOP构成,这是所有USB事务处理必须包含的阶段。在USB系统中只有主机才

22、能发出令牌包,它定义了数据传输的类型,令牌包中比较重要的是SETUP、IN、OUT这三个令牌包。它们是用来在跟集线器和设备端点之间建立数据传输。一个IN包建立一个从设备到根集线器的是数据传送,一个OUT包用来建立从根集线器到设备的数据传输。令牌包格式:数据阶段:包含了本次传输的数据,数据的大小根据端点和传输类型而定,最大的数据量位1024字节。数据阶段由数据包和EOP构成。数据包含有4个域:SYNC、PID、DATA与CRC16。DATA数据域的位置是根据USB的传输速度与传输类型而定,且必须以8字节为基本单位,若传输数据不足8字节,或传输到最后剩余不足8字节,仍传输8字节的数据域。数据包格式

23、:8 8位位8 8位位7 7位位4 4位位5 5位位SYNCPID_PIDADDRENDPCRC58 8位位8 8位位001616位位SYNCPID_PIDDATACRC16握手阶段:用于数据的接收方向发送方报告此次数据传输是否成功。握手阶段由握手包和EOP构成。握手信息包是最简单的包类型,在这个握手信息包中只含有一个PID数据域而已,格式:在USB上数据信息的一次接收或发送的处理过程称为事务处理。事务处理的类型包括输入(IN)事务处理、输出事务处理、设置事务处理(SETUP)和帧开始、帧结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务处理中,紧接着SETUP和OUT包后面的是DA

24、TA包,DATA0和DATA1包是交替地发送的。在DATA包后面,设备将回应一个握手信号,如果设备 可以接受数据,就回应ACK包,如果设备忙,就回应NAK包,如果设备出错,则回应STALL包;在IN事务中,IN包后面的是设备发来的DATA包或NAK包或STALL包,若设备忙或出错,就发NAK包或STALL包给主机,若设备数据准备发送,则发DATA包,DATA0和DATA1包也是交替的发送的,紧接着DATA包后面是主机发送给设备的握手包,ACK表示主机可以接收数据,NAK包代表主机忙,STALL包代表主机出错。8 8位位8 8位位SYNCPID_PID输入(IN)事务处理:输入事务处理表示USB

25、主机从总线上的某个USB设备接收一个数据包的过程:正常事务处理设备忙时的输入事务处理设备出错时的输入事务处理1.主机设备(令牌)SYNCINADDRENDPCRC5EOP2.设备-主机(数据)SYNCDATA0DATACRC16EOP3.主机-设备(握手)SYNCACK1.主机设备(令牌)SYNCINADDRENDPCRC5EOP3.主机-设备(握手)SYNCNAK1.主机设备(令牌)SYNCINADDRENDPCRC5EOP3.主机-设备(握手)SYNCSTALL输出(OUT)事务处理正常的输出事务处理设备忙时的输出事务处理设备出错时的输出事务处理1.主机设备(令牌)SYNCSYNCOUTO

26、UTADDRADDRENDPENDPCRC5CRC5EOPEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCACK1.主机设备(令牌)SYNCSYNCOUTOUTADDRADDRENDPENDPCRC5CRC5EOPEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCNAK1.主机设备(令牌)SYNCSYNCOUTOUTADDRADDRENDPENDPCRC5CRC5EOPEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCSTALL设置(SETUP)事务

27、处理正常的设置处理设备忙时的设置事务处理设备出错时的设置事务处理1.主机设备(令牌)SYNCSYNCSETUPSETUPADDRADDRENDPENDPCRC5CRC5EOPEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCACK1.主机设备(令牌)SYNCSYNCSETUPSETUPADDRADDRENDPENDPCRC5CRC5EOPEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCNAK1.主机设备(令牌)SYNCSYNCSETUPSETUPADDRADDRENDPENDPCRC5CRC5EO

28、PEOP2.主机设备(数据)SYNCDATA0DATACRC16EOP3.设备-主机(握手)SYNCSTALL5、USB传输类型在USB的传输中,可分为4种传输类型:控制(control)传输、块(bulk)传输、中断(interrupt)传输、同步(isochronous)传输。5.1控制传输:在实际的USB设备中,USB控制传输主要用于USB主机和USB设备之间的配置信息通信,包括设备的地址、设备描述符和接口描述符等。用户也可以自定义操作,用来传输其它用途的数据。在USB协议中,为控制传输保留了一定的总线带宽,所有的USB设备都有控制传输方式。任何USB设备都必须在端点0的默认管道中支持控

29、制传输。USB的系统软件通过该管道来方位USB设备的状态,并对其进行配置。除了端点0之外,其他端点也可以支持控制传输。控制传输分为3中类型:控制读取(读取USB描述符)、控制写入(配置USB设备)以及无数据传输。控制传输分为3个阶段:传输类型型端点端点类型型输出方向出方向所所传输的数据特点的数据特点控制传输控制端点IN和OUT少量数据,无传输时间要求,传输有严格保证块传输块端点IN或OUT大量数据,无传输时间和传输速率要求中断传输中断端点IN或OUT少量或中量数据,由周期要求同步传输同步端点IN或OUT大量数据,数据恒定,由周期性SETUPADDRENDPCRC5Token packetDAT

30、A08bytes Setup DataCRC16Data PacketACKH/S PKT设置阶段阶段一:设置阶段主机从USB设备获取配置信息,并设置设备的配置值。设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手包。阶段二:数据传输阶段 数据传输阶段用来传输与设备之间的数据。控制读取是将数据从设备读取到主机上,读取的数据是USB设备描述符。对每一个数据信心包而言,首先,主机会发送一个IN令牌信息包,表示要读取数据进来。然后,设备将数据通过DATA1数据信息包会传给主机。最后主机响应:当数据已经正确接收时,主机送出ACK令牌信息包;当主机正忙是,发出NAK握

31、手信息包;当发生了错误时,主机发出STALL握手信息包。控制写入是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息。对每一个数据包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去,紧接着,主机将数据通过DATA0数据信息包传送至设备,最后,设备将响应:数据已经确认接收时,设备发送ACK令牌信息包,设备正忙碌时,设备发出NAK握手信息包,当发生了错误,设备发出STALL握手信息包。过程如下图:主机PCIN令牌包DATA1数据包ACK握手包USB设备主机PCOUT令牌包DATA0数据包ACK握手包USB设备 阶段三:状态阶段 状态阶段用来表示整个传输的额过程已经完全结束。状态阶

32、段传输方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段就应为IN令牌封包。对于控制读取而言,主机会送出OUT令牌封包,其后在跟着0长度的DATA1封包。而此时,设备也会做出像对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包。相对的对于控制写入传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作,送出ACK封包、NAK封包或者STALL封包。5.2USB块传输USB块传输只能用于高速或全速USB设备,其适用于传输大量的,且对传输时间和数据传输速率无要求的数据。

33、一般来书适合于打印机和扫描仪类的设备,因为这类设备要求很高的数据正确性,而对传输速率没有太高的要求。在USB块传输中,如果块传输的数据量大于块端点所支持的最大数据包长度,则USB主控制器会把该传输分为多个事务处理。一个完整的USB块事务处理过程包括三个阶段在USB总线协议中,USB使用特有的数据触发机制来保证数据包发送和接收的同步。数据触发机制是通过USB数据触发位和DATA0/DATA1数据包的匹配来实现的,在功能设备上电配置的时候,所有的块端点的数据触发位都被初始化为0,所以在块事务传输中,第一个数据包使用DATA0,第二个数据包使用DATA1,此后交替使用。令牌数据握手OUT(0)OUT

34、(1)OUT(0/1)IN(0/1)IN(1)IN(0)块OUT传输块IN传输DATA0DATA0DATA1DATA1DATA(0/1)DATA(0/1).5.3USB中断传输USB的中断传输可用于低速、全速和高速设备,适用于传输少量或者中量的,且对处理周期由要求的数据。一般来书,USB中断传输适合于鼠标、键盘类的设备,这类设备传输数据量很少,而且要求响应快,具有固定的事务处理周期。在USB协议中,USB中断传输事务处理时单向的。5.4USB同步传输USB的同步传输至能用于高速或全速USB设备,适用于传输大量、速率恒定且对服务周期由要求的数据,一般来说,同步传输适用于音频和视频类设备,如vcd

35、和dvd的视频播放服务。在USB协议中,位同步传输保留了总线带宽,以保证其能在每帧/小帧中都能得到服务。6、USB设备请求 USB设备产品信息和设备能力都在USB设备描述符中进行了定义。USB主机使用设备请求,对这些描述符进行读取和写操作,从而或者改USB设备的能力。在USB协议中规定了标准的USB设备请求,一般来说每个USB功能设备都需要支持。对于USB集线器以及HID设备除了支持标准的设备请求外,还需要支持特定的设备类请求。11种标准的USB设备请求如下:USBUSB请求求USBUSB请求号求号功能描述功能描述GetStatus00H读取USB设备、接口或端点的状态ClearFeature

36、01H清除或禁止USB设备、接口或端点的某些特性SetFeature03H设置或使能USB设备、接口或端点的某些特性SetAddress05H分配USB设备地址GetDescription06H读取设备描述符SetDescription07H更新已有的描述符或添加新的描述符GetConfiguration08H读取USB设备当前的配置值SetConfiguration09H为USB设备选择一个合适的配置GetInterface0AH读取USB指定接口的当前可替换设置值SetInterface0BH为USB指定接口选择一个合适的替换设置SynchFrame0CH读取USB同步端点所指定的帧序号位

37、移量位移量字段字段值大小大小(字(字节)描述描述0bmRequestType1D7-数据传输方向:0-主机至设备,1-设备至主机D6:5-类型:0=标准,1=群组,2=供应商,3=保留D4:0-接收端:0=设备,1=接口,2=端点,3=其它,431=保留1bmRequest1特定请求2wValue2传递一个参数给设备4wIndex2指定一个接口或端点6wLength2如果有数据阶段,该域表示要传输的字节的大小设备请求示例:(1)读取描述符请求(GetDescription)该请求可以取得USB设备中存在的特定描述符,格式如下:bmRequestTypbmRequestType ebmReque

38、stbmRequestwValuewValuewIndexwIndexwLengthwLengthDataData10000000BGET_DESCRIPTOR(06H)描述符类型与描述符指针0或语言ID描述符的长度各个描述符该请求中的wValue的高字节表示要取的描述符类型,低字节表示描述符索引值,描述的类型值:1表示设备描述符,2表示配置描述符,3表示字符串描述符,4表示接口描述符,5表示端点描述符。wIndex的值为0或语言ID;当要取得描述符是字符串描述符时,该域的值为语言ID;当为其他的描述符时,该域位0,wLength表示要返回的数据长度,如果SETUP阶段的地址使用的是预设地址0

39、(ENDP字段为0),这时的wLength值会大于实际的描述的值。原因是以预设地址0来取得设备描述符时,不管多少字节,用户最多只取前8字节,即在控制传输过程中只有一次数据阶段。但是,如果用户已新的地址(ENDP字段不为0)来取得设备描述符时,这时wLength的值就要注意了。(2)清除特性(ClearFeature)该请求时用来取消一个特性,格式如下:该请求中的wValue表示特性选择器,它对应的值为:0=端点,1=设备。当某个特点不允许取消,或该特性根本不存在,或者是指向一个根本不存在的接口或端点时,该请求将会到时设备请求失败。如果端点被固件设为停止状态,主机软件(总线驱动程序)也可以发送一

40、个值为0的CLEAR_FEATURE命令清除该端点的停止状态。bmRequestTypebmRequestTypebmRequestbmRequestwValuewValuewIndexwIndexwLengthwLengthDataData00000000B(0端点)00000001B(1端点)00000010B(2端点)CLEAR_FEATURE(01H)特性选择0接口端点0无该请求与其它的请求有一个重要的不同点,该请求下,USB设备一直不改变它的地址,直到该请求的状态阶段被成功的完成,而其它请求的操作都是在状态阶段之前完成。(4)设置配置(SetConfiguration)该请求对设备进

41、行设置。其格式如下:该请求中的wValue域的低字节表示设置的值,该值必须为0或者与配置描述符中的配置值相匹配。如果设置值等于0,表示设备在地址状态。如果wIndex或wLengt为非0值,那么该请求不执行。bmRequestTypebmRequestTypebmRequestbmRequestwValuewValuewIndexwIndexwLengthwLengthDataData00000000B(0端点)00000001B(1端点)00000010B(2端点)CLEAR_FEATUR(01H)特性选择0接口端点0无bmRequestTypebmRequestTypebmRequestb

42、mRequestwValuewValuewIndexwIndexwLengthwLengthDataData00000000BSET_ADDRESS(05H)设备地址00无(3)设置地址(SetAddress)该请求给USB设备设置地址,从而可以对该USB设备进行进一步的访问。其格式如下:7、USB 枚举过程1 第一次接收到主机的GetDescription 请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8 个字节发送正确2 主机发送SetAddress 请求到USB 设备,给USB 设备分配唯一的

43、地址。这时外设被分配唯一地址,此时的USB 设备成为被主机承认的合理外设,可以进行正常的数据传送。3 外设再一次接收到GetDescription请求。主机分析完整的描述符信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。4 操作系统会继续发出GetConfiguration 请求,读取设备的配置信息。要把外设的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。5 在设备能通讯前,主机给外设一个SetConfiguration 请求,主机根据整个系统的USB 使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。经过上面的调试后,U

44、SB 外设可以发送和接收数据,设备如果不立即使用则会进入挂起状态,直到使用。设备枚举过程中使用的是控制传输。上述的步骤必须符合控制传输的基本架构。8、USB2.0接口芯片CY7C68013CY7c68013A芯片是CYPress公司的EZ一USB FX2系列中一种满足USB2.0协议,同时兼容USB1.1协议的功能强大的USB芯片,是世界上第一款集成的USB2.0微处理器。它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口(GPIF)。FX2这种独创性结构可使数据传输速率达到480Mbps,即USB2.O允许的最大带宽。在FX2中智能SIE可以处理大部

45、分USB1.1和USB2.O协议,使得微控制器可以专注于应用功能,从而减少了开发时间和确保了USB的兼容性和主/从端点FIFO(8位或16位数据总线)为ATA,UTOPIA,EPP,PCMCIA和DSP等提供了简单的无缝连接接口。但是,CY7C68013A只 支 持 两 种 传 输 速 率:全 速(Full Speed)12Mbps和 高 速(HighSpeed)480Mbps,不支持低速(Low Speed)l.5Mbps。在EZ-USB中,端点0是唯一的控制端点,其实双向的。EZ-USB位端点0提供了一个64字节的缓冲区(EP0BUF),固件可以通过其进行控制传输,实现USB协议中各种标准

46、设备请求和自定义请求。8.1EZ-USB控制传输一个完整的端点0控制传输包括3个阶段:SETUP阶段、DATA阶段和STATUS阶段,在SETUP阶段中,第二个8字节缓冲位SETUPDAT,这时端点0所特有的,其包含了控制传输的数据,其包含了控制传输的数据。在USB控制传输被固件正确响应后,SETUPDAT中的数据将转存到USB芯片中8bit的RAM,如下图:SETUPADDRENDPCRC5Token packetDATA08bytes Setup DataCRC16Data PacketACKH/S PKT设置阶段8字节RAMSETUPDATSETOK中断SUDAV中断8.2EZ-USB设

47、备请求及固件响应在USB协议中,通过端点0进行USB标准设备请求和自定义请求的响应,USB设备请求被编码在8字节的SETUP包中,SETUP包的定义如下表:当RENUM=1时,EZ-USB通过端点0自动处理USB请求,固件对USB设备请求的响应表如下:字字节域域含含义0bmRequesType请求的类型及方向1bRequest实际的请求2wValueL16位数据,根据bRequest不同而定3wValueH4wIndexL16位数据,根据bRequest不同而定5wIndexH6wLengthL在数据阶段传输的字节数7wLengthHbRequestbRequest名称名称EZ-USBEZ-U

48、SB动作作固件响固件响应0 x00获得状态SUDAV中断提供RemWU、SelfPwr or Stall比特0 x01清除特性SUDAV中断清除RemWU、SelfPwr or Stall比特0 x02保留无Stall EP00 x03设置特性SUDAV中断设置RemWU、SelfPwr or Stall比特0 x04保留无Stall EP00 x05设置地址更新FNADDR寄存器无0 x06获得描述符SUDAV中断通过EP0-IN提供描述符0 x07设置描述符SUDAV中断设置描述符0 x08获得配置SUDAV中断发送当前配置0 x09设置配置SUDAV中断改变请求配置0 x0A获得接口SU

49、DAV中断提供可选的接口设置0 x0B设置接口SUDAV中断设置接口0 x0C同步帧SUDAV中断通过EP0-IN提供同步帧0 xA0(Firmware load)上传/下载RAM数据0 xA1-0 xAFSUDAV中断Cypress公司保留All except 0 xA0SUDAV中断根据需要定义8.2Cypress提供的开发库Cypress公司为EZ-USB芯片提供的开发库CyAPI.lib支持Visual studio 及Borland c+builder。以下做简单介绍:8.2.1 CCyUSBDevice类:The CCyUSBDevice class is the primary

50、entry point into the library.All the functionality of the library should be accessed via an instance of CCyUSBDevice.使用示例:CCyUSBDevice*USBDevice=new CCyUSBDevice(NULL);int devices=USBDevice-DeviceCount();int vID,pID;int d=0;do USBDevice-Open(d);vID=USBDevice-VendorID;pID=USBDevice-ProductID;d+;while

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁