2015-10-05 89 views
9

我一直在研究STM32F4發現的音頻項目,我注意到一件事,所有的I2S標準只能用一個麥克風(取決於哪個邊緣標準使用單獨的位)。例如。使用飛利浦,MSB或LSB標準(使用下降沿作爲位觸發器),只能捕捉接地的L/R麥克風,如果我使用PCM標準(使用上升沿作爲位觸發器),則只能捕獲高L/R麥克風。我無法找到一種方法在一個時期捕捉到兩個MEMS麥克風樣本。 STM32F4無法在沒有外部IC的情況下立即使用麥克風嗎?STM32F4立體聲MEMS麥克風

+1

我有同樣的問題,在同一平臺上,你可以請與我們分享您的解決方案,(aswering你自己的問題),你是怎麼做的到底是誰?非常感謝你! – An0nym0u5

回答

3

的解決辦法是,選擇I2S數據時鐘要快兩倍,MEMS麥克風輸入的時鐘,使處理器,能趕上在任微機電系統時鐘脈衝

+1

好的,但如何syncronize快速和慢時鐘?你如何建議產生時鐘信號? – An0nym0u5

+0

只需跟進相同的問題。使麥克風時鐘縮短兩倍的一種方法是將I2S生成的時鐘路由到ETR引腳的定時器(設置爲輸出捕捉模式)。然後你可以按需要分割它。在這種情況下兩次。定時器輸出時鐘輸入到兩個麥克風,它們的數據連接到I2S(它產生時鐘)。最後,與麥克風相比,I2S的工作速度要快兩倍。 – MattJ

1

你可以嘗試使用樣本I2S2和I2S3,第二個爲麥克風產生時鐘,第一個產生用於採樣pdm值(以雙倍速率)的時鐘,共享同一個時鐘應該同步的PLL。 這樣做我認爲你可以通過讀取I2S2的recv寄存器來獲得pdm位,但是我也認爲2個話筒的這些位將被交錯(從話筒1,另一個來自話筒2等等)。

1

只是跟進同一個問題。從兩個麥克風獲取數據的一種方法是使麥克風時鐘縮小兩倍。您可以通過將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