Arduino UNO / Nano
不建议直接使用。UNO 没有专用 PDM 麦克风接口,不能把 DATA 接到模拟口或用普通 digitalRead 读取 MHz 级 PDM。
Key Point
客户最容易把 MP34DT01 当 INMP441 / ICS-43434 使用。MP34DT01 的 DATA 是 PDM 单比特高速脉冲,不是 I2S 24-bit 音频数据,也不是模拟电压输出。
| 对比 | MP34DT01 | INMP441 / ICS-43434 | 模拟麦克风 |
|---|---|---|---|
| 输出类型 | PDM 高速脉冲 | I2S 数字音频 | 模拟电压 |
| 常见引脚 | VDD、GND、CLK、DATA、SEL | VDD、GND、BCLK、WS、SD、LR | VCC、GND、AO |
| 是否接 ADC | 不能直接接 | 不能直接接 | 可以 |
| 是否可套 I2S 麦克风代码 | 一般不能 | 可以按 I2S 配置 | 不适用 |
Wiring
不同 ESP32 芯片、ESP-IDF 版本和 Arduino-ESP32 版本对 PDM RX 支持差异较大。接线图先按“PDM RX 思路”整理,具体 GPIO 和代码以后按实测版本补。
| MP34DT01 模块 | 主控 | 说明 |
|---|---|---|
| VDD / VCC / 3V | 3.3V | 不建议接 5V |
| GND | GND | 必须共地 |
| CLK | PDM CLK 输出脚 | 由主控输出 MHz 级方波 |
| DOUT / DATA / DAT | PDM DATA 输入脚 | 主控读取 PDM 数据 |
| LR / SEL | GND 或 3.3V | 选择左/右声道位置 |
Compatibility
不建议直接使用。UNO 没有专用 PDM 麦克风接口,不能把 DATA 接到模拟口或用普通 digitalRead 读取 MHz 级 PDM。
Arduino 官方 PDM 库用于支持 PDM 麦克风的板子,例如 Nano 33 BLE Sense / Nano RP2040 Connect 等。不是所有 Arduino 板都支持。
ESP-IDF 文档有 I2S PDM RX 相关说明,但不同芯片和版本支持不同。建议先用官方 ESP-IDF 示例验证,再考虑 Arduino 环境。
Oscilloscope
DATA 不是模拟电压输出。声音变化主要体现在高速 PDM 脉冲密度变化,不是电压慢慢升高或降低。示波器时间档要调到 us/ns 级别。
CLK 应为主控输出到麦克风的 MHz 级 0~3.3V 方波。资料整理中用 2.4MHz 作为排查参考值,正式测试以 datasheet 和主控 PDM 配置为准。
检查 VDD 是否 3.3V、GND 是否共地、CLK 是否到达麦克风、DATA 是否测对脚、SEL 是否固定到 GND 或 3.3V、程序是否真的开启 PDM RX。
FAQ
一般不能。INMP441 是 I2S 麦克风,MP34DT01 是 PDM 麦克风,接口时序和数据格式不同。
一般不能。ICS-43434 是 I2S 数字麦克风,除非代码明确支持 PDM RX,否则不能直接使用。
常见原因是用了 I2S 麦克风代码、CLK 频率不对、SEL 与程序声道不一致、DATA 接错、没有共地、没有做 PDM 转 PCM 或下采样参数错误。
不建议。ST 芯片供电按 datasheet 为低压范围,模块推荐 3.3V,CLK 和 SEL 等信号也建议 3.3V 电平。
Customer Reply
References