工具/软件:
您好:
另一个关于 PCMD3180的问题回来。 我之前在电路中实现多路复用器时遇到了一些问题、如 上一篇文章中所述。 从那以后、我就设法使 I2S 输出正常工作。 但是、它一次只能与一个或两个麦克风配合使用。 当我尝试使用4个麦克风时、I2S 输出仅反映来自 PDM 通道1的输入。
电路简要说明:
- ESP32-S2充当 I2S 主器件发送 PCMD 初始化寄存器、FSYNC 和 BCLK (48kHz 和1.536 MHz)。 信号干净且稳定。
- I2S 设置为右/左模式(立体声)。
- PCMD3180设置为从模式。 将 SDO 直接驱动到 ESP32。 可以为麦克风(0.768或1.536 MHz)提供 PDM 时钟。
- 4个 PDM 麦克风在 PDM_IN1和 PDM_IN2上设置为 L/R 对。 它们都返回稳定的 SDA。
- 所有 PCMD 寄存器均按照指示进行初始化、并且所有电压(AVDD、IOVDD 等)均干净稳定。
当为1个麦克风初始化 PCMD 寄存器、左时隙0、并为 I2S 单声道初始化 ESP 时、接收到的 I2S 信号是干净的。 无论左右麦克风选择如何、这都适用于 PCMD 上的任何 PDM_IN 通道。
当为2个麦克风(左时隙0和右时隙0)初始化 PCMD 寄存器以及为 I2S 立体声初始化 ESP 时、接收到的信号很干净、具有清晰的 L/R 差异、但与单声道版本相比更安静。 同样、这适用于任何 PDM_IN 通道、只要它们设置为占用时隙0即可。
但是、当为4个麦克风初始化 PCMD 寄存器时、在左0、右0、左1、右1等位置 接收到的输出仅来自 PDM_IN 通道1左侧时隙0、无论使用的是哪个 PDM_IN 通道。 右声道上的所有数据与左声道上的数据相同。 这是通过点击或说话的4个麦克风胶囊,然后绘制音频波形确认。 该图仅显示 PDM_IN1、左时隙0上的抽头。 在语音情况下、可以清楚地听到扬声器仅靠近 PDM_IN1麦克风、而其他3个麦克风不是接近敏感的(与2个麦克风 L/R 情况相反、这种情况下很接近)。 PDM 麦克风或通道本身似乎没有问题、因为 PDM_CLK 由 PCMD 驱动、麦克风返回稳定的 PDM_SDA。
我尝试了不同的插槽分配、插槽左侧为0、1、2和3、 并尝试在每个 PDM_IN 通道和2个 PDM_IN 通道成对放置1个麦克风。 在这两种情况下、我都只从左声道中的左时隙0接收到数据、而右声道中只有0 (符合预期)。
我尝试更改了 DSP_CFG 寄存器、以便对 PDM 通道(CH1+CH2)/s 和(CH3+CH4)/2的输出求和、但这似乎只使 CH1上信号振幅的一半、左时隙0。
我之前在使用试验电路板时曾尝试使用 ADC140 EVM 来测试该系统。 但是、由于将电路转移到定制 PCB、EVM 无法再返回干净的输出。 我注意到、无论 PPC3 GUI 中的寄存器设置如何、连接到 EVM 的 PCMD 都无法启动 PDM_CLK 分频器并在 PDM_OUT 通道发送出去。 FSYNC 和 BCLK 信号有噪声、无论 GUI 设置如何、BCLK 都不会降至3.1 MHz 以下。
除了启用每个通道外、我是否必须更改任何其他寄存器、或者我是否必须执行任何其他操作才能使 I2S 输出与4个或更多麦克风配合使用? 如果我对 I2S 的理解和 PCMD 用户手册中有关的信息是正确的、那么 I2S 可以通过交错左右时隙来返回具有2个以上麦克风输入的立体声输出。 如果是、为什么我只能看到左侧时隙0的输出?
提前感谢您。