工具与软件:
您好!
我正在尝试设计一个基于 PCMD3180和多个 PDM 麦克风的麦克风阵列、但首先我仅使用2个 Adafruit 4346。 我正在使用 SparkFun ESP32S2作为 I2S 主机/主设备、同时进行 Arduino 编程、可对试验电路板上的电路进行原型设计。 我将在 ESP32中为电路的其余部分提供 BCLK (1.5MHz)和 WS (48kHz、16位)和3.3V。 PCMD 焊接到24引脚 WQFN 适配器上、而 PCMD 的底部焊盘通过一个孔焊接到已连接至电路接地电网的导线(适配器没有接地平面)。
我无法从 PCMD 获得正确/相关的音频信号。 我注意到从 PCMD 输入麦克风的 PDMCLK 信号位于3 MHz 附近、振幅几乎是 BCLK 的一半。 麦克风返回了串行数据、但我不确定是否正确、看起来主要是噪声。 此外、我还注意到、当我从 PWR_CFG 寄存器为 PCMD 加电、并基本上将器件设置为记录启用模式时、模拟和数字电源引脚上的电压与预期值发生变化、串行/数字信号具有负直流失调电压(-200mV)、并且电源/接地电网中以及 BCLK 前面的栅极中存在大量噪声。 电压的变化如下:
- AVDD:3.3V +/- 0.1V
- AREG:1.8V ->~2V
- 基准电压:2.75V ->~2.6V
- IOVDD:3.3V +/- 0.1V
- DREG:1.7 -> 1.7-1.95V
按照手册中的建议、我已将去耦电容器放置在电源引脚上。 我已经尝试在50kHz 截止频率下过滤 WS 信号、这会略微降低它从 BCLK 接收到的串扰噪声。 但是、过滤任何截止值的 BCLK 根本不会降低辐射噪声、有时甚至会阻止 PCMD 时钟分频器启动。 无论噪声如何、我都可以在示波器和 Arduino 串行监视器/绘图仪上看到来自 PCMD 的输出信号。 但是、该输出似乎与任何音频激励(语音或固定频率正弦波)根本不相关。 在 Audacity 中、我也无法将该器件视为输入源。 我认为代码可能错误、因此我曾尝试将不同类型的 I2S 麦克风直接连接到 ESP32、这会返回清晰、相关的音频信号。
我一直在阅读这个论坛上的相关文章、这就是我如何做到这一点。 我为电压滤波器尝试了不同的电容器值、更改了试验电路板、更改了电缆连接、检查了焊接、不同的寄存器值、 不同的上拉电阻器值和不同的 Arduino I2S 库、但无济于事。 编程中遗漏了什么内容吗? 我在电路硬件中是否出现了问题? 如果有任何帮助、我们将不胜感激!
以下是寄存器值和电路原理图:
文件夹 | # | 值 |
SW_RESET | 0x01 | 0x00 |
SLEEP_CFG | 0x02 | 0x81 |
SHDN_CFG | 0x05 | 0x0A |
ASI_CFG0 | 0x07 | 0x40 |
ASI_CFG1 | 0x08 | 0x00 |
ASI_CFG2 | 0x09 | 0x00 |
ASI_CH1 | 0x0B | 0x00 |
ASI_CH2 | 0x0C | 0x20 |
ASI_CH3 | 0x0D | 0x01 |
ASI_CH4 | 0x0E | 0x21 |
ASI_CH5 | 0x0F | 0x02 |
ASI_CH6 | 0x10 | 0x22 |
ASI_CH7 | 0x11 | 0x03 |
ASI_CH8 | 0x12 | 0x23 |
MST_CFG0 | 0x13 | 0x02 |
MST_CFG1 | 0x14 | 0x00 |
ASI_STS | 0x15 | 只读 |
CLK_SRC | 0x16 | 0x10 |
PDMCLK_CFG | 0x1F | 0xB2 |
PDMIN_CFG | 0x20 | 0x00 |
GPIO_CFG0 | 0x21 | 0x11 |
GPO_CFG0 | 0x22 | 0x41 |
GPO_CFG1 | 0x23 | 0x41 |
GPO_CFG2 | 0x24 | 0x41 |
GPO_CFG3 | 0x25 | 0x41 |
GPO_VAL | 0x29 | 0xF8 |
GPIO_MON | 0x2A | 只读 |
GPI_CFG0 | 0x2B | 0x45 |
GPI_CFG1 | 0x2C | 0x67 |
GPI_MON | 0x2F | 只读 |
BIAS_CFG | 0x3B | 0x00 |
CH1_CFG0 | 0x3C | 0x40 |
CH1_CFG2 | 0x3E | 0xC9 |
CH1_CFG3 | 0x3F | 0x80 |
CH1_CFG4 | 0x40 | 0x00 |
CH2_CFG0 | 0x41 | 0x40 |
CH2_CFG2 | 0x43 | 0xC9 |
CH2_CFG3 | 0x44 | 0x80 |
CH2_CFG4 | 0x45 | 0x00 |
CH3_CFG0 | 0x46 | 0x40 |
CH3_CFG2 | 0x48 | 0xC9 |
CH3_CFG3 | 0x49 | 0x80 |
CH3_CFG4 | 0x4A | 0x00 |
CH4_CFG0 | 0x4B | 0x40 |
CH4_CFG2 | 0x4D | 0xC9 |
CH4_CFG3 | 0x4E | 0x80 |
CH4_CFG4 | 0x5F | 0x00 |
Ch5_CFG0 | 0x50 | 0x40 |
Ch5_CFG2 | 0x52 | 0xC9 |
Ch5_CFG3 | 0x53 | 0x80 |
Ch5_CFG4 | 0x54 | 0x00 |
Ch6_CFG0 | 0x55 | 0x40 |
Ch6_CFG2 | 0x57 | 0xC9 |
Ch6_CFG3 | 0x58 | 0x80 |
Ch6_CFG4 | 0x59 | 0x00 |
CH7_CFG0 | 0x5A | 0x40 |
CH7_CFG2 | 0x5C | 0xC9 |
CH7_CFG3 | 0x5D | 0x80 |
CH7_CFG4 | 0x5E | 0x00 |
CH8_CFG0 | 0x5F | 0x40 |
CH8_CFG2 | 0x61 | 0xC9 |
CH8_CFG3 | 0x62 | 0x80 |
CH8_CFG4 | 0x63 | 0x00 |
DSP_CFG0 | 0x6B | 0x01 |
DSP_CFG1 | 0x6C | 0x00 |
IN_CH_EN | 0x73 | 0xC0 |
ASI_OUT_CH_EN | 0x74 | 0xC0 |
PWR_CFG | 0X75 | 0x60 |