USB 描述符
本文系统解析了USB描述符的类型、层级关系与应用逻辑。USB描述符是设备与主机沟通的"身份名片",包括设备、配置、接口和端点四类核心描述符,以及可选的字符串描述符。这些描述符按"设备→配置→接口→端点"的层级嵌套,共同构成设备的完整描述。设备仅有一个设备描述符,而配置、接口和端点可多个。接口代表逻辑功能划分,端点是具体传输通道。多配置设备同一时间仅激活一种配
目录
一、前言
在前一篇笔记中,我们通过 usbprotocolsuite 工具直观体验了 USB 数据传输的格式与流程,而电脑能精准识别接入的 USB 设备(如 U 盘、耳机、4G 上网卡),并匹配对应的驱动程序,核心依赖于 USB 设备硬件中存储的标准化设备信息 —— 描述符(Descriptors)。描述符是 USB 设备与 Host 主机沟通的 “身份名片”,定义了设备的类型、功能、传输规则等关键信息,是 USB 设备枚举与正常通信的基础。本次笔记将系统拆解 USB 描述符的类型、层级关系与应用逻辑,吃透 USB 设备识别的核心原理。
二、USB 描述符的核心定义与参考资料
USB 设备接入电脑后能被准确识别,本质是因为设备的硬件存储区域中,预存了用于描述自身属性的格式化数据,这类数据就被称为USB 描述符。Host 主机通过控制传输读取这些描述符,即可掌握设备的全部关键信息,完成设备的识别与配置。
学习 USB 描述符可参考以下权威资料,覆盖理论与实战层面:
- 《圈圈教你玩 USB》(入门经典,结合实例讲解描述符应用)
- 简书 jianshu_kevin@126.com 发布的 USB 协议系列文章(USB 协议(一)、USB 协议 (二)、USB 协议 (三))
- USB 官方文档:https://www.usb.org/documents(协议标准的权威出处)
- 《usb_20.pdf》中《Chapter 9 USB Device Framework》章节(描述符格式的官方规范)
描述符的核心作用,是回答 Host 主机的核心问题:“如何描述设备的配置、接口、端点等核心属性?”—— 通过不同类型的描述符,可完整定义设备的所有关键维度,从整体身份到具体的传输端点,形成一套层级清晰的描述体系。
三、四类核心描述符的层级与作用
USB 协议定义了四类核心描述符,按 “设备→配置→接口→端点” 的层级嵌套,共同构成设备的完整描述,每类描述符的作用与特性如下:
1. 设备描述符(Device Descriptor)
- 唯一性:一个 USB 设备仅有一个设备描述符,是设备的 “核心身份标识”;
- 核心信息:包含设备的厂商 ID(VID)、产品 ID(PID)、支持的 USB 协议版本、设备所属类别、配置数量、端点 0 的最大传输字节数等;
- 关键作用:Host 首次枚举设备时,先读取设备描述符,确定设备的基础身份与通信能力。
2. 配置描述符(Configuration Descriptor)
- 数量特性:一个 USB 设备可能包含多个配置描述符;
- 核心信息:定义当前配置下的接口数量、设备的供电方式(总线供电 / 自供电)、设备所需的最大工作电流等;
- 关键作用:Host 可选择不同的配置描述符,让设备工作在不同的功能模式下。
3. 接口描述符(Interface Descriptor)
- 层级关系:隶属于某一个配置描述符,一个配置描述符下可能包含多个接口描述符;
- 核心信息:定义接口所属的功能类别(如音频、存储、人机交互)、接口的设置(Setting)数量、端点数量等;
- 关键作用:将设备的功能拆分为独立的逻辑单元,每个接口对应一个具体功能。
4. 端点描述符(Endpoint Descriptor)
- 层级关系:隶属于某一个接口描述符,一个接口描述符下可能包含多个端点描述符;
- 核心信息:定义端点号、数据传输方向(IN/OUT)、端点类型(批量 / 中断 / 同步)、端点的最大数据包长度、查询周期(仅中断 / 同步端点)等;
- 关键作用:明确每个数据传输通道的规则,是 Host 与设备进行数据交互的具体依据。
四、字符串描述符的补充作用
除了上述四类核心描述符,USB 协议还定义了字符串描述符(String descriptors),这类描述符是可选配置,核心作用是用可读的文字(如中文、英文)描述设备信息,比如设备名称、厂商名称、产品序列号等。
字符串描述符不影响设备的功能与通信,仅用于提升人机交互体验,比如电脑设备管理器中显示的 “XX 品牌 U 盘”“USB 耳机” 等名称,均来自字符串描述符。
五、USB 设备的配置与接口逻辑
Host 主机在 SETUP 事务的 DATA0 数据包中,会明确指定要访问的描述符类型(Device/Interface/Endpoint),以此精准读取设备的对应信息。理解描述符的应用,需结合设备的配置、接口、端点逻辑:
1. 多配置的应用场景
一个 USB 设备可支持多种配置(Configuration),同一时间仅能激活一种配置。
典型案例:4G 上网卡通常包含 2 种配置 ——U 盘模式与上网卡模式。首次插入电脑时,设备激活 U 盘配置,用户可安装驱动程序;驱动安装完成后重新插入,设备自动切换为上网卡配置,实现网络连接功能。
绝大多数普通 USB 设备(如 U 盘、鼠标)仅包含一种配置,满足基础功能需求。
2. 多接口的功能划分
一个配置下可包含多个接口(Interface),接口等同于设备的 “功能模块”,是逻辑层面的功能划分,而非物理硬件。
典型案例:USB 耳机包含两个接口 —— 音频收发接口(负责声音播放 / 录音)、按键控制接口(负责音量调节、暂停 / 播放等按键操作),两个接口独立工作,共同构成耳机的完整功能。
3. 接口的多设置与端点规则
一个接口可包含多个设置(Setting),比如默认设置下使用低带宽传输,切换设置后可使用高带宽,适配不同的传输需求;
一个接口由一个或多个端点组成,其中端点 0 是设备级别的通用端点,双向传输,主要用于控制传输(如读取描述符、配置设备);接口的其他端点均为单向传输,按功能分为批量、中断、同步三类端点,分别适配不同的传输场景。
4. 实例解析:USB 耳机的描述符逻辑
USB 耳机的 “声音播放 / 录音” 功能,本质是数据传输方向的差异:播放是 Host 向耳机写数据,录音是 Host 从耳机读数据,这种双向交互需要不同的端点支撑;而 “声音” 与 “按键控制” 的功能拆分,则依赖接口描述符实现。正是通过设备、配置、接口、端点描述符的层级配合,Host 才能精准识别耳机的功能,并完成数据的定向传输。
六、USB 描述符的格式规范
所有 USB 描述符都遵循固定的格式化结构,无论哪种类型的描述符,均由 “长度字段 + 类型字段 + 具体参数字段” 组成,且字段的字节数、数据类型均有严格的协议规范。这种固定格式保证了不同厂商的 USB 设备,都能被 Host 主机正确解析,是 USB 设备 “即插即用” 的核心前提。
七、总结
- USB 描述符是设备的 “身份名片”,分设备 / 配置 / 接口 / 端点 / 字符串五类,层级嵌套且格式固定;
- 设备仅 1 个设备描述符,配置 / 接口 / 端点可多个,接口是逻辑功能划分,端点是具体传输通道;
- 多配置设备同一时间仅激活一种,端点 0 为双向控制端点,其他端点单向且分三类传输类型。
八、结尾
USB 描述符是理解 USB 设备枚举与通信的关键,吃透描述符的层级与作用,就能明白 Host 如何识别并配置不同的 USB 设备。描述符的规则看似繁琐,实则是 USB 协议 “标准化、通用化” 的体现,是嵌入式 USB 开发的核心基础。感谢各位的阅读,持续关注本系列笔记,一起深挖 USB 协议细节,夯实嵌入式通信开发的技术功底!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)