UAC规范(USB音频)
+ -

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;

FeatureUnit是UAC中用于音量控制等的拓扑单元

本文链接为:http://www.usbzh.com/article/detail-1600.html ,欢迎转载,转载请附上本文链接。

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

0 篇笔记 写笔记

UVC 视频控制接口中断端点描述符
通过视频控制接口包括用于实现特定类请求的控制端点(默认端点0)用于返回中断状态信息的可选中断状态返回端点。视频控制端点描述符标准的视频控制端点描述符使用端点0来实现标准的中断控制,故无须额外的标准视频控制端点描述符。特定类的视频控制端点描述符使用端点0来实现特定类视频控制,故无须特定类的视频控制端点......
USB 中断端点的高速高带宽
对于中断事务,如果中断端点在微帧其间NAK了事务,则表示设备端数据没有准备好或设备无数据可传,主机需要放弃本次传输,在下一个微帧再发起事务。如果设备的中断端点超时了该事务,则主机需要重试该事务。端点描述符中指定了该中断端点在一个微帧其间支持的最大事务个数。如果未达到每个微帧的最大事务数,主机控制器可......
UVC 状态中断端点
UVC视频控制接口VC可以选择性地支持中断端点,用于通知主机其相机拓扑结构内部各个终端、实例的状态- bStatusType:。所以如果中断端点存在,整个UVC视频控制接口中的所有拓扑单元状态信息的改变,都需要通过该中断端点来通知主机。上面所说的UVC控制接口中的中断端点是可选的,但在以下的三种情......
UAC1.0音频控制描述符下的中断端点
UAC1.0配置描置描述符中的接口描述符分为两类:第一类为音频控制接口描述符,可以有0个或1个中断端点描述符,用于向主机报告音频设备内部各种组件(终端、单元、接口、端点)的状态变化,它逻辑上归属于AudioControl接口,作为整个音频功能集合的状态报告中心.第二类为音频数据流接口描述符,可以......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!