本帖最后由 小恩GG 于 2026-10-10 16:11 编辑
1. 项目背景
在专业音频设备、会议系统、多通道采集设备以及 USB Audio Interface 产品中,经常需要实现 USB 与外部音频 Codec 之间的数据桥接。 某客户希望开发一款基于 USB Audio Class 2.0(UAC2.0)的多通道音频桥接设备,并提出以下要求:
USB侧要求- USB Audio Class 2.0 Device
- Full-Duplex Audio
- Windows 原生驱动支持
- 无需安装任何自定义驱动
也就是说: - MCU作为USB Device
- Windows PC作为USB Host
- 使用Windows自带UAC2.0驱动
- 同时支持播放与录音
音频格式要求- 48 kHz Sampling Rate
- PCM Format
- 24-bit Valid Audio Data
- 32-bit Slot Alignment
Codec接口要求MCU与Codec之间采用SAI TDM接口: - TDM Mode
- 32-bit Slot Width
- 24-bit Valid Audio Data
- 48 kHz Sampling Rate
通道配置客户的收发通道并不对称: | 音频方向 | 通道数 | | Playback | 2 Channels | | Recording | 6 Channels |
即:
Playback路径- PC
- ↓
- USB OUT
- ↓
- MCU
- ↓
- TDM TX
- ↓
- Codec DAC
- ↓
- Speaker
复制代码
Recording路径
- Microphone
- ↓
- Codec ADC
- ↓
- TDM RX
- ↓
- MCU
- ↓
- USB IN
- ↓
- PC
复制代码与常见的Stereo USB Audio Demo相比,该项目需要同时解决: - UAC2多通道Descriptor配置
- 非对称通道设计
- TDM多路音频传输
- USB与SAI实时桥接
等问题。
2. 硬件平台
本项目采用以下硬件平台:
MCU FRDM-MCXN236
MCXN236集成:
USB Device Controller Flexcomm SAI Interface eDMA Controller Cortex-M33 Core
能够满足本项目对音频实时传输的需求。
Audio Codec CS42448
本项目采用CS42448作为外部Codec。
CS42448能够提供:
多通道ADC 多通道DAC TDM接口
适合多路音频采集与播放场景。
Audio Expansion Board AUD-EXP-42448 Rev B
用于提供:
Audio Codec Mic输入 Headphone输出 TDM接口
Adapter Board MCXN FRDM Adapter Board
由于FRDM-MCXN236不能直接连接AUD-EXP-42448,因此需要增加一个转接板完成音频信号引出与连接。
硬件连接
项目最终硬件组成如下: - FRDM-MCXN236
- │
- │
- MCXN FRDM Adapter Board
- │
- │
- AUD-EXP-42448
- │
- │
- Speaker / Microphone
复制代码
根据README说明,FRDM-MCXN236默认配置面向电机控制应用,需要调整SJ3焊盘配置后才能启用SAI接口。
USB部分
来自FRDM-MCXN236 SDK:
dev_composite_hid_audio_unified_bm
提供:USB Device Stack
UAC2 Framework
Audio Endpoint
Windows兼容Descriptor
TDM部分
来自RT1170 SDK:
sai_edma_tdm_record_playback
提供:
TDM配置参考
EDMA传输框架
Codec初始化参考
多Slot管理方式
项目主要工作包括:
3.1. 修改USB Audio Descriptor
实现:
Playback 2 Channel
Recording 6 Channel
24-bit Audio
3.2. 移植TDM实现
将RT1170示例中的:
SAI
eDMA
TDM
3.3. 调整通道映射
原参考工程:
8 Channels
修改为:
Playback 2ch
Recording 6ch
满足客户实际需求。
4. 系统架构
整体软件架构如下:
Windows PC
+------------------------+
| Native UAC2 Driver |
+------------+-----------+
|
USB OUT / IN
|
+--------------------------------+
| MCXN236 |
| |
| USB RX ------> TDM TX |
| USB TX <------ TDM RX |
+--------------------------------+
|
TDM
|
+--------------------------------+
| CS42448 |
| |
| Playback DAC (2ch) |
| Recording ADC (6ch) |
+--------------------------------+
5. 音频数据格式设计
整个系统采用统一音频格式:
| 参数 | 配置 | | Sampling Rate | 48 kHz | | Format | PCM | | Valid Bits | 24 | | Slot Width | 32 | | TDM Slots | 8 |
虽然实际音频数据仅24 bit:
+----------------------------+
| 24-bit Audio | Padding |
+----------------------------+
32-bit Slot
但采用32-bit Slot能够保证:
TDM对齐
DMA效率
USB数据组织简单
6. UAC2 Descriptor修改
SDK默认Audio Demo配置为:
Playback : 2ch
Recording: 2ch
16-bit
客户需求则为:
Playback : 2ch
Recording: 6ch
24-bit
因此需要修改:
Playback Descriptor
Channel Count = 2
Bit Resolution = 24
Recording Descriptor
Channel Count = 6
Bit Resolution = 24
Streaming Format
配置:
PCM
48kHz
24-bit
完成后Windows自动加载UAC2驱动,无需安装任何额外软件。
7. SAI TDM实现
项目采用:
- 8 Slots per Frame
- 32-bit Slot Width
复制代码 TDM结构如下:
Frame
├─ Slot0
├─ Slot1
├─ Slot2
├─ Slot3
├─ Slot4
├─ Slot5
├─ Slot6
└─ Slot7
Playback映射
Slot0 → Left
Slot1 → Right
Recording映射
Slot0 → Mic1
Slot1 → Mic2
Slot2 → Mic3
Slot3 → Mic4
Slot4 → Mic5
Slot5 → Mic6
剩余Slot保留。
8. eDMA双向音频传输
为了保证实时性,USB与SAI均通过eDMA搬运数据。
Playback
USB OUT
↓
Ping-Pong Buffer
↓
eDMA
↓
SAI TX
↓
CS42448 DAC
Recording
CS42448 ADC
↓
SAI RX
↓
eDMA
↓
Ping-Pong Buffer
↓
USB IN
通过双缓冲机制实现连续音频流传输,避免:
Underflow
Overflow
Audio Drop
9. 测试结果
Windows设备枚举
设备成功被Windows识别为:
USB Speaker
2 Channel
24-bit
48 kHz
USB Microphone
6 Channel
24-bit
48 kHz
``
与项目目标一致。
Playback测试
连接耳机至AUD-EXP-42448:
Windows Media Player
↓
USB Speaker
↓
MCXN236
↓
TDM TX
↓
CS42448 DAC
↓
Headphone
能够正常播放音频。
Recording测试
通过Windows录音机进行测试:
MIC
↓
CS42448 ADC
↓
TDM RX
↓
MCXN236
↓
USB IN
↓
Windows Recorder
能够正常录制和回放音频。
10. 总结
本文介绍了基于MCXN236实现UAC2.0多通道音频桥接方案的过程,通过整合MCXN236 SDK中的USB Audio框架与RT1170 SDK中的SAI TDM参考设计,实现了一个支持Windows原生驱动的Full-Duplex Audio Bridge。
该方案具备以下特性:
USB Audio Class 2.0
Windows Native Driver
Full-Duplex Audio
Playback 2 Channel
Recording 6 Channel
24-bit PCM
48 kHz Sampling Rate
SAI TDM Interface
eDMA Streaming
最终实现了PC与多通道音频Codec之间的实时音频桥接,可广泛应用于:
USB Audio Interface
多通道录音设备
会议音频系统
工业音频采集设备
音频网关产品
作为后续扩展,该架构还可以进一步支持更多TDM通道、更高采样率以及Audio DSP处理功能,为多通道音频应用提供参考设计。
|