UAC1.0音频控制描述符下的中断端点 音频设备状态上报
2025-11-28
本文链接为:http://www.usbzh.com/article/detail-1600.html ,欢迎转载,转载请附上本文链接。
UAC1.0配置描置描述符中的接口描述符分为两类:
- 第一类为音频控制接口描述符,可以有0个或1个中断端点描述符,用于向主机报告音频设备内部各种组件(终端、单元、接口、端点)的状态变化,它逻辑上归属于AudioControl接口,作为整个音频功能集合的状态报告中心.
- 第二类为音频数据流接口描述符,可以有0个或1个同步端点描述符,用于传输音频数据
假如音频控制接口描述符中含有1个中断端点描述符,则其内容一般如下:
static struct usb_endpoint_descriptor ac_int_ep_desc = {
.bLength = USB_DT_ENDPOINT_SIZE,
.bDescriptorType = USB_DT_ENDPOINT,
.bEndpointAddress = USB_DIR_IN,
.bmAttributes = USB_ENDPOINT_XFER_INT,
.wMaxPacketSize = cpu_to_le16(2),
.bInterval = 4,
};
可以看到,其类型为中断输入类型,其数据包长度为2字节。
其2字节的数据含义如下:
struct uac1_status_word {
__u8 bStatusType;
__u8 bOriginator;
} __attribute__((packed));
| 偏移量 | 字段 | 大小 | 值 | 说明与描述 |
|---|---|---|---|---|
| 0 | bStatusType | 1 | 位图 | D7: 中断挂起 D6: 内存内容已改变 D5..4: 保留 D3..0: 发起源 0 = AudioControl 接口 1 = AudioStreaming 接口 2 = AudioStreaming 端点 3..15 = 保留 |
| 1 | bOriginator | 1 | 数值 | 报告中断的终端(Terminal)、单元(Unit)、接口或端点的ID。 |
数据结构:中断数据固定为2字节,包含两个关键字段:
- bStatusType`(状态类型)**:一个位图字段,核心信息包括:
- D7位(中断挂起):表示是否有中断尚未处理。
- D6位(内存改变):表示有实体的内存内容发生变化。
- D3-D0位(发起源类型):指明是谁报告的中断(如Control接口、Streaming接口或端点)。
- bOriginator(发起源ID):一个数字字段,用于标识具体的报告者。其含义取决于
bStatusType中的发起源类型**,可能是终端/单元ID、接口编号或端点地址。
处理流程:
- 当主机收到中断后,需要解析这两个字段以确定“谁”因“何事”报告。
- 根据
bStatusType的D6位决定后续操作:- D6=0 -> 向发起源发出 Get Status 请求。
- D6=1 -> 向发起源发出 Get Memory 请求。
- 正确执行这些请求后,相应的状态位(如中断挂起位、内存改变位)应被清除。
bStatusType有低四位为表示状态来源:
/* status word format (3.7.1.1) */
#define UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF 0x0 // 音频控制接口
#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_IF 0x1 // 音频流接口
#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_EP 0x2 // 音频流端点
高4位表示来源的具体类型:
#define UAC1_STATUS_TYPE_IRQ_PENDING (1 << 7) // 第7位:中断挂起
#define UAC1_STATUS_TYPE_MEM_CHANGED (1 << 6) // 第6位:内存改变
而bStatusType当为UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF值时,其bOriginator表示UnitId.
如音频控制拓扑结构中FeatureUnit需要上状态时:
msg->bStatusType = UAC1_STATUS_TYPE_IRQ_PENDING | UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF;
msg->bOriginator = unit_id;
本文链接为:http://www.usbzh.com/article/detail-1600.html ,欢迎转载,转载请附上本文链接。FeatureUnit是UAC中用于音量控制等的拓扑单元
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936 USB技术交流3:1031974172
UAC规范(USB音频)





