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并监测电量。
二、麦克风阵列:从物理布局到数字接口
麦克风阵列的设计起点是拾音几何。以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周期唤醒”。
五、信号链的时序与数据流
整条信号链的时序可以这样理解:麦克风阵列以16kHz持续采样,DMA每4ms搬运一帧;STM32N6在中断中做DC去除与预加重,随后送入NPU做唤醒词推理;若命中,则启动编解码器回放提示音,同时通过Wi-Fi上传事件。回放时,编解码器以48kHz播放,与录音的16kHz异步,需在软件中做采样率转换或使用独立SAI通道。电源管理则根据状态切换:空闲时关闭功放与Wi-Fi,仅保留麦克风与NPU低功耗监听;唤醒后逐步开启各模块,避免浪涌电流导致电池电压跌落。
把上述关系落到一张可执行的配置表上,有助于硬件与固件协同。下表给出一个教学示例的参数基线,实际值需根据器件手册与实测调整。
| 模块 | 接口 | 关键参数(示例) | 设计要点 |
|---|---|---|---|
| 麦克风阵列 | PDM/DFSDM | 4通道,16kHz,PDM时钟1.024MHz | 时钟同源,走线等长 |
| 编解码器 | I²S + I²C | 录音16kHz/16bit,回放48kHz/16bit | PGA增益20dB,避免ALC |
| 功放 | I²S/模拟差分 | Class-D,增益12dB,4Ω负载 | 输出限幅,防削顶 |
| 外部Flash | XSPI | 8线DDR,读取≥20MB/s | 模型分区,XIP可选 |
| SD卡 | SDMMC | 4bit,写入块4KB对齐 | FATFS,避免频繁小写 |
| Wi-Fi/BLE | SDIO + UART | Wi-Fi 6,BLE 5.2 | SDIO走线阻抗控制 |
| PMIC | I²C | 3.3V/1.8V/1.2V,电量计 | Stop2下关断非必要域 |
最后需要强调,系统架构设计不是把器件简单连起来,而是让信号链的每一段都有明确的输入输出与容差。麦克风阵列决定“听得清”,编解码器与功放决定“放得准”,存储与无线决定“存得下、传得出”,电源管理决定“撑得久”。在STM32N6平台上,这五者通过SAI、DFSDM、XSPI、SDMMC、I²C等接口形成闭环,任何一段的带宽、增益或时序失配,都会在最终体验中暴露出来。建议在原理图评审阶段就按上表逐项核对,并在固件中用DMA双缓冲与状态机把各模块的启停顺序固化下来,为后续的AI算法部署留出稳定的数据通路。