USB系列之-UAC多采样率支持详解

原创 嵌入式Lee 2024-04-18 10:02

一. 前言

前面我们分享了很多UAC的实例,包括描述符实例和描述符拓扑结构。之前的实例都是单采样率的,UAC支持多采样率,HOST可以选择指定采样率进行传输。我们在原来的基础上修改支持多采样率,介绍对应的描述符和请求,以及测试抓包。

注:UAC1.0和UAC2.0多采样率的实现差异较大,这里以UAC1.0为例,UAC2.0可以参考规格书。

.相关的描述符

首先需要修改Format Type Descriptor这里以 Type I Format Type Descriptor 为例

描述符参考

frmts10.pdf P10 Table 2-1: Type I Format Type Descriptor

bSamFreqType 字段决定了后面采样率数据的存放方式,如果是0则后面紧接着提供一个最低采样率,一个最高采样率

如果是不是0则代表后面有多少个采样率的数据,一个数据3字节

比如我们这里在原来的基础上,增加一个采样率支持8k16k,这样描述符长度由11变为14

注意配置描述符的长度也要相应修改.

SPK

        /*         * BasicAudioDevice-10.pdf P32 Table 5-16: Mono Headphone Type I Format Type Descriptor         */        0x0E,  /* bLength */        0x24,  /* bDescriptorType 见audio10.pdf P99 Table A-4: Audio Class-specific Descriptor Types CS_INTERFACE=0x24  */        0x02,  /* bDescriptorSubtype 见audio10.pdf P100 Table A-6: Audio Class-Specific AS Interface Descriptor Subtypes FORMAT_TYPE=0x02 */        0x01,  /* bFormatType 见frmts10.pdf P20 Table A-4: Format Type Codes FORMAT_TYPE_I=0x01 */        UAC_SPK_CH,  /* bNrChannels One channel. */        (UAC_SPK_BIT_RES/8)*UAC_SPK_CH,  /* bSubFrameSize Two bytes per audio subframe. */        UAC_SPK_BIT_RES,  /* bBitResolution 16 bits per sample */        0x02,  /* bSamFreqType One frequency supported. */        UVC_MAKE_U24(UAC_SPK_SAMP_REQ1), /* tSamFreq  */        UVC_MAKE_U24(UAC_SPK_SAMP_REQ2), /* tSamFreq  */

MIC

   /*         * BasicAudioDevice-10.pdf P32 Table 5-16: Mono Headphone Type I Format Type Descriptor         */        0x0E,  /* bLength */        0x24,  /* bDescriptorType 见audio10.pdf P99 Table A-4: Audio Class-specific Descriptor Types CS_INTERFACE=0x24  */        0x02,  /* bDescriptorSubtype 见audio10.pdf P100 Table A-6: Audio Class-Specific AS Interface Descriptor Subtypes FORMAT_TYPE=0x02 */        0x01,  /* bFormatType 见frmts10.pdf P20 Table A-4: Format Type Codes FORMAT_TYPE_I=0x01 */        UAC_MIC_CH,  /* bNrChannels One channel. */        (UAC_MIC_BIT_RES/8)*UAC_MIC_CH,  /* bSubFrameSize Two bytes per audio subframe. */        UAC_MIC_BIT_RES,  /* bBitResolution 16 bits per sample */        0x02,  /* bSamFreqType One frequency supported. */        UVC_MAKE_U24(UAC_MIC_SAMP_REQ1), /* tSamFreq  */        UVC_MAKE_U24(UAC_MIC_SAMP_REQ2), /* tSamFreq  */

除此之外还要在Audio Data Endpoint Descriptor中说明支持采样率可配的请求

描述符见audio10.pdf P62 Table 4-21: Class-Specific AS Isochronous Audio Data Endpoint Descriptor

bmAttributesbit01表示支持采样率可配置

描述符如下

