USB的VendorID、ProductID和BcdDevice有什么作用
2022-03-11
5307
3
- Vendor ID(VID)的商用需要向USB组织申请,开发者可直接使用开发平台的厂商ID。
- Product ID(PID)由厂商自行管理。VID和PID的作用是让主机快速识别某些著名的设备(Windows可以在完成枚举之前依此直接派发驱动),它们也常常作为搜索从机的条件(如libusb)。
- BcdDevice:用于标识USB当前产品的固件版本号,在Windows中生成的硬件ID中,其实就是REV,如
USB\VID_12D1&PID_3A07&REV_0024
一个USB设备的VID和PID在USB设备描述符中指定,通过wIdVendor和wIdProduct指定。
#pragma data_alignment=1 //对齐方式为Byte
typedef struct _USB_Desc_Device_t {
uint8_t bLength; // 固定值18B
uint8_t bDescriptorType; // 固定值Device(0x01)
uint16_t wBcdUSB; // USB Spec版本
uint8_t bDeviceClass; // 设备类型
uint8_t bDeviceSubClass; // 设备子类型
uint8_t bDeviceProtocol; // 协议类型
uint8_t bMaxPacketSize0; // EP0的最大包长度
uint16_t wIdVendor; // 厂商ID
uint16_t wIdProduct; // 产品ID
uint16_t wBcdDevice; // 设备软件版本
uint8_t bStringIndexManufacturer; // 厂商名称字符串索引号
uint8_t bStringIndexProduct; // 产品名称字符串索引号
uint8_t bStringIndexSerialNumber; // 序列号索字符串引号
uint8_t bNumConfigurations // 配置数量>=1
}USB_Desc_Device_t;
大部分USB设备都是标准的兼容设备,如UVC摄像头,HID键盘等,都是使用USB设备分类的bDeviceClass、bDeviceSubClass和bDeviceProtocol生成的兼容ID进行驱动匹配的,Windows中提供了大量的兼容驱动。
对于使用自定义分类的bDeviceClass的设备,系统可能会因为无法找到驱动而并成未知设备,这时需要开发相应的USB设备驱动,这时可以使用由VendorID、ProductID和BcdDevice给成的硬件ID来进行匹配。
[Standard.NT$ARCH$]
%DeviceDesc%=UsbzhDevice, USB\VID_0A39&PID_0001&REV_0100;
%DeviceDesc%=UsbzhDevice, USB\VID_0A39&PID_0002;
相关文档
- USB设备的PID,VID,REV是什么,起什么作用 https://www.usbzh.com/article/detail-1314.html
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936