USB协议深入分析 设备描述符配置包

发布者:cwm6269310最新更新时间:2015-08-14 来源: eefocus关键字:USB协议  设备描述符  配置包 手机看文章 扫描二维码
随时随地手机看文章
设备描述符配置包http://blog.csdn.net/caimouse/article/details/1558975
在USB通讯里,从主控器发出来的第一个配置包就是设备描述符配置包,目的只有一个,就是获取插入的USB属性,以便加载合适的驱动程序。现在就来详细地分析一下设备描述符包的定义。
在USB2.0的协议里找到9.3 USB Device Requests里就找到这个结构的定义,这里我使用C的定义结构如下:
typedef struct _USB_SETUP_PACKET
{
 REQUEST_TYPE bmRequestType;
 BYTE         bRequest;
 WORD_BYTE    wValue;
 WORD_BYTE    wIndex;
 WORD         wLength;
USB_SETUP_PACKET;
 
bmRequestType是包含有下面几方面的内容:
D7 D6 D5 D4 D3 D2 D1 D0
在这一个字节里,又按位分为:
D7位是表示后面传送数据的方向位。
当D7等于0时,表示后面的数据是从主控器发送到USB设备。在PC里,就是从PC机发送到USB的设备。
当D7等于1时,表示后面的数据是从USB设备发送到主控器。在PC里,就是从USB设备发送到USB设备。在上次里,我收到并显示出来的数据是80,就表示从USB设备里发送数据给PC。在这里再次给出上一次的包数据:
80 06 00 01 00 00 40 00
这里的80,就是D7位为1。
 
D6-D5位是请求主分类型
0 是表示标准的请求。
1 是表示类别的请求。
2 是表示厂商的请求。
3 是保留。
 
D4-D0位是表求接收这个包的接口。
0 是表示USB设备接收。
1 是表示接口接收。
2 是表示端点接收。
3 是表示其它接收,不知道的。
4-31是保留。
 
bRequest是本描述符的请求类型,也就是后面发送的数据是什么样的东西。由于USB里有很多配置信息,比如获取设备描述符,又有设置USB地址等等,就是通过这个字节来区分的。
从USB协议里查找表9-4,就可看到如下的编码:
GET_STATUS              0
CLEAR_FEATURE          1
Reserved for future use      2
SET_FEATURE             3
Reserved for future use      4
SET_ADDRESS             5
GET_DESCRIPTOR         6
SET_DESCRIPTOR          7
GET_CONFIGURATION      8
SET_CONFIGURATION      9
GET_INTERFACE           10
SET_INTERFACE            11
SYNCH_FRAME              12
在上面的数据包里,看到它的内容是06,那么它就是GET_DESCRIPTOR类型。也就是主控器想读取USB设备的描述符,到这里就已经分析出来的意思,就是主控器想读取USB描述符,但还不知道是什么描述符的内容。
 
wValue是根据不同的请求而设置不同的值。一般就是传送参数给设备标明这是什么请求。在上面GET_DESCRIPTOR获取设备描述符里,它的值是00 01。在GET_DESCRIPTOR里这个字段的低字节表示描述符的索引,高字节表示描述符的类型。高字节的类型如下:
DEVICE                   1
CONFIGURATION          2
STRING                   3
INTERFACE                4
ENDPOINT                5
DEVICE_QUALIFIER         6
OTHER_SPEED_CONFIGURATION             7
INTERFACE_POWER1                  8
wValue值在这里的高字节是01,那么它就是设备描述符了。低字节是00,那么它就是表示从偏移地址0开始读取设备描述符。由于在配置描述符里有很多配置,所以低字节在那里就可以用来识别获取同样类型的描述符不同的配置。
wIndex是根据不同的请求而设置不同的值。一般用来说明端点号或者说明接口标识。在获取描述符里,设置为0,或者是语言ID。在这个发送的描述符里,它是设置为00 00。
wLength是根据请求来决定下一阶段发送数据的长度。前面请求第一个字节里,已经说明下一阶段数据传送的方向,这里说明了传送数据的长度。不管是发送数据,还是接收数据,都不要超过这个数据长度,否则主机会出问题,或者设备有问题。在这个获取设备描述里,它的长度是40 00,按小端格式去解释,就是64个字节。
 
到这里,就把主控器发下来的数据解释完成了,知道去做什么的事情和回应。下一次就去分析怎么样返回设备描述符。

关键字:USB协议  设备描述符  配置包 引用地址:USB协议深入分析 设备描述符配置包

上一篇:基于MSP430F133的电子镇流器综合测试仪
下一篇:USB协议深入分析 返回设备描述符

推荐阅读最新更新时间:2024-03-16 14:28

基于HID协议USB人机交互设备的接口设计
     目前市场上USB设备的种类繁多,但是这些设备会有一些共同的特性,根据这些特性可以把USB设备划分为不同的类,如显示设备、通信设备、音频设备、大容量存储设备、人机接口设备(HID)。这里介绍如何实现HID类设备,以及如何在应用程序中对HID类设备进行访问。从Windows98操作系统开始,为HID类设备提供了通用的驱动程序,所以只要按照HID设备类的规范编写设备的固件程序,就能够让Windows系统自动识别设备,省去了复杂的驱动程序编写过程。    1 HID协议简介   人机接口设备(HID)主要是指一些人与计算机进行交互的设备,如键盘、鼠标、游戏杆等;但是HID设备不一定非要是这些人机交互设备,只要符合HID设
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved