USB中的描述符详解[二]

USB系列五:USB设备配置描述符(重要) 在USB总线接口协议中,对于USB外部设备功能特征是通过端点(Endpoint)、配置(Configuration)和接口(Interface)来描述的,这些就是典型的USB描述符。 USB主机通过设备请求来读取外部设备的USB描述符,可以掌握该设备的接口信息和功能。USB设备请求提供了USB设备描述符的读取和写操作,包括标准设备请求和自定义请求两种。USB描述符和USB设备请求是USB外设的主要内容,是USB设备功能的体现。 阅读详情

USB描述符的分类与介绍

USB的符述符分为几类?有人可能会答:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。但这里说的不是这样的。上面的几类描述符属于USB标准描述符。另外还有HID描述符和Hub描述符。所以分类是这样的:
1. 标准描述符
            1) 设备描述符
             2) 配置描述符
             3) 字符串描述符
             4) 接口描述符
             5) 端点描述符
             6) 设备限定描述符
             7) 其他速率配置描述符
2. HID描述符
3. Hub描述符

1.5 端点描述符

端点描述符用于指出USB端点的特性,包括其所支持的传输类型、传输方向等信息。USB中规定,端点0没有端点描述符,其余端点必须包含端点描述符。端点描述符由6个字段组成,共7个字节。其格式如下:

 各字段含义:
 bLength:用于表示端点描述符的长度,固定为7字节,即0x07。
 bDescriptorType:用于表示接口描述符的类型值,固定为0x05。
 bEndpointAddress:用于表示端点的端点号以及端点的数据传输方向。第七位表示端点的数据传输方向,0表示OUT数据传输,1表示IN数据传输;第0~位表示端点号,例如001B表示端点1、010B表示端点2;其余位均保留,必须置0。
 bmAttributes:用于表示端点的特性。其中第0位和第1位表示端点的数据传输类型,00B表示控制传输、01B表示同步传输、10B表示块传输、11B表示中断传输;如果是同步传输,第2位和第3位表示同步类型,00B表示非同步、01B表示异步、10B表示自适应、11B表示同步;第4、5位表示端点的用法类型,00B表示数据端点、01B表示显示反馈端点、10B表示隐匿反馈端点、11B保留。其余位保留。
 wMaxPacketSize:用于表示端点所支持最大数据包的长度。其中第0~10位表示数据包的长度,第11位和12位指出每小帧最多传输的事务数,其余位均保留,必须置0。
 bInterval:用于指定端点数据传输的访问间隔。低速中断端点,取值范围为10~255,对应的访问间隔为10~255ms;对于全速中断端点,取值范围为1~255,对应的访问间隔为1~255ms;对于其他端点,可以参阅USB相关协议。

1.6 设备限定描述符

设备限定描述符用于指定另一传输速率下该设备的总体信息,如果高速USB设备既需要采用高速传输又需要全速传输,则它必须支持设备限定描述符(Device_Qualifier)。设备限定描述符包含9个字段,长度固定为10个字节。其格式如下:

 各字段含义:
 bLength:用于表示设备限定描述符的长度,为固定值0x0a。
 bDescriptorType:用于表示设备限定描述符的类型值,固定为0x06。
 bcdUSB:用于表示USB设备及其描述符所遵循的USB规范版本,以BCD码的形式表示,其值必须在版本2.0以上。
 bDeviceClass:用于表示USB设备所属的设备类。该字段值在1~0xFE之间的时候,表示为USB定义的某个设备类,如0x03表示HID设备类。当为0时,表示USB设备的各个接口互相独立,分别属于不同的设备类,在接口描述符中会进一步说明。当为0xFF时,表示该设备为供应商自定义的。
 bDeviceSubClass:用于表示USB设备所采用的设备类协议,它对USB设备类进行了更详细的定义。例如,对于前面的HID设备类,只有一个子类代码0x01。而对于显示设备类(0x04)子类代码0x01表示CRT显示器、0X02表示平面显示器、0x03表示3D显示器。当bDeviceClass=0时,该字段也必须为0;当该字段为0xFF时,表示由供应商自定义的设备子类。
 bDeviceProtocol:用于表示USB设备所采用的设备类协议,其值和bDeviceClass及bDevcieSubClass的值有关。当该字段为0时,表示不使用任何设备协议。如果该USB设备属于某个设备类和设备子类,则应该继续指明所采用的设备类协议。当该字段为0xFF时,表示由供应商自定义设备类协议。
 bMaxPacketSize0:用于表示USB设备端点0支持最大数据包的长度,它以字节为单位。对于低速USB设备,bMaxPacketSize0为8,对于全速USB设备,bMaxPacketSize0为8、16、32或64;对于高速USB设备bMaxPacketSize0为64。
 bNumConfigurations:表示USB设备另一个速率所支持的配置数。
 bReserved:保留项,要置0。

