前言 STM32提供了丰富的音频应用外设,并得益于灵活高效的内部架构,可以支持广泛的音频应用。本文中,在简单介绍音频采集的背景知识后,从应用需求出发,确定麦克风的选用。然后,描述了STM32内部DFSDM (Digital Filter for Sigma-Delta Modulator)在PDM麦克风采集中应用。最后逐步介绍如何利用STM32CubeMX进行DFSDM设计开发,实现PDM麦克风声音采集。
一 背景知识
声音通过声学传感器获取模拟信号,经过模数转换器,转换成二进制码0和1,这些0和1便构成了音频数字信号。PDM麦克风能够实现上述的模拟信号获取,并输出PDM信号。PDM(Pulse Density Modulation)脉冲密度调制,利用脉冲密度表示模拟信号强度。
从PDM位流中获取数据,还需要经过如下图环节才能获得模拟信号幅度对应的数字量。
在STM32CubeMX中,选择Channel1中“ PDM/SPI Input from ch2 and internal clock ”和Channel2中“ PDM/SPI Input from ch2 and internal clock ”,并选择“CKOUT”,如下图所示,PC2、PB14自动对应与DFSDM的Clock out和Data In功能脚。
Type:配置数据读取时刻。SPI with rising edge在时钟的上升沿读取数据;SPI with falling edge在时钟下降沿读取数据。
Spi clock:总线时钟源。Internal SPI clock利用内部时钟,对应为CKOUT时钟。
Offset:数据偏移量补偿。
Right Bit Shift : 右移位。右移位的确定,涉及到获取有效数据的位数,如“分辨率”小节中图所示。需要结合滤波器和积分器配置及分辨率需求进行确定。本文中,经过滤波器和积分器处理后输出数据分辨率为29-bit,所以将右移位设置为5,从而在24位数据寄存器中获得有效的24-bit数据。
Analog watchdog parameters : DFSDM中模拟看门狗参数设置。应用例中没涉及到此功能,参数保持默认。
相关文档 UM1900 Getting started with the digital MEMS microphone expansion board based on MP34DT01-M for STM32 Nucleo UM0351STM32L4x5 and STM32L4x6 advanced ARM®-based 32-bit MCUs UM1718 STM32CubeMX for STM32 configuration and initialization C code generation