USB命令(请求)及标准描述符等相关归纳介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当USB设备第一次连接到主机上时,要接收主机的枚举和配置,目的就是让主机知道该设备具有什么功能、是哪一类的USB设备、需要占用多少USB的资源、使用了哪些传输方式以及传输的数据量多大等等。只有主机完全确认了这些信息后,设备才能真正开始工作。这些信息是通过存储在设备中的USB描述符来体现的。
USB设备的属性包括很多内容,为了便于管理,USB协议1.1将这些信息做了分类,定义了很多种描述符,其中标准的描述符包括:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。
这些描述符之间具有一定的关系,设备描述符是最高级的描述符,而端点描述符是最低级的描述符。每一个设备只有一个设备描述符,但设备描述符可以包含多个配置描述符;而一个配置描述符又可包含多个接口描述符;一个接口使用了几个端点,就有几个端点描述符。字符串描述符是可选的。
所有的命令虽然有不同的数据和使用目的,有的USB命令结构是一样的。控制传输的“初始设置步骤”中包含了1个8字节的DATA0数据包,这8字节的数据包是主机用来发送控制阶段中的请求命令的,而这些请求命令是主机配置USB设备的关键。这里就来详细分析这8字节请求命令的结构和内容:
上表中bRequest为命令编码值,含意见表3:
4bNumberInterfaces1所支持的接口数
5bConfigurationValue1配置值
6iConfiguration1配置字符串描述符索引值
7bmAttributes1配置特性
8bMaxPower1所需要的最大总线电流(Value*2mA)
报告描述符:HID设备的报告描述符比较复杂也比较难理解。
报告描述符的语法不同于USB标准描述符,它是以项目(Items)方式排列而成,无一定的长度。HID的报告描述符已经不是简单的描述某个值对应的某个固定的意义了,它已经能组合出多种情况,并且需要PC驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成本HID硬件设备独特的数据流格式。有关报告描述符的详细信息可以参考USB HID协议,USB协会提供一个HID描述符编辑工具称作HID Descriptor Tool,用它可以方便地生成我们所需要的报告描述符。