精华内容
下载资源
问答
  • 关注+星标公众号,不错过精彩内容编排 | 一个早起的程序员一个早起的程序员1USB描述符USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符...

    关注+星标公众,不错过精彩内容

    47d970393b1b4dd0c8951b946c7da242.png

    编排 | 一个早起的程序员

    一个早起的程序员

    1

    USB描述符USB描述符有设备描述符标准配置描述符接口描述符端点描述符字符串描述符,HID设备有HID描述符报告描述符物理描述符今天主要是学习USB标准配置描述符的组成。一个早起的程序员

    2

    标准配置描述符组成一个USB设备至少有一个或者多个配置,这一点可以从设备描述符的最后一项bNumConfigurations得到,但是当前只能选择其中一种配置,每一种配置都对应一个配置描述符集合,为什么说是一个集合呢,因为这个配置包括标准配置描述符、接口描述符、端点描述符,如果是HDI设备还会包括HDI描述符,我们今天讲的是标准配置描述符,后期会讲解其他的描述符。标准配置描述符只有9个字节,组成如下:

    d334fe575c9502bb5ece52fcc2b3ee44.png

    一个早起的程序员

    3

    标准配置描述符组成详解

    1.bLength

    配置描述符的长度。

    2.bDescriptorType

    描述符类型,配置描述符为0x02。描述符的结构开头是一样的,都是先说描述符长度,然后说类型,每种描述符的类型是不一样的,如下表格,可速查。

    ee2f2bad73f64c5d34dd10c87707946d.png

    3.wTotalLength

    配置描述符集合总长度,也就是说总共有多少个字节。第二节讲了,配置描述符是以集合的形式,集合里包含了标准配置描述符,接口描述符,端点描述符,HID描述符,wTotalLength就是配置描述集合的长度。

    4.bNumInterfaces,

    当前配置下面有多少个接口单一功能设备只有一个接口,如鼠标或者键盘,如果是复合设备,如果是鼠键一体的设备,那么它可能有两个接口,其实一个接口对应于一种功能,如果我们在软件实现的时候,把鼠标键盘当做一个功能实现时候,那就是一个接口的设备(也就是单功能设备)。

    5.bConfigurationValue,

    前面说了,一个USB设备可能有多个配置,但是当前只能选择一种配置。bConfigurationValue就是当前配置的标识,如果主机想选择哪种配置,是通过标识去选择的,后面枚举的时候会详细讲解。

    6.iConfiguration

    描述该配置的字符串的索引值,如果没有字符串,那这个值就是0。

    7.bmAttributes

    在这个配置下,设备的一些特性。D7是保留位,默认为1;D6表示供电方式,0是自供电,1是总线供电;D5表示是否支持远程唤醒;D4~D0保留,默认为0。大家可能会问为什么不把这些特性放在设备描述符里面,这些可都是设备的属性啊,在这里要告诉大家,USB设备会有多种配置,每种配置下的设备属性是不一样的,主机可以灵活的选择使用那种配置,从而实现对应配置上的功能,这样增加了总线设计的灵活性和可配置性,从而达到通用性。

    8.bMaxPower

    在这个配置下,设备需要的电流,单位是2ma。如果一个设备耗电量100ma,那么本字节设置为0x32即可。

    免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。------------ END ------------b5fac1228712a8415c4901dee762d395.gif

    点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

    展开全文
  • STM32 USB设备描述符、配置描述符、端点描述符含义 查了一整天的资料,自己把不懂的全部试了一遍 一下是程序以及注释 复制代码 /* USB设备描述符*/ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_...

    STM32 USB设备描述符、配置描述符、端点描述符含义
    查了一整天的资料,自己把不懂的全部试了一遍

    一下是程序以及注释

    复制代码
    /* USB设备描述符*/
    const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =
    {
    0x12, /bLength 描述符的长度/
    USB_DEVICE_DESCRIPTOR_TYPE, /bDescriptorType 描述符的类型(设备描述符为0x01)/
    0x00, /bcdUSB USB协议的版本/
    0x02,

    0x00,                       /*bDeviceClass 类代码*/
    0x00,                       /*bDeviceSubClass 子类代码*/
    0x00,                       /*bDeviceProtocol  设备所使用的协议*/
    0x40,                       /*bMaxPacketSize 端点0的最大包长*/
        /*idVendor  厂商ID*/
    LOBYTE(USB_VID),                       
    HIBYTE(USB_VID),
        /*idProduct 设备ID*/
    LOBYTE(USB_PID),                       
    HIBYTE(USB_PID),
        
    0x00,                       /*bcdDevice rel 设备版本号*/
    0x02,
         
    1,                          /*描述生产厂家的字符串描述符的索引*/
    2,                          /*描述产品的字符串描述符的索引*/
    3,                          /*产品序列号的字符串描述符的索引*/
    0x01                        /*bNumConfigurations  可能的配置数*/
    

    }
    ; /* CustomHID_DeviceDescriptor */

    /* USB配置描述符 /
    /
    All Descriptor s (Configuration, Interface, Endpoint, Class, Vendor /
    const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] =
    {
    //以下为配置描述符
    0x09, /
    bLength: 端点描述符长度*/
    USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: 描述符类型 (配置描述符为0x02) */

    LOBYTE(CUSTOMHID_SIZ_CONFIG_DESC),/* wTotalLength: 配置描述符集合总长度 */
    HIBYTE(CUSTOMHID_SIZ_CONFIG_DESC),
        
    0x01,         /* bNumInterfaces: 该配置所支持的接口数*/
    0x01,         /* bConfigurationValue: 该配置的值*/
    0x00,         /* iConfiguration: 描述配置的字符串描述符的索引*/
    0xA0,         /* bmAttributes:该设备的属性(总线供电,支持远程唤醒)
                                        bit 4 ... 0: 保留(必须为0)
                                        bit 5: 1表示支持远程唤醒
                                        bit 6: 1表示设备是自供电 0表示是总线供电
                                        bit 7: 保留(必须为1)    */
        
    0xC8,         /* MaxPower 设备所需要的电流(单位为2mA)400 mA*/
        
        
        //以下为接口描述符
    0x09,         /* bLength: 接口描述符长度*/
    USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: 描述符类型 (接口描述符为0x04)*/
    0x00,         /* bInterfaceNumber: 该接口编号(从0开始) */
    0x00,         /* bAlternateSetting: 该接口的备用编号 */
    0x02,         /* bNumEndpoints 该接口所使用的端点数*/
    0x03,         /* bInterfaceClass: 该接口所使用的类*/
    0x00,         /* bInterfaceSubClass : 该接口所使用的子类 */
    0x00,         /* nInterfaceProtocol : 该接口所使用的协议 0 =无,1 =键盘,2 =鼠标*/
    0,            /* iInterface: 描述该接口的字符串描述符的索引 */
        
        //以下为HID描述符
    0x09,         /* bLength: HID描述符长度 */
    HID_DESCRIPTOR_TYPE, /* bDescriptorType: 描述符类型 (接口描述符为0x21) */
    0x10,         /* bcdHID: HID 协议版本号 */
    0x01,
    0x00,         /* bCountryCode: 国家代码 (美式键盘代码为0x21)*/
    0x01,         /* bNumDescriptors:下级描述符的数量*/
    0x22,         /* bDescriptorType 下级描述符的类型*/
    LOBYTE(CUSTOMHID_SIZ_REPORT_DESC),/* wItemLength: 下级描述符的长度*/
    HIBYTE(CUSTOMHID_SIZ_REPORT_DESC),
        
        //以下为端点描述符
    /******************** Descriptor of Custom HID endpoints ******************/
    0x07,          /* bLength:端点描述符长度 */
    USB_ENDPOINT_DESCRIPTOR_TYPE, /* 描述符类型 (端点描述符为0x05)*/
    0x81,          /* bEndpointAddress:端点地址
                       bit 3 ... 0:端点号
                       bit 6 ... 4:保留(设置为0)
                       bit 7:0(OUT),1(IN)*/
    0x03,          /* bmAttributes: 端点属性 
                             bit 1 ... 0:表示该端点的传输类型
                                                                            0  控制传输
                                                                            1  等时传输
                                                                            2  批量传输
                                                                            3  中断传输
                                                 bit 7 ... 2:如果该端点是非等时传输 则bit 7 ~ 2 保留(设置为0)
                                                                            如果该端点是等时传输
                                                                            bit 3 ... 2:    表示同步类型
                                                                                                              0 无同步
                                                                                                                1    异步
                                                                                                                2 适配
                                                                                                                3 同步
                                                                            bit 5 ... 4:    表示用途
                                                                                                              0 数据端点
                                                                                                                1    反馈端点
                                                                                                                2 暗含反馈的数据端点
                                                                                                                3 保留
                                                                            bit 7 ... 6:    保留*/
    0x40,          /* wMaxPacketSize: 该端点支持的最大包长度 */
    0x00,
    0x0A,          /* bInterval:端口的查询时间*/
        
        //以下为输出端点1描述符
    0x07,    /*bLength:端点描述符大小 */
    USB_ENDPOINT_DESCRIPTOR_TYPE,    /* 端点描述符类型*/
    0x01,              /* bEndpointAddress:端点地址
                       bit 3 ... 0:端点号
                       bit 6 ... 4:保留
                       bit 7:0(OUT),1(IN)*/
    0x03,    /* bmAttributes: 中断端点 */
    0x40,    /* wMaxPacketSize: 最多64个字节  */
    0x00,
    0x0A,    /* bInterval: 轮询间隔(20毫秒)*/
    

    };
    复制代码

    展开全文
  • 关注+星标公众号,不错过精彩内容编排 | 一个早起的程序员一个早起的程序员1USB描述符USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符...

    关注+星标公众,不错过精彩内容

    14e0cd30529b727cb1f9b6a328a5ee40.png

    编排 | 一个早起的程序员

    一个早起的程序员

    1

    USB描述符USB描述符有设备描述符标准配置描述符接口描述符端点描述符字符串描述符,HID设备有HID描述符报告描述符物理描述符今天主要是学习USB端点描述符的组成一个早起的程序员

    2

    端点描述符组成前面讲了设备描述符配置描述符、接口描述符,本篇我们讲解端点描述符。首先要明确的一点是端点描述符不能单独返回给USB主机,主机会请求获得配置描述符集合,配置描述符集合主要由标准配置描述符、接口描述符、端点描述符、HID描述符,报告描述符物理描述符是单独返回给USB主机。端点描述符包含7个字节,组成如下:

    069cedce3f5b27294741fc64c3ead19d.png

    一个早起的程序员

    3

    STM32配置描述符集合代码(必须按顺序)
    /* USB Configuration Descriptor */const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] ={//// 标准配置描述符//      0x09, /* bLength: Configuation Descriptor size */    USB_CONFIGURATION_DESCRIPTOR_TYPE,   /* bDescriptorType: Configuration */    CUSTOMHID_SIZ_CONFIG_DESC,      /* wTotalLength low : Bytes returned */    0x00,                /* wTotalLength high: Bytes returned */    0x01,         /* bNumInterfaces: 1 interface */    0x01,         /* bConfigurationValue: Configuration value */    0x00,         /* iConfiguration: Index of string descriptor describing the configuration*/    0xC0,         /* bmAttributes: Bus powered */                  /*Bus powered: 7th bit, Self Powered: 6th bit, Remote wakeup: 5th bit, reserved: 4..0 bits */    0x96,         /* MaxPower 300 mA: this current is used for detecting Vbus */    //// 接口描述符//      /************** Descriptor of Custom HID interface ****************/    /* 09 */    0x09,                     /* bLength: Interface Descriptor size */    USB_INTERFACE_DESCRIPTOR_TYPE,    /* bDescriptorType: Interface descriptor type */    0x00,         /* bInterfaceNumber: Number of Interface */    0x00,         /* bAlternateSetting: Alternate setting */    0x02,         /* bNumEndpoints 此接口有两个端点 */    0x03,         /* bInterfaceClass: HID */    0x00,         /* bInterfaceSubClass : 1=BOOT, 0=no boot */    0x00,         /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */    0,            /* iInterface: Index of string descriptor */    //// HID描述符(后续讲解)//      /******************** Descriptor of Custom HID HID ********************/    /* 18 */    0x09,         /* bLength: HID Descriptor size */    HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */    0x10,         /* bcdHID: HID Class Spec release number */    0x01,    0x00,         /* bCountryCode: Hardware target country 国家代码 */      0x01,         /* bNumDescriptors: Number of HID class descriptors to follow           类别描述符数目(至少有一个报表描述符)*/    0x22,         /* bDescriptorType 报告描述符 */    CUSTOMHID_SIZ_REPORT_DESC,  /* wItemLength: Total length of Report descriptor 报告描述符大小 */    0x00,            /* 标志类别描述符说明结束 */     //// 端点1描述符//      /******************** Descriptor of Custom HID endpoints ******************/    /* 27 */    0x07,          /* bLength: Endpoint Descriptor size */    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */    0x82,          /* bEndpointAddress: Endpoint Address (IN) */                                  // bit 3...0 : the endpoint number                   // bit 6...4 : reserved                    // bit 7     : 0(OUT), 1(IN)    0x03,          /* bmAttributes: Interrupt endpoint */    0x40,          /* wMaxPacketSize: 64 Bytes max */    0x00,    0x02,          /* bInterval: Polling Interval (2 ms) */    /* 34 *///// 端点2描述符//        0x07,  /* bLength: Endpoint Descriptor size */    USB_ENDPOINT_DESCRIPTOR_TYPE,  /* bDescriptorType: */      /*  Endpoint descriptor type */    0x01,  /* bEndpointAddress: */      /*  Endpoint Address (OUT) */    0x03,  /* bmAttributes: Interrupt endpoint */    0x40,  /* wMaxPacketSize: 64 Bytes max  */    0x00,    0x02,  /* bInterval: Polling Interval (2 ms) */    /* 41 */}; /* CustomHID_ConfigDescriptor */
    一个早起的程序员

    4

    端点描述符组成详解

    1.bLength

    端点描述符的长度。

    2.bDescriptorType

    描述符类型,端点描述符为0x05。描述符的结构开头是一样的,都是先说描述符长度,然后说类型,每种描述符的类型是不一样的,如下表格,可速查。

    dfa04f16653eeca010ecf96a059aac6d.png

    3.bEndpointAddress

    Bit 3…0: 端点编号;

    Bit 6…4: 保留,默认为0;

    Bit 7:如果是控制端点可以忽略,因为控制端点有两个方向,否则一般表示数据传输方向,0 = OUT endpoint   1 = IN endpoint。

    4.bmAttributes

    Bits 1..0: Transfer Type,表示传输类型(传输类型在后面讲传输一节会详细讲解)

    00 = Control-控制传输01 = Isochronous-同步传输10 = Bulk-批量传输11 = Interrupt-中断传输

    Bits 7..2: 大家可以查看usb_20.pdf(下面有下载方法)。

    5.wMaxPackeSize(双字节)

    表示当前配置下此端点能够接收或发送的最大数据包的大小。

    对于同步端点,此值用于指示主机在调度中保留的总线时间,这是每(微)帧数据有效负载所需的时间,有效负载时间就是发送一帧数据需要占用的总线时间,在实际数据传输过程中,管道实际使用的带宽可能比保留的带宽少,大家想想,如果实际使用的带宽比保留的还多,那就丢数了;

    于其类型的端点,bit10~bit0指定最大数据包大小(以字节为单位);

    bit12~bit11对于高速传输的同步和中断端点有效:bit12~bit11可指定每个微帧的额外通信次数,这里大家一定要知道是在高速传输中,当一个事务超时时,在一个微帧时间内重传的次数,如果设置为00b(None),则表示在一个微帧内只传输一个事务,不进行额外的超时重传,如果设置为01b,则表示在一个微帧内可以传输两次事务,有一额外的重传机会,从下面可以看出,一个微帧最多可以有两次重传事务的机会,如果微帧结束了还是失败,就需要等到下一个微帧继续发送该事务;

    00 = None (1 transaction per microframe)01 = 1 additional (2 per microframe)10 = 2 additional (3 per microframe)11 = Reserved

    其它位默认为0,详细信息可参考usb_20文档第5章。

    6.bInterval

    查询时间,就是主机多久和设备通讯一次,主机在枚举设备的时候会得到端点描述符,然后根据端点描述符这个值和此端点进行对应的数据交互,也就是主机多久给端点发送一次数据请求。根据设备运行速度以帧或微帧表示,低速和全速称为帧,下面的一个值代表1ms,高速称为微帧,一个值代表125us。

    对于全速/高速同步端点,此值必须在1到16之间。bInterval值用作2的指数,例如bInterval为4,表示周期为8个单位;

    对于全速/低速中断端点,该字段的值可以是1到255,也就是主机多少ms给设备发一次数据请求;

    对于高速中断端点,使用bInterval值作为2的指数,例如bInterval为4表示周期为8。这个值必须在1到16之间;

    对于高速批量/控制输出端点,bInterval必须指定端点的最大NAK速率。值0表示端点永不NAK。其它值表示每个微帧的bInterval*125us时间最多1个NAK。这个值的范围必须在0到255之间;

    对于速/低速批量/控制输出端点,此值无意义,可以任意指定。

    大家根据以上说明对号入座使用,用的时候在详细看usb_20.pdf文档。

    8e0a9598cf249778d4609210f94bb5fd.png注:端点描述符内容还是很多的,我们如果使用USB也没必须要研究的很细,如果想更深入的了解请进入公众号点击下载区,在文档栏下载USB2.0规范文档集合,查看usb_20.pdf文档了解更详细的内容。

    免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。------------ END ------------c898baea80669a7d5ec8fa3a5ce35b4f.gif

    点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

    展开全文
  • 关注+星标公众号,不错过精彩内容编排 | 一个早起的程序员一个早起的程序员1USB描述符USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符...

    关注+星标公众,不错过精彩内容

    dd25f78b970687f3bba6025050872cb5.png

    编排 | 一个早起的程序员

    一个早起的程序员

    1

    USB描述符USB描述符有设备描述符标准配置描述符接口描述符端点描述符字符串描述符,HID设备有HID描述符报告描述符物理描述符今天主要是学习USB接口描述符的组成。一个早起的程序员

    2

    接口描述符组成前面讲了设备描述符配置描述符,本篇我们讲解接口描述符。首先要明确的一点是接口描述符不能单独返回给USB主机,主机会请求获得配置描述符集合,置描述符集合主要由标准配置描述符、接口描述符、端点描述符、HID描述符,报告描述符物理描述符是单独返回给USB主机接口描述符包含9个字节,组成如下:

    6d0e5fc7bcad1e8bc971b953219aeee8.png

    一个早起的程序员

    3

    STM32配置描述符集合代码(必须按顺序)
    /* USB Configuration Descriptor */const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] ={//// 标准配置描述符//      0x09, /* bLength: Configuation Descriptor size */    USB_CONFIGURATION_DESCRIPTOR_TYPE,   /* bDescriptorType: Configuration */    CUSTOMHID_SIZ_CONFIG_DESC,      /* wTotalLength low : Bytes returned */    0x00,                /* wTotalLength high: Bytes returned */    0x01,         /* bNumInterfaces: 1 interface */    0x01,         /* bConfigurationValue: Configuration value */    0x00,         /* iConfiguration: Index of string descriptor describing the configuration*/    0xC0,         /* bmAttributes: Bus powered */                  /*Bus powered: 7th bit, Self Powered: 6th bit, Remote wakeup: 5th bit, reserved: 4..0 bits */    0x96,         /* MaxPower 300 mA: this current is used for detecting Vbus */    //// 接口描述符//      /************** Descriptor of Custom HID interface ****************/    /* 09 */    0x09,                     /* bLength: Interface Descriptor size */    USB_INTERFACE_DESCRIPTOR_TYPE,    /* bDescriptorType: Interface descriptor type */    0x00,         /* bInterfaceNumber: Number of Interface */    0x00,         /* bAlternateSetting: Alternate setting */    0x02,         /* bNumEndpoints 此接口有两个端点 */    0x03,         /* bInterfaceClass: HID */    0x00,         /* bInterfaceSubClass : 1=BOOT, 0=no boot */    0x00,         /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */    0,            /* iInterface: Index of string descriptor */    //// HID描述符(后续讲解)//      /******************** Descriptor of Custom HID HID ********************/    /* 18 */    0x09,         /* bLength: HID Descriptor size */    HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */    0x10,         /* bcdHID: HID Class Spec release number */    0x01,    0x00,         /* bCountryCode: Hardware target country 国家代码 */      0x01,         /* bNumDescriptors: Number of HID class descriptors to follow           类别描述符数目(至少有一个报表描述符)*/    0x22,         /* bDescriptorType 报告描述符 */    CUSTOMHID_SIZ_REPORT_DESC,  /* wItemLength: Total length of Report descriptor 报告描述符大小 */    0x00,            /* 标志类别描述符说明结束 */     //// 端点1描述符//      /******************** Descriptor of Custom HID endpoints ******************/    /* 27 */    0x07,          /* bLength: Endpoint Descriptor size */    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */    0x82,          /* bEndpointAddress: Endpoint Address (IN) */                                  // bit 3...0 : the endpoint number                   // bit 6...4 : reserved                    // bit 7     : 0(OUT), 1(IN)    0x03,          /* bmAttributes: Interrupt endpoint */    0x40,          /* wMaxPacketSize: 64 Bytes max */    0x00,    0x02,          /* bInterval: Polling Interval (2 ms) */    /* 34 *///// 端点2描述符//        0x07,  /* bLength: Endpoint Descriptor size */    USB_ENDPOINT_DESCRIPTOR_TYPE,  /* bDescriptorType: */      /*  Endpoint descriptor type */    0x01,  /* bEndpointAddress: */      /*  Endpoint Address (OUT) */    0x03,  /* bmAttributes: Interrupt endpoint */    0x40,  /* wMaxPacketSize: 64 Bytes max  */    0x00,    0x02,  /* bInterval: Polling Interval (2 ms) */    /* 41 */}; /* CustomHID_ConfigDescriptor */
    一个早起的程序员

    4

    接口描述符组成详解

    1.bLength

    接口描述符的长度。

    2.bDescriptorType

    描述符类型,接口描述符为0x04。描述符的结构开头是一样的,都是先说描述符长度,然后说类型,每种描述符的类型是不一样的,如下表格,可速查。

    c65e69dc0ed2db58e5ac8ca3e827b672.png

    3.bInterfaceNumber

    接口编号。如果一个配置有多个接口的话,那么每个接口的编号都有一个独立的编号,编号从0开始递增。这里可以设置为0。

    4.bAlternateSetting

    备用接口编号,一般很少用,设置为0。

    5.bNumEndpoints

    该接口使用的端点个数,前面讲过一个接口就是一种功能,每个接口需要用户为其分配端点来实现对应的功能,注意一点,这个端点个数不包括端点0。

    6.bInterfaceClass、bInterfaceSubClass、bInterfaceProtocol

    当设备描述符设备类型bDeviceClass为0时,也就是指示用接口描述符来标识类别,此时用接口类、接口子类、接口协议来说明USB设备此功能所属的类别。如下图显示设备和接口的各种类别,这个类别给设备描述符用还是给接口描述符用要看Descriptor Usage标识(如图中所示)。我们如果单纯用作数据传输的话,直接写FFh就好,代表着用户自定义。USB类信息更详细内容可进入https://www.usb.org/defined-class-codes查看。

    aa2b0f56ad9ab5522f5963789ddbaf7d.png

    7.iInterface

    描述此接口的字串索引值,没有的话一般都是0。

    免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。------------ END ------------2f9724821fae75d5985fd874db574140.gif

    点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

    展开全文
  • 配置描述符

    2011-01-03 21:11:00
    bLength 对于配置描述符 长度为9 bDescriptorType 0x02 wTotalLength 即为 widechar 代表了所有描述符加起来的长度 即 当前配置下当前使用接口 以及端点描述符号的长度;   bNumberInterface 就是这个...
  • 该程序用于从配置描述符集合中得到第 N个接口描述符。源码如下 /** * 函数功能:从配置描述符集合中获取接口描述符 * @cfg_desc 配置描述符集合 * @num 要获取的第几个接口描述符 * @intf_desc t ...
  • 一个USB设备至少有一个或者多个配置,这一点可以从设备描述符的最后一项bNumConfigurations得到,但是当前只能选择其中一种配置,每一种配置都对应一个配置描述符集合,为什么说是一个集合呢,因为这
  • 配置描述符介绍

    千次阅读 2017-03-13 23:42:12
    在获取到设备描述符之后,主机就会获取配置描述符。以下是配置描述符的定义: blength:标准的配置描述符是0x09 bDescriptorType:指明描述符的类型,配置描述符应该是0x02 wTotalLength:configuration, ...
  • 关注+星标公众号,不错过...USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。我们先学会每个描述符的细节,我会写的非常详细且简洁...
  • 配置描述符具有9 B的长度,并且针对设备给予配置的信息。但应注意的是,对每个设各而言可能不止一种配置类型,其配置的数 目由上面的设各描述符的最后一个字段bNumConfigurations设置。当主机要求设备的配置时,它将...
  • ME909在不同的系统使用不同的配置描述符, 默认使用的是第1个配置描述符,也就是XP/WIN7使用的moderm,用STM32读出来的也是这个配置描述符, 但是我要在STM32上运行ECM协议,这样加快4G模块的速度,于是我就着手做...
  • USB笔记 配置描述符(Configuration Descriptor) 配置描述符(Configuration Descriptor)说明了一个特定配置的相关信息。描述符有一个bConfiguration Value字段,当将它的值作为Set Configuration请求的一个参数时,...
  • USB-配置描述符(三)

    2020-01-16 15:53:37
    4、配置描述符 5、接口描述符 6、HID 描述符 7、端点描述符 8、字符串描述符 9、HID 报告描述符 10、HID 报告的返回 linux内核中对配置描述符的定义,目录:linux/include/uapi/linux/usb/ch9.h ...
  • USB(三)-USB-配置描述符

    2021-03-17 17:00:52
    配置描述符描述有关特定设备配置的信息。该描述符包含bConfigurationValue字段,该字段的值在用作SetConfiguration()请求的参数时,使设备采用所描述的配置。 描述符描述了配置提供的接口数量。每个接口可以独立...
  • 在设备描述符的最后一个字节表明设备有几个配置描述符,从而主机能够从设备描述符得知需要获取几个配置描述符配置描述符里面定义了有多少个接口(interface)。
  • USB设备多个配置描述符的获取过程

    千次阅读 2016-10-19 17:01:59
    多配置USB设备枚举过程和多字符...6. 获取配置描述符1; 7. 获取配置描述符2; 8. … 9. 获取字符串描述符1; 10. 获取字符串描述符2; 11. … 12. 设置配置; 13. …  可见,对于多个配置和字符串描述符的设
  • USB笔记 其他速度配置描述符(Other_Speed_Configuration Descriptor) 其他速度配置描述符(Other_Speed_Configuration Descriptor)说明了能进行高速运行的设备在其他可能的速度下操作的配置。其他速度配置的结构与...
  • 取得配置描述符 发送取配置描述符命令,实际上得到的是一组描述符,包括配置描述符、接口描述符和端点描述符,对于U盘来说,这些描述符总长度不会超过64字节: /** *取得配置描述符集合 */ ...
  • bNumConfigurations 8 136 0x01 设备有1种可能的配置 1.2、配置描述符(9字节)   配置描述符定义了设备的配置信息,一个设备可以有多个配置描述符。   大部分的USB设备只有一个配置描这符,设备存在多个配置...
  • 配置描述符web.xml

    2016-12-23 19:44:16
    每个Web应用的WEB-INF路径下的web.xml文件被称为配置描述符。 在Servlet2.5规范之前每个Java Web应用都必须包含这个web.xml文件,且必须放在WEB-INF路径下。从Servlet3.0开始,web.xml文件就不再是必须的,但通常...
  • 1. 概述USB 描述符信息存储在 USB 设备中,在枚举过程中,USB 主机会向 USB 设备发送 GetDescriptor 请求,USB 设备在收到这个请求之后,会将 USB 描述符信息返回给 USB 主机,USB 主机分析返回来的数据,判断出该...
  • 通过Bus Hound 观察发现设备返回的配置描述符不完整。 在最后的端点描述符部分,第一个端点描述符少了两个字节,第二个端点根本就没有。这是什么原因造成的? ![图片说明]...
  • 配置描述符(web.xml)DTD  -----------------------    icon?,  display-name?,  description?,  distributable?,  context-param*,  servlet*,  servlet-mapping*,  session-config?,  mime-mappin
  • 首先要明确的一点是HID描述符不能单独返回给USB主机,主机会请求获得配置描述符集合,配置描述符集合主要由标准配置描述符、接口描述符、HID描述符、端点描述符,报告描述符和物理描述符是单独返回给USB主机。...
  • 配置描述符web.xml对于java web应用来说非常重要。 在servlet2.5规范之前,每个Java WEB应用都必须包含个web.xml文件,且必须在WEB-INF路径下。从servlet3.0开始,WEB-INF路径下的web.xml文件不再是必须的,但通常...
  • 原创作品,允许转载,转载时请务必以超链接...发送取配置描述符命令,实际上得到的是一组描述符,包括配置描述符、接口描述符和端点描述符,对于U盘来说,这些描述符总长度不会超过64字节: /**  * 取得配置描
  • 1 配置描述符 descriptor.h #ifndef __DESCRIPTOR_H #define __DESCRIPTOR_H #include "stm32f10x.h" #include "stm32_it.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h" #include...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,842
精华内容 1,536
关键字:

配置描述符