3. 音频终端系统架构设计

音频AI终端的系统架构,本质上是一条从“声波”到“语义”再到“动作/回放”的完整信号链,同时被存储、无线与电源三条支撑链约束。STM32N6的定位决定了它适合承担“前端采集+本地AI推理+系统调度”的核心角色:它拥有NPU、大容量片上RAM与丰富的音频外设接口,但真正决定产品可用性的,是麦克风阵列、编解码器、功放、存储、无线连接与电源管理之间的接口匹配与时序协同。本节先建立整体框图与信号链,再逐段说明关键接口、参数与设计取舍。

一、系统框图:以STM32N6为中心的三层结构

建议把整机划分为三层:感知与执行层(麦克风阵列、编解码器、功放、扬声器)、计算与存储层(STM32N6、外部Flash、PSRAM/SD卡)、连接与供电层(Wi-Fi/蓝牙模组、PMIC、电池与充电)。三层之间通过明确的数字接口连接:麦克风阵列以I²S/PDM进入STM32N6,编解码器以I²S+TDM或SAI连接,功放以I²S或模拟差分输入,存储走XSPI/Octo-SPI与SDMMC,无线模组走SDIO或SPI+UART,电源管理通过I²C配置PMIC并监测电量。

STM32N6 音频AI终端系统框图与信号链 感知与执行层 麦克风阵列 4×PDM MEMS / 环形布局 间距 40mm,采样 16kHz 音频编解码器 WM8960 / ES8388 I²S + I²C 控制 功放 + 扬声器 Class-D,3W/4Ω I²S 输入或差分模拟 本地交互 LED 指示 / 按键 唤醒词触发状态 GPIO / PWM 计算与存储层 STM32N6 Cortex-M55 + NPU 600 GOPS 4.2MB 片上 RAM / 音频子系统 SAI / I²S / PDM / DFSDM DMA 双缓冲 + 中断调度 外部存储 XSPI Flash:模型/固件 SDMMC:录音/日志 音频缓冲 PCM 环形缓冲 32ms/帧 特征提取 MFCC 输入 AI 推理:唤醒词 / 命令词 / 降噪 连接与供电层 无线连接 Wi-Fi 6 / BLE 5.2 模组 SDIO 数据 + UART 控制 电源管理 PMIC:3.3V/1.8V/1.2V I²C 配置 + 电量计 电池与充电 3.7V 锂电 2000mAh USB-C 5V 充电 低功耗模式 Stop2 / 唤醒词常开 PDM/I²S I²S I²S/模拟 SDIO I²C 电源 信号链:声波 → MEMS 麦克风 → PDM/I²S → STM32N6 降噪/特征提取 → NPU 推理 → 编解码器 → 功放 → 扬声器

二、麦克风阵列:从物理布局到数字接口

麦克风阵列的设计起点是拾音几何。以4麦环形阵列为例,直径40mm、间距约40mm,在16kHz采样率下,声速340m/s对应波长约21mm,因此阵列对1kHz以上信号具有明显空间分辨能力。若采用PDM MEMS麦克风,每颗麦克风输出1bit PDM流,STM32N6的DFSDM或SAI-PDM接口可同时接收多路,经抽取滤波后得到16kHz/16bit PCM。关键参数是时钟同步:所有麦克风必须共享同一PDM时钟,否则通道间相位差会破坏波束形成。实际布线时,PDM时钟走线应等长,数据线尽量短,避免串扰。

若使用I²S数字麦克风,则需注意TDM模式下的时隙分配。例如4麦通过TDM8模式,每帧8个时隙,前4个时隙分配给麦克风,后4个保留。STM32N6的SAI支持TDM,配置时需设置SAI_Block_TypeDef的FrameLength与SlotSize,并确保DMA双缓冲半满/全满中断能及时搬运数据。一个常见教学示例:16kHz、16bit、4通道,每帧数据量=16000×2×4=128kB/s,DMA缓冲设为2×512字节,则中断间隔约4ms,CPU有足够时间做前端处理。

三、编解码器与功放:回放链的接口与增益分配

