STM32F4 立体声 MEMS 麦克风

STM32F4 stereo MEMS mic

我一直在研究 STM32F4 发现的音频项目,我注意到一件事,所有 I2S 标准仅适用于一个麦克风(取决于标准使用单独位的边缘)。例如。对于使用下降沿作为位触发器的飞利浦、MSB 或 LSB 标准,仅捕获接地的 L/R 麦克风,如果我使用使用上升沿作为位触发器的 PCM 标准,则仅捕获高电平 L/R麦克风。我找不到在一个周期内捕获两个 MEMS 麦克风样本的方法。如果没有外部 IC,STM32F4 是否不能立即使用麦克风?

解决方案是,选择 I2S 数据时钟的速度是 Mems 麦克风输入时钟的两倍,这样处理器就可以在任一 Mems 时钟脉冲上捕获样本

您可以尝试使用 I2S2 和 I2S3,第二个为麦克风生成时钟,第一个为采样 pdm 值(以双倍速率)生成时钟,共享相同的 PLL 时钟应该是同步。 这样做我认为您可以通过读取 I2S2 的 recv 寄存器来获取 pdm 位,但我也认为来自 2 个麦克风的位将交错(来自麦克风 1,另一个来自麦克风 2,依此类推)。

只是对同一个问题的跟进。从两个麦克风获取数据的一种方法是使麦克风时钟小一倍。您可以通过将 I2S 生成的时钟路由到 ETR 引脚上的定时器(设置为输出捕获模式)来实现。然后使用计时器,您可以根据需要划分它。在这种情况下两次。定时器输出时钟进入两个麦克风,它们的数据连接到 I2S 数据线(与生成时钟相同)。最后,I2S 的工作速度是麦克风的两倍。

这里是一个有四个麦克风的例子。 (在你的情况下,只需删除 SPI)

有关详细信息,请阅读此内容。

http://www2.st.com/content/ccc/resource/technical/document/user_manual/f5/06/94/40/a6/01/49/ae/DM00187405.pdf/files/DM00187405.pdf/jcr:content/translations/en.DM00187405.pdf