STM32 微控制器上的 PDM 音频软件解码 1 Y0 @# L* O1 m3 a: S 1 简介 本应用笔记以 ST MP45DT02 MEMS 麦克风与 STM32 微控制器的连接为例,介绍了 PDM信号解码和音频信号重建时使用的软件优化算法和架构。该软件可直接采集麦克风输出的脉冲密度调制 (PDM) 数据,并将其转换为 16 位脉冲编码调制 (PCM) 格式。 * ^3 L! B1 a4 M3 U. P* U6 z 2 k1 ?3 l0 p; v# S 本文档还提供了快速入门信息,介绍如何通过基于 STM32F4 微控制器和 STM32F4DISCOVERY板的 I2S 对 PDM 库进行单麦克风采集。 有关这一过程的详细信息,请参见 AN3997 使用 STM32F4DISCOVERY 进行音频回放和录音。 2 PDM 信号简介 ) z% ]7 ^0 b G! z 脉冲密度调制 (PDM) 是一种用于表示数字域中的模拟信号的调制形式。 在 PDM 信号中,不会像在 PCM 中一样将具体的幅值编码到脉冲中。而是对与模拟信号幅值相应的、一系列脉冲的相对密度进行编码。 # ]2 h- n- i, p% } 要从 PDM 比特流中获取数据帧,通常使用采样滤波器。采样过程第一阶段要降低采样频率,然后使用高通滤波器去除信号直流偏移。' m6 t1 j% }8 j8 b* @5 s# m1 h: D 6 d! E3 g( M* \' P3 @: l 3 硬件接口:麦克风连接和采集 ) f4 v$ X1 X, M; a" B1 K# p MP45DT02 MEMS 麦克风会输出一个 PDM 信号,该信号具有高频(1 到 3.25 MHz)1 位数字采样流。 / D3 R/ L7 ?' k8 j+ H5 D 该输出信号通过 STM32 微控制器的同步串口(SPI 或 I2S)以 8 个样本为一组进行采集。麦克风的 PDM 输出信号与其输入时钟同步;因此,可通过一个 STM32 SPI/I2S 外设生成麦克风的时钟信号。: C9 Y5 _. l% I; f% L v+ U7 @/ y# ~2 k0 y 2 Z8 C1 t- `( j3 T. ] A9 W V% B 4 软件接口:数字信号处理 6 U5 ]+ X# a n$ z麦克风输出的数据发送到采样过程,该过程包括两个组成部分:一个用于将 1 位 PDM 数据转换为 PCM 数据的采样滤波器,还有两个可单独配置的 IIR 滤波器(低通和高通滤波器)。转换后的音频采用 16 位脉冲编码调制 (PCM) 格式。完成转换之后会产生原始数据,可根据实际应用程序对这些数据进行处理(以波形/压缩数据形式存储到大容量存储介质,通过 I2S 外设传输到外部音频编码器 DAC...)。 3 ~* Z( v- u! k |