查看: 220|回复: 0

[原创] 基于 MCXN236 实现 UAC2.0 多通道 TDM Audio Bridge

[复制链接]

该用户从未签到

789

主题

6451

帖子

0

超级版主

Rank: 8Rank: 8

积分
29488
最后登录
2026-11-10
发表于 2026-10-10 16:03:13 | 显示全部楼层 |阅读模式
本帖最后由 小恩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
通道配置
客户的收发通道并不对称:
音频方向通道数
Playback2 Channels
Recording6 Channels


即:
Playback路径
  1. PC
  2. ↓
  3. USB OUT
  4. ↓
  5. MCU
  6. ↓
  7. TDM TX
  8. ↓
  9. Codec DAC
  10. ↓
  11. Speaker
复制代码




Recording路径
  1. Microphone
  2. ↓
  3. Codec ADC
  4. ↓
  5. TDM RX
  6. ↓
  7. MCU
  8. ↓
  9. USB IN
  10. ↓
  11. 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,因此需要增加一个转接板完成音频信号引出与连接。


硬件连接

项目最终硬件组成如下:
  1. FRDM-MCXN236
  2.         │
  3.         │
  4. MCXN FRDM Adapter Board
  5.         │
  6.         │
  7. AUD-EXP-42448
  8.         │
  9.         │
  10. Speaker / Microphone
复制代码

根据README说明,FRDM-MCXN236默认配置面向电机控制应用,需要调整SJ3焊盘配置后才能启用SAI接口。

3. 方案选型

项目最终基于两个SDK示例实现。

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 Rate48 kHz
FormatPCM
Valid Bits24
Slot Width32
TDM Slots8


虽然实际音频数据仅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实现

项目采用:
  1. 8 Slots per Frame
  2. 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处理功能,为多通道音频应用提供参考设计。












回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2026-11-11 02:45 , Processed in 0.064997 second(s), 20 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表