This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PCMD3140:如何对两个麦克风进行初始化至 I2S 输出

Guru**** 2468460 points
Other Parts Discussed in Thread: PCMD3140

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1250400/pcmd3140-how-to-initialize-for-two-mics-to-i2s-output

器件型号:PCMD3140

我正在尝试让 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引脚上的数据、发现上升沿和下降沿都有数据、因此两个麦克风似乎都在工作。

在初始化中是否有什么明显缺失的地方?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Glenn、

    我注意到 CH1_CFG0未包含在您的伪代码中。 这对于将 CH1设置为 PDM 模式非常必要、类似于设置 CH2_CFG0的方式。 请告诉我这是否解决了问题。

    此致、
    J·麦克弗森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您这么快的回答。 在我的数据表(https://www.ti.com/lit/ds/symlink/pcmd3140.pdf)中、似乎没有 CH1_CFG0 (或 CH1_CFG1)寄存器;它以 CFG2开头。 是否有数据表中遗漏的寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我查看了数据表、注意到寄存器表中显示的地址存在间隙、因此我猜 CH1_CFG0将位于地址0x3C、我向其写入了0x40。 这似乎是可行的! 现在、我看到数据从 I2S 右侧通道插槽以及左侧通道插槽输出。

    似乎 PCMD3140数据表需要修订。 我想知道还有哪些其他寄存器缺失!

    感谢您的帮助!