SPK

        /*         * BasicAudioDevice-10.pdf P33 Table 5-20: Headphone Class-specific Isoc. Audio Data Endpoint Descriptor        */        0x07,  /* bLength                                */        0x25,  /* bDescriptorType 见audio10.pdf P99 Table A-4: Audio Class-specific Descriptor Types CS_ENDPOINT=0x25 */        0x01,  /* bDescriptorSubtype 见audio10.pdf P101 Table A-8: Audio Class-Specific Endpoint Descriptor Subtypes EP_GENERAL=0x01. */        0x01,  /* bmAttributes D0: Sampling Frequency D1: Pitch D7: MaxPacketsOnly */        0x00,  /* bLockDelayUnits */        0x00,  0x00, /* wLockDelay */

MIC

        /*         * BasicAudioDevice-10.pdf P33 Table 5-20: Headphone Class-specific Isoc. Audio Data Endpoint Descriptor        */        0x07,  /* bLength                                */        0x25,  /* bDescriptorType 见audio10.pdf P99 Table A-4: Audio Class-specific Descriptor Types CS_ENDPOINT=0x25 */        0x01,  /* bDescriptorSubtype 见audio10.pdf P101 Table A-8: Audio Class-Specific Endpoint Descriptor Subtypes EP_GENERAL=0x01. */        0x01,  /* bmAttributes D0: Sampling Frequency D1: Pitch D7: MaxPacketsOnly */        0x00,  /* bLockDelayUnits */        0x00,  0x00, /* wLockDelay */

.相关的请求

参加audio10.pdf P96 5.2.3.2.3.1 Sampling Frequency Control

通过SETGET请求设置和获取采样率设置值

请求是针对端点的。

所以bmRequestTypeb[4:0]2, b[6:5]1

wIndex的低字节代表端点地址

bRequest代表GET_XX或者SET_XX

wValue的高字节代表CS,这里是SAMPLING_FREQ_CONTROL=0x01

.实测

PC端声音设置,可以看到有两个采样率,可以切换

扬声器设置

麦克风设置

抓包如下

麦克风 0x82端点

22 01 00 01 82 00 03 00设置值为

0x001F408000

麦克风 0x82端点

22 01 00 01 82 00 03 00设置值为

0x003E8016000

扬声器 0x02端点

22 01 00 01 02 00 03 00设置值为

0x001F08000

扬声器 0x02端点

22 01 00 01 02 00 03 00设置值为

0x003E8016000

由于端点bInterval都是设置为4,1ms发一包, 对于高速是(2^(4-1)=8个微帧,8*125uS=1ms)。所以HOST自动根据采样率设置一包发送的大小。

16k采样率,单通道,16位就是 16*(16/2)*1=32字节/mS32字节/包。

8k采样率,单通道,16位就是 8*(16/2)*1=16字节/mS16字节/包。

.总结

以上分享了UAC多采样率支持的相关描述符和请求,以及实测,可以作为参考。


