USB描述符的分类与介绍讲解.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USB描述符的分类详解 所谓描述符,就是用于描述设备特性的具有特定格式排列的一种数据组织结构。 描述符的作用在于设备向主机汇报自己的信息、特征,主机根据这些信息从而加载相应的驱动程序。 描述符分为三大类:标准描述符、设备类描述符、厂商描述符。 标准描述符:除字符串描述符可选外,任何设备都必须包含剩下的几种标准描述符:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符 设备类描述符可划分为:集线器类描述符、人机接口类描述符 每个USB设备都有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。 由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。其中可能还会有获取设备序列号,厂商字符串,产品字符串等 描述符的类型值: 表1 . USB描述符的类型值类型描述符描述符值标准描述符设备描述符(Device Descriptor)0x01配置描述符(Configuration Descriptor)0x02字符串描述符(String Descriptor)0x03接口描述符(Interface Descriptor)0x04端点描述符(EndPont Descriptor)0x05设备限定描述符()0x06其他速率配置描述符()0x07设备类描述符集线器类描述符(Hub Descriptor)0x29人机接口类描述符(HID)0x21厂商定义的描述符0xFF 1 标准描述符 标准描述符是指一组描述符,包括设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符、设备限定描述符和其他速率配置描述符。 这七种 描述符具有类似的格式,比如说它们的第一个字段都是bLength,第二个字段都是bDescriptorType。 七种描述符在使用时以第二字段(bDescriptorType)来区分,描述符类型与对应的bDescriptorType字段值对应关系为: ?1.1 设备描述符 设备描述符描述的是设备的整体信息,与设备本身一一对应,一个设备只能有一个设备描述符。在主机对USB设备枚举的过程中,首先要做的就是获取设备描述符,以对设备有一个整体的了解。设备描述符由14个字段组成,总长度18字节: 这些字段都有一个小写字母表示的前缀,它们所表示的意思如下: ? b 表一个字节,=8bits; ? w 表一个字,=16bits; ? bm 表按位寻址; ? bcd 用BCD码表示; ? i 表索引值 ? id 表标识码 结构体定义 typedef struct _DEVICE_DCESCRIPTOR_STRUCT { ?BYTE blength;?????????????????????????????? //设备描述符的字节数大小(18) ?BYTE bDescriptorType;????????????????????? //设备描述符类型编号(1) ?WORD bcdUSB;??????????????????????????????? //USB版本号 ?BYTE bDeviceClass;????????????????????????? //USB分配的设备类代码 ?BYTE bDeviceSubClass;??????????????????????//USB分配的子类代码 ?BYTE bDeviceProtocol;??????????????????????//USB分配的设备协议代码 ?BYTE bMaxPacketSize0;??????????????????????//端点0的最大包大小 ?WORD idVendor;????????????????????????????? //厂商编号 ?WORD idProduct;???????????????????????????? //产品编号 ?WORD bcdDevice;???????????????????????????? //设备出厂编号 ?BYTE iManufacturer;???????????????????????? //设备厂商字符串的索引 ?BYTE iProduct;

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档