我正在尝试让 PCMD3140配合两个连接到 PDMDIN1_GPI1的 PDM 麦克风工作(一个麦克风具有高电平选择、一个麦克风具有低电平选择)、并且两个麦克风都从 PDMCLK_GPO1获取时钟。 输出配置为 I2S。 我能够从 CH1 (选择低电平的麦克风)接收音频、但 CH2始终为0。 我认为我已经执行了数据表的"详细设计过程"中所示的初始化序列、但我仍然从 CH2中什么也没有得到。 初始化的伪代码为:
| 寄存器名称 | 寄存器地址 | 数据 | 说明 |
| //延迟1ms | |||
| 睡眠 CFG | P0_R2 | 0x81 | //通过使用内部 Areg 写入 SLEEP_CFG 寄存器来唤醒器件 |
| //延迟1ms | |||
| ASI_CFG0 | P0_R7 | 0x70 | //设置32位 I2S 模式 |
| ASI_CH1 | P0_R11 | 0x00 | // Ch1 -> I2S 的左插槽0 |
| ASI_CH2 | P0_R12 | 0x20 | // Ch2 -> I2S 的右侧插槽0 |
| 通道2_CFG0 | P0_R65 | 0x40 | //启用 CH2麦克风输入 |
| 偏置_CFG | P0_R59 | 0x00 | //将 MICBIAS_GPI2引脚配置为 MIC_BIAS = Vref (2.750V、2.500V 或1.375V) |
| GPO_CFG0 | P0_R34 | 0x41 | //将 GPO1配置为 PDMCLK, 驱动为低电平有效和高电平有效 |
| GPI_CFG0 | P0_R43 | 0x40 | //将 GPI1配置为 PDMDIN1,将 GPI2配置为禁用 |
| IN_CH_EN | P0_R115 | 0xC0 | //使能输入 Ch-1和 Ch-2。 禁用输入 Ch-3和 Ch-4 |
| ASI_OUT_CH_EN | P0_R116 | 0xC0 | //启用 ASI 输出 Ch-1和 Ch-2。 禁用 ASI 输出 Ch-3和 Ch-4 |
| PWR_CFG | P0_R117 | 0x60 | //为 ADC 和 PLL 上电 |
| //启动 I2S 时钟 |
请注意、在 I2S 时钟启动后、如果我读取 DEV_STS0寄存器、则会得到0xC0、这表示 CH1和 CH2已上电。 左侧 I2S 插槽为 Ch1音频、右侧 I2S 插槽为全0。
我已尝试交换 ASI_CH1和 ASI_CH2的初始化、以便 CH1进入右侧的时隙0、而 CH2进入左侧的时隙0。 这会导致 Ch1出现在右侧插槽中、但在左侧插槽中没有显示任何内容。
我试着查看 PDMDIN_GPI1引脚上的数据、发现上升沿和下降沿都有数据、因此两个麦克风似乎都在工作。
在初始化中是否有什么明显缺失的地方?