#申请原创#
STEVAL-STWINKT1B开发板带了两个麦克风:工业级数字MEMS麦克风IMP34DT05以及模拟MEMS麦克风IMP23ABSU。IMP34DT05我们可能不熟,但是它的大哥MP34DT01那可是大名鼎鼎,某宝上很多MP34DT01芯片做 的模块,笔者恰好也有一个,使用简单效果好,接MCU的PDM输入信号录音用,应用在一些需要音频输入控制的场景下。一般而言MCU开发板用都已经买模块了当然直接用数字MEMS麦克风模块了,不需再接放 大器和ADC,接线麻烦,但是不妨碍一些开发板会板载模拟MEMS麦克风,笔者这也是第一次使用模拟MEMS麦克风。扯远了回到测评主题。
我们先看看IMP34DT05硬件功能特性:
• 单供电电压
• 低功耗
• 声过载点122.5 dBSPL
• 64 dB信噪比
• 全指向灵敏度
• 灵敏度–26 dBFS ± 3 dB
• 输出为PDM
应用场景包括但不限于:移动终端、笔记本电脑、移动多媒体播放器、VoIP、语音室别、游戏/虚拟现 实输入设备、数字相机、多媒体摄像头等等。
和它大哥MP34DT01很像,一些参数比它大哥MP34DT01有提升,所以基本肯定用起来会和它大哥一样顺手。
再看看IMP23ABSU的硬件功能特性:
• 单供电电压,1.52 V - 3.6 V
• 全指向灵敏度
• 高信噪比
• 高声过载点: 130 dBSPL典型值.
• 超扁平的频率响应
• 高达80kHZ的Ultrasound带宽
• 低延迟
• 超低功耗: 最大150 µA.
这两麦克风在板子原理图上解法蛮简单的,IMP34DT05除地、电源外,clk和DOUT引脚接入了主控STM32L4R9ZIJ6的DFSDM1的相应针脚,这就完事了接法简单利落。IMP23ABSU麻烦点,引脚出来先接放大器,把信号放大后接主控STM32L4R9ZIJ6的ADC1。
接下来我们看看软件部分,这两MEMS麦克风在fp-sns-datalog2项目仓库中都有代码支持,但例子application里没用上它们两,在STM的官方github中笔者本人翻到了一个名叫x-cube-memsmic1项目,非常有意思,音频相关的代码全、例子多,恰好也支持STEVAL-STWINKT1B开发板,所以这篇文章是不用写任何代码的,直接clone官方仓库
- git clone https://github.com/STMicroelectronics/x-cube-memsmic1.git
笔者选用的demo例子是Projects/STM32L4R9ZI-STWIN/Demonstration/Microphones_Streaming/,这是把STEVAL-STWINKT1B板子做成了一个usb麦克风,可以在电脑、平板上录音。此项目并无linux下编译用的cmake或makefile,但基于MDK-ARM proj写CMakeLists.txt这是基本功了这里不赘述。写完CMakeLists.txt后编译
- cmake -B build
- cmake --build build -j8
烧录后把板子usb线接入电脑,dmesg会发现linux内核已经识别出这是一个名为STM32 Audio Streaming in FS mode的usb audio设备,并加载了通用的snd-usb-audio驱动
lsusb结果
lsusb -v结果
那咱们开始录音,先看看alsa识别出没有
可以看到arecord识别出usb麦克风了,card1,device0就是
录音5s看看
- arecord -Dhw:1,0 -d 5 -f dat -r48000 -c 2 -t wav /tmp/test.wav
aplay播放看看
笔者本人测试感觉这麦克风效果挺好的,并不比市面上几大百耳麦中的麦克风差,完全可以用来开会打电话
|