[应用相关] usb协议相关学习分享——设备描述符

[复制链接]
5206|11
 楼主| Jacquetry 发表于 2023-11-24 17:29 | 显示全部楼层 |阅读模式
设备描述符通常在插入后最先被主机读取,每个设备都有且只有一个设备描述符
  1. struct _DEVICE_DESCRIPTOR_STRUCT
  2. {
  3.     BYTE bLength;         
  4.     BYTE bDescriptorType;  
  5.     WORD bcdUSB;           
  6.     BYTE bDeviceClass;                        
  7.     BYTE bDeviceSubClass;  
  8.     BYTE bDeviceProtocol;  
  9.     BYTE bMaxPacketSize0;  
  10.     WORD idVendor;         
  11.     WORD idProduct;      
  12.     WORD bcdDevice;        
  13.     BYTE iManufacturer;   
  14.     BYTE iProduct;        
  15.     BYTE iSerialNumber;  
  16.     BYTE bNumConfiguration;
  17. }
上面是关于设备描述符的相关结构体,下面来挨个介绍下它的含义。
bLength : 用来确定描述符的大小.固定值为0x12.也就是整个结构体占18个字节。
bDescriptorType : 设备描述符类型.固定为0x01.
bcdUSB : 这个就相当于usb的版本号.前面的bcd前缀代表使用的是BCD码表示。
bDeviceClass :bDeviceSubClass : bDeviceProtocol :

这三个分别代表设备类型,子类型,设备使用的协议,包含图像类、无线类、人机交互类、音频类等等,子类比如的音频控制、音频流等等,协议比如鼠标、键盘等
bMaxPacketSize0 : 端点0最大分组大小(只有8,16,32,64有效).
idVendor : 供应商ID.由USB协议分配,厂商需要缴纳一定费用才能申请
idProduct : 产品ID。
bcdDevice : 设备出产编码.由厂家自行设置.
iManufacturer : 厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有.
iProduct : :产品描述符字符串索引.同上.
iSerialNumber : 设备序列号字符串索引.同上.
bNumConfigurations : 可能的配置数.定义设备以当前速度支持的配置数量

jf101 发表于 2023-11-30 12:20 | 显示全部楼层
设备描述符就是描述设备相关数据参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

1764

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部