1.7 其他速率配置描述符

其他速率配置描述符用于指定另一传输速率下该设备的配置信息,如果高速USB设备既需要采用高速传输又需要全速传输,则它必须支持其他速率配置描述符。其他速率配置描述符包含8个字段,长度固定为9个字节。其格式如下:

 各字段含义:
 bLength:描述符的长度,固定为0x09。
 bDescriptorType:描述符类型,固定为0x07。
 wTotalLength:用于表示其他速率配置信息的总长度,包括配置描述符、接口描述符、端点描述符、设备类定义描述符和供应商自定义描述符的总和。
 bNumInterfaces:用于表示其他速率配置所支持的接口数。
 bConfigurationValue:用于表示其他速率配置值。
 iConfiguration:用于指出配置字符串描述符的索引值,具体字符串的内容在字符串描述符中定义。如果没有配置字符串,可以置0。
 bmAttributes:用于表示配置特性。它量按位寻址的,第6位置1表示使用总线电源;第5位置1表示支持远程唤醒功能;该字段的其他位均保留,一般来说,第0~4位应该置0,第7位应该置1。

 bMaxPower:用于表示USB设备运行时所需要消耗的总线电流,单位以2mA为基准。USB设备可以从USB总线上获得最大电流为500mA,因此该字段的最大值为250。

 

2 HID描述符

USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。它是USB协议最早支持的一种设备类。HID设备可以作为低速、全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。
在USB协议中,HID设备的定义放置在接口描述符中,USB的设备描述符和配置描述符中不包含HID设备的信息。因此,对于某些特定的HID设备,可以定义多个接口,只有其中一个接口为HID设备类即可。
当定义一个设备为HID设备时,其设备描述符应为:

 其接口描述符应该:

             bInterfaceClass=0x03

另外(接口描述符):
对无引导的HID设备,子类代码bInterfaceSubClass应置0,此时bInterfaceProtocol无效,置零即可。即为:

            bInterfaceClass=0x03
            bInterfaceSubClass=0
            bInterfaceProtocol=0

对支持引导的USB设备,子类代码bInterfaceSubClass应置1,此时bInterfaceProtocol可以为1或2,1表示键盘接口,3表示鼠标接口。其参考设置如下:

            bInterfaceClass=0x03
            bInterfaceSubClass=1
            bInterfaceProtocol=1或2

HID设备支持USB标准描述符中的五个:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。除此之外,HID设备还有三种特殊的描述符:HID描述符、报告描述符、物理描述符。一个USB设备只能支持一个HID描述符,但可以支持多个报告描述符,而物理描述符则可以有也可以没有。

2.1 HID描述符

HID描述符用于识别HID设备中所包含的额外描述符,例如报告描述符或物理描述符等。其格式如下:

 各字段含义:

