USB 接口描述符中的 bAlternateSetting 字段以及单接口设备与多接口设备
关于 Interface 描述符中的 bAlternateSetting 字段
bAlternateSetting 用于在同一个接口中的多个描述符中进行切换:
在USB协议中同一个配置中的不同接口不能共用端点
同一个接口下可以有多个接口描述符(备用),用
bAlternateSetting来识别,每一个接口都有一个惟一确定的接口编号,但是一个接口却可以由不只一个接口描述符来描述它。USB 允许多个接口描述符来描述同一个接口,且这些描述符都可通过命令切换。控制传输中的
Get_Interface命令可以用来得到目前正在使用的描述一个确定接口的接口描述符的编号,即对应bAlternateSetting字段,而Set_Interface命令则以此字段值为参数, 用来使相应的接口描述符描述某个确定的接口。同一个接口的不同接口描述符,可以拥有相同的端点。
USB2.0协议标准描述符 - 字由人 - 博客园 (cnblogs.com)
USB 设备布局 - Windows drivers | Microsoft Docs
USB Configuration Descriptor 定义设备的功能,主要是电源功能和接口。设备可以有多个配置,但一次只有一个处于活动状态。活动配置不是由 USB 驱动进程堆栈选择的,但可能由应用进程、驱动进程和设备驱动进程启动。设备驱动进程选择活动配置。
一个配置有一个或多个USB 接口,接口定义了设备的功能。通常,功能和接口之间是一对一的。但是,某些设备会公开与一个功能相关的多个接口。在这种情况下,设备可以具有接口关联描述符 (interface association descriptor, IAD)。IAD 将属于特定功能的接口组合在一起。
每个接口都包含一个或多个 终结点,用于将数据传输到设备或从设备传输数据。 此外,接口还包含用于定义与接口关联的函数的带宽要求的 备用设置 。 总之,一组终结点构成接口,一组接口构成设备中的配置。
那么,选择活动配置意味着什么? 在设备初始化期间,USB 设备的设备驱动程序必须选择配置、该配置中的一个或多个接口以及每个接口的备用设置。 大多数 USB 设备不提供多个接口或多个备用设置。
单接口设备

多接口设备

浙公网安备 33010602011771号