PDM 、I2S 音频协议转换技术手册
PDM 、I2S 音频协议转换技术手册
一、PDM 转 I2S 原理
PDM 1bit 高速流 → 低通滤波 + 抽取降频 → 16bit PCM 数据 → I2S 时序封装输出。
1、主控输出 PDM_CLK 时钟,驱动数字硅麦;
2、硅麦输出 PDM_DATA 单比特音频流;
3、主控采集 PDM 数据(硬件接口/SPI+DMA);
4、滤波+抽取,将 PDM 转为 PCM;
5、PCM 数据通过 I2S 模块输出至后端音频设备。
二、硬件转码方法
选择带原生 PDM 外设的主控,无需额外外设主控内置。PDM 硬件模块 + 硬件 CIC 滤波 /抽取,无需编写滤波算法,直接将 PDM 转为 PCM 后送入 I2S 模块输出。
三、软件转码方法
通过 SPI+DMA 采集 PDM 原始数据,移植通用滤波库(如 OpenPDMFilter/CIC 滤波)完成PDM→PCM 转换,再送入 I2S 模块输出,适配所有无原生 PDM 的主控。
四、部分主控 PDM 转 I2S 方案
STM32 系列(F4/F7/G4/H7/L4/U5)
硬件转换(带 DFSDM/PDM 原生外设)
硬件接线
1.硅麦 CLK → STM32 PDM_CLK/DFSDM_CKIN 引脚;
2.硅麦 DATA → STM32 PDM_DATA/DFSDM_DATAIN 引脚;
3.STM32 I2S_BCLK/LRCK/SDO → DAC/功放对应引脚。
软件步骤(STM32CubeIDE)
1.开启 PDM/DFSDM、I2S、DMA 外设,配置系统时钟(HSE→168MHz);
2.PDM 配置:Mode=Slave Receiver,CLK=3.072MHz,启用硬件抽取(64)、16bit PCM;
3.I2S 配置:Mode=Master Transmitter,Philips 标准,48kHz、16bit;
4.DMA 配置:PDM 接收、I2S 发送均设为循环模式;
5.运行代码,启动 PDM DMA 接收、I2S DMA 发送,硬件自动完成转换。
软件转换(无原生 PDM,SPI+DMA+OpenPDMFilter)
硬件接线
1.硅麦 CLK → STM32 SPI_SCK 引脚;
2.硅麦 DATA → STM32 SPI_MISO 引脚;
3.3.STM32 I2S_BCLK/LRCK/SDO → DAC/功放对应引脚
软件步骤
1.SPI 配置:主机模式 0(CPOL=0、CPHA=0),CLK=3.072MHz,开启 SPI_RX DMA 循环采集;
2.初始化 OpenPDMFilter 库(抽取 64、增益 6dB);
3.SPI DMA 接收完成中断中,调用 OpenPDMFilter_Process() 完成 PDM→PCM 转换;
4.将 PCM 数据送入 I2S DMA 缓冲区,启动 I2S 发送,循环执行。
参考文档:Interfacing PDM digital microphones using STM32 MCUs and MPUs - Application note
昂瑞微 6627C/6629C 系列-硬件转换(原生 PDM+I2S)
硬件连接:
硅麦 CLK → 6627C/6629C PDM_CLK 专用引脚;
硅麦 DATA → 6627C/6629C PDM_DATA 专用引脚(以 LMD2718T 数字硅麦为适配基准);
主控 I2S_BCLK/LRCK/SDO → 后端音频模块,关闭模拟 MIC 通路。
软件步骤(NonRTOS SDK)
1、通过宏定义开启硬件外设、配置中断优先级,绑定音频驱动函数接口,开启 UART 日志 (921600 波特率)用于数据输出和调试。
2、宏定义配置→驱动接口调用→日志开启→硬件测试→串口数据抓取→PCM 格式转码,全 程基于厂商提供的驱动文件和工程模板,无额外滤波库移植,适配性强。
3、最终可将采集的 PDM 数据转为 Signed 16bit PCM、小端、单声道标准音频格式,直接 用于音频设备解码。
参考文档:https://bbs.onmicro.com.cn/6627x_6629x/669.html
炬芯(ATS283x/ATS360x 系列,ATS2833/ATS3607)
硬件转换(原生 PDM,推荐)
硬件接线
硅麦 CLK → 炬芯 PDM_CLK 引脚;
硅麦 DATA → 炬芯 PDM_DATA 引脚;
炬芯 I2S 引脚 → DAC/功放对应引脚。
软件步骤(炬芯 SDK)
在设备树中配置 PDM、I2S 引脚映射;
初始化 PDM:CLK=3.072MHz,抽取 64,单/双声道;
初始化 I2S:主模式,48kHz、16bit,Philips 标准;
调用 audio_route_set(PDM_SRC, I2S_DST),绑定音频链路;
启动 PDM 采集和 I2S 发送,硬件自动完成转换。