bLength:HID描述符长度。
bDescriptorType:HID描述符类型,值为0x21。
bcdHID:HID设备所遵循的HID版本号,为4位16进制的BCD码数据。1.0即0x0100,1.1即0x0101,2.0即0x0200。
bCountryCode:HID设备国家/地区代码。
bNumDescriptor:HID设备支持的其他设备描述符的数量。由于HID设备至少需要包括一个报告描述符,故其值至小为0x01。
bDescriptorType:HID描述符附属的类别描述符长度。
bDescriptorType/wDescriptorLength:可选字段,用于表示HID描述符附属的类别描述符类型及长度。
2.2 报告描述符
HID设备的报告描述符是一种数据报表,主要用于定义HID设备和USB主机之间的数据交换格式,HID设备报告描述符的类型值为0x22。
报告描述符使用自定义的数据结构,用于传输特定的数据包。例如对于键盘,需要在数据包中指明按键的值,报告描述符把这些数据打包发给主机,主机对发来的数据进行处理。它有四个组成部分,其格式如下:

 各字段含义:
bSize:占用两个位,指示数据部分,即[data]字段的长度,00b表没有数据字节,01b表只有一个数据字节,10b表示有两个数据字节,11b表有4个数据字节。
bType:数据项类型,用于指明数据项的类型。00b主数据类型,01b全局数据类型,10b局部数据类型,11b保留。
bTag:数据项标签,用于指明数据项的功能。报告描述符需要包含的数据项标签有:输入输出数据项标签、用法数据项标签、用法页数据项标签、逻辑最小和最大值数据项标签、报告大小数据项标签以及报告计数数据项标签。
[data]:数据字节,随着前面bSize定义的大小而变化。

2.3 物理描述符

HID设备的物理描述符主要用于报告物理设备的激活信息,其类型值为0x23,它是可选的,对大部分设备不需要使用此描述符。

二,usb描述符-设备 配置 接口 端点 usb driver 阅读详情

相关推荐

深入学习USB(8)usb软件层面组织层次

1 逻辑组织结构 在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。 1.1 设备 设备可以作为主机,也可以作为从机。 设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点。 1.2 配置 每个USB设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合。主机可以控制设备选择哪个具体的配置,但是设备当前只能选择一个配置。 1.3 接口 配置由多个接口组成。 在USB协议中,接口代表一个基本的功能,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。 1.

二进制君 2269

USB 协议整理 三:USB概述及协议基础(二)

八、USB 的描述符及其之间的关系 详细内容见《USB2.0协议》9.6 Standard USB Descriptor Definitions 章节。 1、设备描述符 说明:翻译《USB2.0 标准协议》9.6.1 Device 章节。 设备描述符描述有关 USB 设备的一般信息。它包括全局应用于设备和设备的所有配置的信息。一个 USB 设备只有一个设备描述符。 具有高速能力的设备,如果设备信息与全速和高速不同,则必须有一个设备限定符描述符(device_qualifier)(参见章节9.6.2)。 具

OnlyLove_的博客 2896

Linux下lsusb命令详解

Linux下lsusb命令详解 参考链接:https://zhuanlan.zhihu.com/p/142403866 ​ USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,早期用于规范电脑与外部设备的连接和通讯。 ​ USB连接自从首次推出到现在已经有23年,这种技术在全球电子行业中的扩展速度前所未有。USB现在已经拥有超过30亿端口的年出货量,是迄今为止最常用的接口技术,笔记本电脑、平板电脑、智能手机和其他各种设备都依赖于这种技术来进行功率和数据传输

a1809032425的博客 1万+

Linux USB驱动分析(一)----USB2.0协议分析

原文地址:http://blog.chinaunix.net/uid-25445243-id-4040449.html

DREAMER 5284

【移动APP测试】Firebase Test Lab (FTL) 实战指南:从零搭建自动化测试流水线

本文详细介绍了Firebase Test Lab (FTL) 在移动APP测试中的实战应用,从零搭建自动化测试流水线。通过真实设备、虚拟设备和iOS设备的全面覆盖,FTL帮助开发者高效进行兼容性测试、性能监控和崩溃分析,显著提升应用质量。文章还提供了设备选择策略、成本控制技巧和CI/CD集成的最佳实践,助力团队优化测试流程。

