STM32F4立体声MEMS麦克风

10

我一直在使用STM32F4 Discovery进行音频项目开发,但是我注意到一个问题:所有的I2S标准都只适用于一个麦克风(具体取决于标准使用的边沿)。例如,对于使用下降沿作为位触发器的Philips、MSB或LSB标准,仅可以捕获接地的左/右声道麦克风,而如果使用上升沿作为位触发器的PCM标准,则只会捕获高阻值的左/右声道麦克风。我无法找到一种方法来同时捕获两个MEMS麦克风样本。是否需要使用外部IC芯片才能使STM32F4同时使用两个麦克风?


1
我在同一平台上遇到了相同的问题,您能否与我们分享您的解决方案?(回答自己的问题)最终您是如何解决的?非常感谢! - An0nym0u5
3个回答

3

解决方案是选择I2S数据时钟的速度是MEMS麦克风输入时钟速度的两倍,这样处理器就能够在任何一个MEMS时钟脉冲上捕捉到样本。


1
好的,但如何同步快慢时钟?您建议如何生成时钟信号? - An0nym0u5
只是对同样的问题进行跟进。使麦克风时钟缩小两倍的一种方法是将I2S生成的时钟路由到定时器(设置为输出捕获模式)的ETR引脚。然后您可以按照您想要的方式进行分割。在这种情况下,是两倍。计时器输出时钟传输到两个麦克风,它们的数据连接到I2S(正在生成时钟)。最终,与麦克风相比,您可以使I2S工作速度加倍。 - MattJ

2
这是对同一问题的跟进。获取两个麦克风数据的方法之一是使麦克风时钟变小两倍。您可以通过将I2S生成的时钟路由到ETR引脚上设置为输出捕获模式的计时器来实现。然后使用计时器将其分成您想要的大小。在这种情况下,是两倍。计时器输出时钟连接到两个麦克风,它们的数据连接到I2S数据线(与生成时钟相同)。最终,I2S的工作速度比麦克风快两倍。
这里有一个使用四个麦克风的例子。(在您的情况下,只需删除SPI)

enter image description here

更多信息请阅读此内容。

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


1
你可以尝试使用I2S2和I2S3,其中第二个用于为麦克风生成时钟,第一个用于以双倍速率采样pdm值(共享同一个PLL时钟应该同步)。 这样做,我认为您可以通过读取I2S2的接收寄存器来获得pdm位,但我也认为来自两个麦克风的位将交错出现(一个来自麦克风1,另一个来自麦克风2等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接