USB 描述符

标准的USB设备有5种USB描述符:设备描述符,配置描述符,字符串描述符,接口描述符,端点描述符。

 1 // Standard Device Descriptor
 2 typedef struct
 3 {
 4     u8   bLength;
 5     u8   bDescriptorType;
 6     u16  bcdUSB;
 7     u8   bDeviceClass;
 8     u8   bDeviceSubClass;
 9     u8   bDeviceProtocol;
10     u8   bMaxPacketSize0;
11     u16  idVendor;
12     u16  idProduct;
13     u16  bcdDevice;
14     u8   iManufacturer;
15     u8   iProduct;
16     u8   iSerialNumber;
17     u8   bNumConfigurations;
18 } __attribute__((__packed__)) sDevDesc, *pDevDesc;
19
20 /* Standard Configuration Descriptor */
21 typedef struct
22 {
23     u8   bLength;                 // Size of descriptor in Byte
24     u8   bType;                   // Configuration
25     u16  wLength;                 // Total length
26     u8   bNumIntf;                // Number of interface
27     u8   bCV;                     // bConfigurationValue
28     u8   bIndex;                  // iConfiguration
29     u8   bAttr;                   // Configuration Characteristic
30     u8   bMaxPower;               // Power config
31 } __attribute__((__packed__)) sCfgDesc, *pCfgDesc;
32
33 // Standard Interface Descriptor
34 typedef struct
35 {    u8   bLength;
36     u8   bType;
37     u8   iNum;
38     u8   iAltString;
39     u8   bEndPoints;
40     u8   iClass;
41     u8   iSub;
42     u8   iProto;
43     u8   iIndex;
44 } __attribute__((__packed__)) sIntfDesc, *pIntfDesc;
45
46 // Standard EndPoint Descriptor
47 typedef struct
48 {    u8   bLength;
49     u8   bType;
50     u8   bEPAdd;
51     u8   bAttr;
52     u16  wPayLoad;               // low-speed this must be 0x08
53     u8   bInterval;
54 } __attribute__((__packed__)) sEPDesc, *pEPDesc;
55
56 // Standard String Descriptor
57 typedef struct
58 {    u8   bLength;
59     u8   bType;
60     u16  wLang;
61 } __attribute__((__packed__)) sStrDesc, *pStrDesc;

HID描述符:

 1 struct hid_class_descriptor {
 2     u8  bDescriptorType;
 3     u16 wDescriptorLength;
 4 } __attribute__ ((packed));
 5
 6 struct hid_descriptor {
 7     u8  bLength;
 8     u8  bDescriptorType;
 9     u16 bcdHID;
10     u8  bCountryCode;
11     u8  bNumDescriptors;
12     struct hid_class_descriptor desc[1];
13 } __attribute__ ((packed));

相关链接:

http://wiki.osdev.org/Universal_Serial_Bus#Introduction

http://blog.csdn.net/alien75/article/details/4622319

http://blog.csdn.net/mcgrady_tracy/article/details/8129992

时间: 2024-09-30 06:27:04

USB 描述符的相关文章

USB描述符【转载】

USB描述符 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道.那么USB描述符信息到底是一个什么样的数据呢,USB协议中有详细描述. 通用的USB描述符信息包括设备描述符.配置描述符.接口描述符和端点描述符,具体不同的USB设备还包括其它类型的描述符,例如,USB鼠标.键盘还包括HID

USB描述符解析-->枚举.

枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源.一般都是使用中断传输方式通信. 常用的描述符有以下几种:01H.设备描述符  02H.配置描述符  03H.字符串描述符  04H.接口描述符  05H.端点描述符 21H:HID描述符 22H:HID报告 一个设备只能有一个设备描述符,而一个设备描述符可以包含多个配置描述符(bNumConfigurations  ),一个配置描述符又可以包含多个接口描述符,一个接口使用了几个端点

USB学习笔记连载(十二):USB描述符

USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.HID描述符,这里主要讲解USB描述符. USB标准设备描述符包括:设备描述符,端点描述符,接口描述符,配置描述符,设备限定描述符,其他描述符.这些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!   1.设备描述符 一共18个字节,14个字段.在官方给的固件程序中的描述如下图

USB描述符概述

在USB总线接口协议中,规定了一些标准的USB描述符,如表所示. 对于USB设备来说,有些USB描述符是必需的,例如: 设备描述符 配置描述符 字符串描述符 接口描述符 端点描述符 其余一些描述符并非必需,只在特定USB设备中使用,例如:设备限定描述符.其他速率配置描述符用于高速USB设备:OTG设备描述符用于USB OTG外设:超高速端点伴侣描述符用于超高速USB设备. USB描述符其实就是一个数据集合,用来表征USB设备某一方面的功能.USB协议中严格规定了每一种描述符的数据格式.各个USB

usb协议分析-设备描述符配置包-描述符

/* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_SETUP_PACKET { REQUEST_TYPE bmRequestType; BYTE bRequest; WORD_BYTE wValue; WORD_BYTE wIndex; WORD wLength; } USB_SETUP_PACKET; 1.bmRequestType 是包含有下面

usb命令格式、描述符详解

一.USB命令 在USB规范里,对命令一词提供的单词为“Request”,但这里为了更好的理解主机与设备之间的主从关系,将它定义成“命令”. 所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:Clear_Feature. Get_Configuration.Get_Descriptor.Get_Interface.Get_Status.Set_Address. Set_Configuration.Set_Descriptor.Set_Interf

转 关于USB HID报告描述符

原文地址 USB HID报告及报告描述符简介 在USB中,USBHOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等.USB报 告描述符(ReportDescriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符.USBHID设备是通过报告来给传送数据的,报告 有输入报告和输出报告.输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等:输出 报告是主机发送在

USB HID描述符【转】

本文转载自: USB是个通用的总线,端口都是统一的.但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖于描述符了.USB的描述符主要有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,HID描述符,报告描述符等等.关于报告描述符,请看我以前写的:<USB HID报告及报告描述符简介 > http://group.ednchina.com/93/198.aspx.一个USB设备有一个设备描述符,设备描述符里面决定了该设

浅析USB HID ReportDesc (HID报告描述符)

在USB中,USB Host是通过各种描述符来识别识别设备的,一般在设备枚举的过程将会获取有设备描述符/配置描述符/接口描述符/端点描述符/字符串描述符等 现在我们来介绍一下HID ReportDesc. 我们看一下在其内容为 我们先来使用HID Descriptor Tool来生成上面的数据 参考资料 1.Device Class Definition for Human Interface Devices (HID) Version 1.11 .PDF 2.HID Usage Tables