weixin_29281915的博客 254

UVM实战 卷I学习笔记1——简单的UVM验证平台:只有driver

目录验证平台的组成最简单的验证平台——只有driverUVM如何搭建driver:加入factory机制加入objection机制加入virtual interface 个人《UVM实战卷I》学习随手笔记,此书作者:张强 验证平台的组成 一个验证平台要实现的基本功能: 模拟DUT的各种真实使用情况——给DUT施加各种激励→driver实现激励功能; 根据DUT的输出判断DUT行为是否与预期符合→scoreboard(也称为checker)——需注意判断的东西和判断的标准是什么; 收集DUT的输出并传递

weixin_41979380的博客 3891

USB协议详解第3讲(USB描述符-设备描述符)

我们第一个学习要点就是USB描述符,所谓描述符其实就是C语言里面的结构体或者数组,数组包含的信息说明当前的设备具有哪些特征。USB描述符有设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。我们先学会每个描述符的细节,我会写的非常详细且简洁,后面在学习USB枚举的时候会通过抓包和波形来学习每一个描述符在总线上的作用,并且会介绍每一个描述符是在什么时候以哪种方式在总线上进行传输的,今天主要是学习USB设备描述符的组成。 设备描述符是USB主机枚举U

一个早起的程序员 2万+

使用mmdetection快速复现计算机视觉顶会论文

使用mmdetection中支持的算法运行自定义数据集

m0_56896669的博客 2422

USB协议详解第9讲(USB描述符-HID描述符)

目录 1.HID设备概述 2.HID描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.HID描述符组成详解 1.HID设备概述 USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘、游戏手柄等,主要用于人与计算机进行交互。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断传输。 在USB协议中,HID设备的类型定义放置在接口描述符中,USB的设备描述符

一个早起的程序员 1万+

2022李宏毅作业hw1—新冠阳性人员数量预测。

从非常基础的内容开始,主要是我的水平也很基础。

YI_SHU_JIA的博客 1万+

LaMAR数据集下载和使用流程

LaMAR数据集

qq_51745206的博客 971

USB协议详解第10讲(USB描述符-报告描述符)

目录 1.报告描述符的概念和作用 2.报告描述符中的数据描述项 3.数据描述项的标签 4.STM32某鼠标设备报告描述符代码 5.报告描述符生成工具介绍 1.报告描述符的概念和作用 开门见山,报告描述符就是描述报告(HID接口上传输事务中的数据)的一组数据结构。 首先大家可能会问,报告又是什么?我们前面讲过,USB主机一般是以中断的方式向HID设备发送或者索取数据,也就是说USB主机发送一个请求,设备要根据硬件操作,向主机提交自己的状态变化,例如鼠标,当主机给鼠标设备发送请求后,鼠标需.

一个早起的程序员 1万+

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3874

USB协议详解第6讲(USB描述符-端点描述符)

目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB端点描述符的组成。 2.端点描述符组成 前面讲了设备描述符、标准配置描述符、接口描述符,本篇我们讲解端点描述符。首先要明确的一点是端点描述符不能单独返回给USB主机,主机会请求获得配置描述符集合,配置描述符集合主

一个早起的程序员 1万+

银河麒麟硬盘健康检测:smartctl/badblocks实战与坏盘预判

xfs_repair检查。S.M.A.R.T检测。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 860

基于Simulink的超级电容与锂电池混合储能协调控制仿真

摘要:本文介绍基于Simulink的光伏-混合储能系统(HESS)建模与仿真方法,通过超级电容和锂电池的协同控制实现功率平抑。系统采用直流耦合架构,利用一阶低通滤波法将总功率分解为低频(锂电池承担)和高频分量(超级电容承担),并设计SOC自平衡机制维持超级电容工作点。仿真结果表明,该方案可使锂电池电流波动降低62%,光伏功率波动率降至7.5%,有效延长电池寿命。文章详细展示了从主电路搭建、功率分配到闭环控制的完整实现步骤,为新能源系统储能优化提供实用参考。