评论 (0)
  • 随着科技的发展,无线技术的应用从日常生活中的手机、耳机或智能家电外,更延伸至医疗产业。无线传输能力的演进让医疗系统变得更有弹性,使得医疗照护不再受空间限制,像是透过医疗设备的无线连网功能让医疗讯息能够及时传送到远处的医护人员,利于病情的了解与诊治。此外,在有些需要以实体线材连接使用的医疗仪器,在改以无线的方式连接后,使用上就能更加便利可携。无线超音波探头可摆脱传统有线的不便然而,医疗设备种类不胜枚举,美国食品药物管理局 (FDA) 警觉到使用无线医疗产品时,需要面对无线共存干扰的问题,当产品在不
    百佳泰测试实验室 2024-05-23 16:22 75浏览
  • 目录  引言  SD卡的发展  SD NAND卡的特性与优势  二代SD NAND五大优点  SD NAND六大主要优势  现有产品分类  实际应用场景  SD NAND芯片推荐线路连接:  CSNP4GCR01-AMW的介绍  基础使用例程  例程环境简介  硬件设备及电路  项目创建流程  代码  例程结果  对比市场现有产品  创世半导体(CS)是全球首家推出SD NAND FLASH产品的厂商,SD NAND的出现大大降低了使用 NAND FLASH 的技术难度。  ——————————
    雷龙发展 2024-05-21 17:40 95浏览
  • 人形机器人与其他特定情形机器人最大区别的就在于应用场景的多元化。毕竟,人形机器人大规模落地就必须要做到「通用性」。01、2024,一日千里的人形机器人虽然与2023年仅一“墙”之隔,但2024年走过不到4个月的人形机器人领域好似已过尽千帆。去年底,业界还在感叹特斯拉人形机器人Optimus的进化之快,Optimus-Gen 2相比上一代在体重、运动能力、动作精细度等多维度均有大幅提升。今年初,Optimus-Gen 3已经再次自我革新。日历翻到2024年,人形机器人行业可谓一日千里。年初,在蔚来
    艾迈斯欧司朗 2024-05-22 18:35 91浏览
  • 根据您提供的文本描述,这个软件错误提示窗口可能是由于以下原因导致的: 1. 文件路径不正确:在“Drivers\\32g003_sttdperiph_driver\\32g003_gpio.c”路径下的文件可能被移动或重命名,导致系统找不到正确的文件。 2. 文件损坏:该文件可能已经损坏或丢失。 3. 权限问题:可能没有足够的权限访问该文件。 4. 软件配置问题:软件的配置可能与当前的操作系统或其他软件不兼容。 5. 安装或更新问题:软件可能在安装或更新过程中遇到问题。 6. 硬件问题:如果这
    丙丁先生 2024-05-23 06:47 83浏览
  • 亲爱的媒体与自媒体创作者:英国树莓派(Raspberry Pi)公司即将于6月份首次登陆上海,参加Embedded World上海国际嵌入式展!这是我们首次踏足这一展会,我们非常期待与您共同见证这个历史时刻。作为树莓派公司在Embedded World上海的首秀,我们诚挚邀请您免费加入我们的团队,共同探索树莓派的魅力。您将有机会在展台上与我们进行深入交流,并可进行拍照、录制视频、直播活动等。此外,我们还将提供采访的机会,让您与树莓派公司的英国高管和技术专家进行深度对话(现场提供翻译人员),了解最
    树莓派开发者 2024-05-22 16:35 95浏览
  • 概述近年来,工业自动化领域对智能机器人运动控制系统的需求不断增长。常见的工业机器人运动控制方式有两种:一种是基于工控机和控制卡,功能强大但复杂、布线多、兼容性差;另一种是基于软PLC,使用个人计算机或嵌入式控制器,具有开放的体系结构、便于开发和维护,支持多种编程语言,不受技术垄断限制。宏集的MC系列控制器,结合了先进的CODESYS软PLC编程环境,为用户带来了无与伦比的优势和灵活性。控制系统方案设计宏集机器人控制系统采用一主多从的控制模式,主站采用宏集MC-Prime控制器,从站采用带Ethe
    宏集科技 2024-05-23 14:33 70浏览
  • BOR(Brown-out Reset)是一种低电压复位,当电源电压低于设定的阈值时,系统会自动复位。这种复位通常用于保护硬件设备,防止因电压过低导致的设备损坏。 IWDT_Reset(Independent Watchdog Timer Reset)是一种独立看门狗定时器复位,当系统运行过程中出现故障或死循环时,看门狗定时器会在一定时间后自动复位系统。这种复位通常用于检测和修复软件故障。以下是一个简单的BOR和IWDT_Reset的代码示例: ```c #include "stm32f4x
    丙丁先生 2024-05-22 12:39 88浏览
  •     确定产品参数,或者器件选型,都会遇到数值序列。比如功率MOSFET的耐压,20V、30V、40V和60V,跳过了50V。做USB充电头,输出功率 5W、10W、2W、65W、140W。这样的例子很多。    ISO组织定义了R优选数系,这是一个范围1到10的几何级数数列。当供应链普遍采用R优选数系时,可以使技术和商业变得便捷和经济。R是为了纪念一位名叫 Charles Renard的法国上校,他用优先数把军用气球所需的425种直径的绳索,减少到17
    电子知识打边炉 2024-05-22 22:20 93浏览
  • 在现代电子设备遍布的时代,电源模块的设计与应用成为了电子工程领域中的核心议题。而LDO(低压差线性稳压器)电源模块,因其出色的线性特性和稳定性,在众多应用中备受青睐。为了满足不断增长的电子设备性能需求,如何优化LDO电源模块PCB设计,实现更高的电源效率和稳定性,成为了工程师们迫切需要解决的问题。LDO在电源设计中扮演着至关重要的角色,能够在输入输出间维持较小的压差,使得线性电压调整更为高效。当输出电压在正常工作状态下下降至额定输出电压的98%时,对应的输入与输出电压差即为Drop电压。值得注意
    丙丁先生 2024-05-22 09:24 98浏览
  • 背景在现代汽车电子技术中,ECU(电子控制单元)的软件升级是一项关键任务。为了提高数据传输的效率和安全性,压缩刷写技术应运而生。通过数据压缩传输,我们可以有效地增加带宽利用率,减少刷写工具与ECU之间的数据传输量,从而显著缩短ECU升级时间。此外,为了加强数据的安全性和保密性,数据传输还可以进行加密处理。在ISO14229-1规范中,请求下载服务(SID=0x34)和请求文件传输服务(0x38)定义了数据可以基于压缩和加密的方式进行传输。本文以请求下载服务为例重点介绍数据压缩部分。1.ISO14
    北汇信息 2024-05-23 11:02 54浏览
  • 2020年9月,中国仪器仪表行业协会传感器分会、中国仪器仪表学会传感器分会、中国仪器仪表学会仪表元件分会、传感器国家工程研究中心四个中国传感器产业权威机构,联合发布了《中国传感器(技术、产业)发展蓝皮书》,堪称当时对中国传感器产业研究最权威的报告。报告中,特别提到当时中国传感产业的现状令人担忧,产业空心化现象不容忽视:“国内中高端传感器进口占比达 80%,传感器芯片进口更是达90%,国产化缺口巨大。其中数字化、智能化、微型化等高新技术产品严重短缺。国家重大装备所需高端产品主要依赖进口。”▲来源:
    传感器专家网 2024-05-22 10:16 125浏览
  • 数据中心与云端存储新战力 – PCIe 5.0 SSD随着人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)爆炸性的应用如雨后春笋般的出现,代表着数据中心与储存服务器需要更高效能、更低延迟的高速传输需求,以应付海量数据运算存取,对储存容量、储存性能的需求空前高涨。在市场上,我们也可以观察到PCIe 5.0接口逐渐在系统以及服务器上实际搭载应用,就接口规范数据来看,可以发现到PCIe 5.0的传输速率是前代PCIe 4.0的两倍
    百佳泰测试实验室 2024-05-23 15:24 70浏览
  • ​Raspberry Pi M.2 HAT+ 使您能够将 M.2 M-key 外设(如 NVMe 驱动器和人工智能加速器)连接到 Raspberry Pi 5。它能够提供与这些外设之间的快数据传输(高达 500 MB/s),现在就可以从树莓派的授权经销商网络购买,售价仅为 12 美元。经销商:https://www.edatec.cn/cn/Raspberry Pi 5 早在去年 9 月就已推出,并搭载了一项令人兴奋的新功能。不是电源按钮,也不是电池支持的实时时钟。我们说的是 PCI Expre
    树莓派开发者 2024-05-23 16:31 76浏览
  •     阅读IEC标准,一个办法是看GB和GBT标准。电工学和电子学方面的国家标准(GB)很多来自IEC标准。将IEC标准完全汉化(IDT,EQU)或者略加修改(MOD),就成了 GB 或者 GB/T 标准了。由于这样的关联,导致“国家标准全文公开”这个工具没啥用,因为版权保护的缘故,看不到。    偶然发现下面这个网站,可以方便地查询IEC标准对应哪些GB标准。    国家标准 - 全国标准信息公共服务平台  &n
    电子知识打边炉 2024-05-21 22:10 90浏览
  • 在前面的几章节中探讨了aiSim仿真合成数据的置信度,此外在场景重建和测试流程闭环的过程中,难免会面临3D场景制作重建耗时长、成本高、扩展性低以及交通状况复杂程度难以满意等问题,当前的主要挑战在于如何自动化生成3D静态场景并添加动态实例编辑,从而有效缩短测试流程,扩大仿真测试范围。图1:实际图像图2:NeRF重建场景对于3D重建,目前主要的两种解决方案为NeRF和3DGS。一、NeRF1、神经辐射场(Neural Radiance Fields)NeRF是将三维空间中的每个点的颜色和密度信息编码
    康谋 2024-05-23 10:20 41浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