编解码器承担ADC/DAC与模拟前端。以ES8388为例,其I²S接口与STM32N6的SAI相连,I²C用于配置采样率、增益与通路。回放链的增益分配需要逐级计算:DAC输出典型1Vrms,编解码器内部增益0dB,功放增益20dB,则扬声器端约10Vrms,对应4Ω负载约25W——这显然过大。实际应把编解码器输出设为-6dB,功放增益设为12dB,得到约2Vrms,对应4Ω约1W,留足余量。若使用Class-D功放如NS4168,其I²S输入可直接与STM32N6的SAI相连,省去编解码器DAC,但需注意I²S主从模式:STM32N6作主,功放作从,BCLK与LRCLK由STM32N6提供。

录音链则相反:麦克风→编解码器PGA→ADC→I²S→STM32N6。PGA增益建议设为20dB,使正常说话(约65dB SPL)在ADC输入端达到约0.5Vpp,接近满量程的70%,既保证信噪比又避免削顶。若环境噪声较大,可启用编解码器的ALC(自动电平控制),但ALC会引入非线性,对后续AI特征提取不利,建议仅在录音存档时启用。

四、存储、无线与电源:三条支撑链的协同

存储分为模型存储与数据存储。STM32N6通过XSPI连接外部Flash,存放NPU模型与固件,读取带宽需满足推理时权重加载需求;若模型为2MB,推理帧率10fps,则平均带宽约20MB/s,XSPI 8线DDR模式可轻松满足。录音与日志走SDMMC,建议使用FATFS,写入块大小对齐4KB,避免频繁小写导致卡顿。无线连接方面,Wi-Fi模组通过SDIO与STM32N6通信,BLE用于配网与低功耗唤醒。电源管理是整机续航的关键:PMIC通过I²C配置多路输出电压,STM32N6在Stop2模式下功耗约几十微安,此时麦克风阵列与编解码器可断电,仅保留低功耗唤醒词检测电路。若唤醒词由NPU常开推理实现,则需权衡功耗与响应速度,典型策略是“低功耗VAD+NPU周期唤醒”。

设计检查点:① 所有I²S/PDM时钟是否同源?② 功放增益是否导致削顶?③ XSPI Flash的读取带宽是否满足NPU权重加载?④ Stop2模式下哪些外设必须保持供电?

五、信号链的时序与数据流

整条信号链的时序可以这样理解:麦克风阵列以16kHz持续采样,DMA每4ms搬运一帧;STM32N6在中断中做DC去除与预加重,随后送入NPU做唤醒词推理;若命中,则启动编解码器回放提示音,同时通过Wi-Fi上传事件。回放时,编解码器以48kHz播放,与录音的16kHz异步,需在软件中做采样率转换或使用独立SAI通道。电源管理则根据状态切换:空闲时关闭功放与Wi-Fi,仅保留麦克风与NPU低功耗监听;唤醒后逐步开启各模块,避免浪涌电流导致电池电压跌落。

把上述关系落到一张可执行的配置表上,有助于硬件与固件协同。下表给出一个教学示例的参数基线,实际值需根据器件手册与实测调整。

模块接口关键参数(示例)设计要点
麦克风阵列PDM/DFSDM4通道,16kHz,PDM时钟1.024MHz时钟同源,走线等长
编解码器I²S + I²C录音16kHz/16bit,回放48kHz/16bitPGA增益20dB,避免ALC
功放I²S/模拟差分Class-D,增益12dB,4Ω负载输出限幅,防削顶
外部FlashXSPI8线DDR,读取≥20MB/s模型分区,XIP可选
SD卡SDMMC4bit,写入块4KB对齐FATFS,避免频繁小写
Wi-Fi/BLESDIO + UARTWi-Fi 6,BLE 5.2SDIO走线阻抗控制
PMICI²C3.3V/1.8V/1.2V,电量计Stop2下关断非必要域

最后需要强调,系统架构设计不是把器件简单连起来,而是让信号链的每一段都有明确的输入输出与容差。麦克风阵列决定“听得清”,编解码器与功放决定“放得准”,存储与无线决定“存得下、传得出”,电源管理决定“撑得久”。在STM32N6平台上,这五者通过SAI、DFSDM、XSPI、SDMMC、I²C等接口形成闭环,任何一段的带宽、增益或时序失配,都会在最终体验中暴露出来。建议在原理图评审阶段就按上表逐项核对,并在固件中用DMA双缓冲与状态机把各模块的启停顺序固化下来,为后续的AI算法部署留出稳定的数据通路。