amy_mhd的博客 136

USB协议详解第4讲(USB描述符-标准配置描述符)

目录 1.USB描述符 2.标准配置描述符组成 3.标准配置描述符组成详解 1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB标准配置描述符的组成。 2.标准配置描述符组成 一个USB设备至少有一个或者多个配置,这一点可以从设备描述符的最后一项bNumConfigurations得到,但是当前只能选择其中一种配置,每一种配置都对应一个配置描述符集合,为什么说是一个集合呢,因为这

一个早起的程序员 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

USB协议详解第5讲(USB描述符-接口描述符)

目录 1.USB描述符 2.接口描述符组成 3.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB接口描述符的组成。 2.接口描述符组成 前面讲了设备描述符和标准配置描述符,本篇我们讲解接口描述符。首先要明确的一点是接口描述符不能单独返回给USB主机,主机会请求获得配置描述符集合,配置描述符集合主要由标准配置描述符、接口描述符、端点描述符、HID描述符.

一个早起的程序员 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

USB中的描述符详解[一]

USB描述符的分类与介绍 USB的符述符分为几类?有人可能会答:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。但这里说的不是这样的。上面的几类描述符属于USB标准描述符。另外还有HID描述符和Hub描述符。所以分类是这样的: 1. 标准描述符             1) 设备描述符              2) 配置描述符              3) 字符串描述

嵌入式与人工智能天地 6305

USB描述符

在每一个USB设备内部,包含了固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型、生产厂商等信息。标准的USB设备有5种USB描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。Bit6-4,保留。bInterval : 轮训数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点,范围为1-255。wTotalLength : 返回整个数据的长度,指此配置返回的配置描述符,接口描述符以及端点描述符的全部大小。

墨小骨的博客 4490

USB学习(3):USB描述符和USB类设备

它描述了高速USB设备的信息,如果设备以另一速度运行,该描述符将发生更改,这在支持两种速度配置的设备中是必需的。同样,如果在设备以高速运行时请求此描述符,描述符读取将告诉主机有关全速配置的信息。在上一节的USB描述符部分,USB设备类的定义在:设备描述符的第四个字节和接口描述符的第六个字节。接口描述符描述了配置中的特定接口,此描述符中确定了接口的端点数量,声明了设备的USB类,供主机加载适合适驱动程序。设备描述符提供给主机一些信息,如设备符合的USB规范、设备支持的配置数量、支持的协议、制造商标识(

主要分享嵌入式软件、人工智能部分知识 4571

USB描述符(附加USB HID报告描述符 )

USB 描述符,(附加USB HID描述符以及HID报告描述符)

yingLGG的博客 5806

【STM32 USB】USB描述符

偏移字段大小(字节)说明0bLength1设备描述符的字节长度 = 18 个字节,固定为0x1211描述符类型编号,固定为0x012bcdUSB2USB版本号,表示了本设备能适用于那种协议,如USB2.0=0x0200,USB1.1=0x0110等41USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型,0x00不是在设备描述符中定义的,如HID51。

目标:MVP 1996

四、USB协议中的描述符

USB 设备通过描述符(Descriptor)向主机自描述自身的能力。描述符是一种层次化的数据结构,Host 在枚举阶段通过控制传输读取这些描述符,从而了解设备的一切信息。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;自描述读取解析USB Device描述符集USB Host加载驱动配置端点描述符回答的核心问题这是什么设备?

smallerxuan的博客 8835

USB描述符解析和USB_CCID描述符设置

USB描述符解析 USB描述符信息会被存储在USB设备中,在设备枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,按照描述符中的一些配置信息与设备建立相应的数据通道。USB描述符信息在USB协议中有详细描述。 标准的USB设备有5种USB描述

leumber的专栏 4235
上一篇: USB中的描述符详解[一]
下一篇: USB Host/SD MP3 Decoder for AUC520B
wang-bob
博客等级 码龄20年 356粉丝 112原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值