PDM 、I2S 音频协议转换技术手册

时间:2026-04-24 点击量:


                                            PDM 、I2S 音频协议转换技术手册

一、PDM 转 I2S 原理

PDM 1bit 高速流 → 低通滤波 + 抽取降频 → 16bit PCM 数据 → I2S 时序封装输出。

1、主控输出 PDM_CLK 时钟,驱动数字硅麦;

2、硅麦输出 PDM_DATA 单比特音频流;

3、主控采集 PDM 数据(硬件接口/SPI+DMA);

4、滤波+抽取,将 PDM 转为 PCM

5PCM 数据通过 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 发送,硬件自动完成转换。