4、PDM数字麦克风接口:PDM调制原理、PDM与PCM转换、PDM接口时序与滤波要求

PDM数字麦克风,这几年在手机、耳机、智能音箱里用得越来越多。说白了,它就是把模拟音频信号用一种很“粗暴”的方式转成1bit数据流。很多工程师第一次接触PDM时,总觉得它比I²S简单——就两根线嘛。但实际调试起来,坑一点也不少。

我个人习惯把PDM接口看作一个“高速噪声源”。为什么这么说?看完这节你就明白了。

4.1 PDM调制原理

PDM的全称是Pulse Density Modulation,脉冲密度调制。它和PWM有点像,但思路完全反过来。

  • PWM:固定频率,改变脉冲宽度。
  • PDM:固定脉冲宽度,改变脉冲密度。

你可以这样理解:模拟信号幅值高的时候,PDM输出“1”的密度就大;幅值低的时候,“0”就多。最终,一串1和0的序列,就代表了原始模拟信号。

核心公式(理解即可):

PDM输出 = 对输入模拟信号进行1bit Δ-Σ调制,输出频率远高于奈奎斯特频率的1bit码流。

过采样率(OSR)通常为64、128或256。

我在项目中遇到过一位同事,非要把PDM信号用示波器解码成模拟波形看,结果看了半天说“这噪声怎么这么大?”——其实那不是噪声,是量化噪声被推到高频段了。

4.2 PDM与PCM的转换

PDM麦克风输出的是1bit高速数据流,但我们的Codec、DSP、MCU通常只认PCM(多bit、低采样率)。所以,必须做转换。

这个转换过程,我建议你记住三个关键词:抽取、滤波、降采样。

4.2.1 转换流程

  1. PDM输入:比如3.072MHz的1bit流。
  2. 抽取滤波器:通常是CIC滤波器(级联积分梳状滤波器),先做初步降采样和抗混叠。
  3. 补偿滤波器:补偿CIC的通带衰减,让频响变平。
  4. 半带滤波器:进一步降采样到目标采样率(如48kHz)。
  5. PCM输出:16bit或24bit的标准音频数据。

我的经验:很多Codec内部集成了PDM转PCM的硬件模块。但如果你用MCU的GPIO模拟PDM接口,就必须自己写软件滤波器。这时候CIC滤波器的阶数选择很关键——阶数太高,延迟大;阶数太低,阻带衰减不够。

4.2.2 转换参数对比

参数 PDM PCM
数据宽度 1bit 16/24/32bit
采样率 1~4MHz 8~192kHz
信噪比 受限于调制器 受限于量化位数
接口线数 CLK + DATA BCLK + LRCLK + DATA
抗混叠要求 需要数字抽取滤波 需要模拟抗混叠滤波

4.3 PDM接口时序与滤波要求

PDM接口只有两根线:PDM_CLK(时钟)和PDM_DATA(数据)。但时序要求比想象中严格。

4.3.1 时序参数

我拿一颗常见的PDM麦克风(比如Knowles SPH0641LM4H)举例:

  • 时钟频率:1.0~3.25MHz
  • 时钟高电平时间:≥ 80ns
  • 时钟低电平时间:≥ 80ns
  • 数据建立时间:≥ 10ns
  • 数据保持时间:≥ 10ns

我曾经踩过的坑:有一次PCB走线太长,PDM_CLK的上升沿变缓,导致麦克风内部逻辑误判时钟边沿,数据全乱了。后来加了施密特触发器整形才解决。所以,PDM时钟线尽量短,尽量少打过孔。

4.3.2 滤波要求

PDM麦克风内部有一个Δ-Σ调制器,它会产生大量高频量化噪声。这些噪声如果不处理,会直接混入音频带内。

你想想看,PDM的时钟是3MHz,音频带只有20kHz。中间差了150倍。所以,抽取滤波器的截止频率必须足够陡。

我建议的滤波器设计指标:

  • 通带:0~20kHz(纹波 < 0.1dB)
  • 阻带:> 24kHz(衰减 > 60dB)
  • 过渡带:20kHz~24kHz

嗯,这里要注意:如果滤波器设计得不够好,你会听到一种“嘶嘶”声——那就是高频量化噪声折叠回音频带的结果。

4.3.3 立体声PDM接口

很多Codec支持立体声PDM输入。两根DATA线,或者一根DATA线分时复用。

分时复用的时序是这样的:

  • CLK上升沿:左声道数据
  • CLK下降沿:右声道数据

或者反过来,取决于具体芯片。一定要看数据手册,别想当然。

我的习惯:在原理图阶段,就把PDM_CLK和PDM_DATA的走线长度控制在50mm以内,并且包地处理。这样能省掉后期很多调试时间。

4.4 PDM接口知识体系

下面这张图,是我梳理的PDM接口核心知识结构。你可以把它当作调试时的检查清单。

PDM数字麦克风接口知识体系 PDM数字麦克风接口知识体系 PDM接口核心 调制原理 Δ-Σ调制器 脉冲密度 vs 脉冲宽度 过采样率(OSR) PDM → PCM CIC滤波器 补偿滤波器 半带滤波器 + 降采样 接口时序 CLK频率:1~4MHz 建立/保持时间 立体声分时复用 滤波要求 通带纹波 < 0.1dB 阻带衰减 > 60dB

4.5 调试要点总结

最后,我把自己这些年调试PDM接口的经验,浓缩成几条:

  • 先看时钟:用示波器量PDM_CLK的频率和占空比,偏差超过5%就可能出问题。
  • 再看数据:PDM_DATA在时钟边沿是否稳定?有没有毛刺?
  • 然后听声音:如果听到“嘶嘶”声,检查抽取滤波器设计。
  • 最后测延迟:PDM转PCM的延迟通常在几十微秒到几毫秒之间,如果做主动降噪,这个延迟很关键。

重要提醒:PDM麦克风的电源纹波抑制比(PSRR)通常不如模拟麦克风。如果电源上有高频噪声,会直接耦合到输出数据里。我建议在麦克风供电脚加一个10Ω电阻 + 100nF电容的RC滤波。

好了,PDM接口的核心内容就这些。你只要把调制原理、转换流程、时序参数和滤波要求这四块吃透,调试PDM麦克风基本不会有大问题。