USB描述符总结
参考网址:https://blog.csdn.net/beArobot/article/details/84000656
https://wenku.baidu.com/view/3a122b337275a417866fb84ae45c3b3567ecdd12.html
一、USB描述符:主机识别USB设备的根据,主机根据设备的描述符来加载相应的驱动程序。
二、描述符的分类:三大类
标准类描述符、设备类描述符、厂商描述符。
具体如下图:
三、使用的几种类
设备类DeviceClass
接口类InterfaceClass
四、标准描述符
1.设备描述符
2.配置描述符
3.接口描述符
(1)bLength
整个配置描述符的长度,固定为0x09.
(2)bDescriptorType
由USB给配置描述符分配的类型编号, 值为常数0x04。
(3)bInterfaceNumber
接口的编号,如果一个配置拥有N个接口, 那么这些接口都是互不相干的, 每一个接口都有惟一的编号, USB就是通过此字段来识别不同的接口。默认值为0。
(4)bAlternateSetting
USB设备的配置与USB配置描述符是一一对应的, 即一个配置只能有一个配置描述符。USB允许多个接口描述符来描述同一个接口, 而且这些描述符都可以通过命令来切换。这里,此字段就是每一个这类描述符惟一的编号。USB可以通过调用这个字段来切换描述同一个接口的不同描述符。控制传输中可以通过Get_Interface和Set_Interface来获取、设置目前正在使用的描述一个确定接口的接口描述符的编号。
(5)bNumEndpoints
该接口使用的端点总数(除端点0之外)。如果此值为0, 则意味着该接口只使用了端点0。
(6)bInterfaceClass
该接口所属的类别。这个类别编号由USB来分配。当值为0xFF时, 表示该接口是厂商所定义的接口类型。而值0保留。
(7)bInterfaceSubClass
接口所属的类别中的子类类型。这个子类编号也由USB分配。同bInterfaceClass字段一样, 当其值为0xFF时代表该接口由厂商自己所定义。而值0保留。
(8)bInterfaceProtocol
此接口类所遵循的类的协议。因而, 该字段的值跟bInterfaceClass和bInterfaceSubClass字段是相关的。其值从1~0xFE由USB分配, 代表不同标准的设备类的协议。 当值为0时, 表示该接口不遵循任何类协议; 而值为0xFF时, 表示该接口应用了厂商自定义的类协议。
(9)iInterface
指向字符串描述符中相应的字符串内容, 用于描述该接口。 如果设备没有启用字符串描述符 , 则该值为0。
4.端点描述符
5.字符串描述符
五、HID设备类描述符