2015-10-05 26 views
9

Pracowałem nad projektem audio z wykrywaniem STM32F4 i zauważyłem jedną rzecz, wszystkie standardy I2S działają tylko z jednym mikrofonem (w zależności od tego, która krawędź standard używa oddzielnych bitów). Dla exmpl. w standardach Philips, MSB lub LSB, które używają opadających krawędzi jako wyzwalaczy bitowych, chwyta tylko uziemiony mikrofon L/R, a jeśli używam standardu PCM, który wykorzystuje zbocza narastające jako wyzwalacze bitowe, przechwytuje tylko mikrofon High L/R. Nie mogę znaleźć sposobu, aby złapać obie próbki MEMS w jednym okresie. Czy STM32F4 nie jest w stanie używać jednocześnie mikrofonów bez zewnętrznych układów scalonych?STM32F4 stereo MEMS mic

+1

Mam ten sam problem na tej samej platformie, można proszę podzielić się z nami, rozwiązanie (ODPOWIAD swoje pytanie) jak robiłeś to w końcu? Dziękuję Ci bardzo! – An0nym0u5

Odpowiedz

3

Rozwiązaniem byłoby, aby wybrać I2S zegara danych, aby być dwa razy tak szybko, jak zegar MEMS wejścia mikrofonu, tak że procesor może złapać próbki po obu Mems taktu

+1

OK, ale jak zsynchronizować szybki i wolny zegar? Jak sugerujesz generowanie sygnału zegarowego? – An0nym0u5

+0

Wystarczy wykonać to samo pytanie. Jednym ze sposobów na uczynienie zegarka mikrofonu dwa razy mniejszym jest skierowanie zegara generowanego przez I2S do zegara (który jest ustawiony na tryb przechwytywania wyjścia) na pin ETR. Następnie możesz podzielić go, jak chcesz. W tym przypadku dwa razy. Zegar wyjściowy timerów przechodzi do obu mikrofonów, a ich dane są połączone z I2S (generującym zegar). Na końcu dostajesz I2S działający dwa razy szybciej niż mikrofony. – MattJ

1

można spróbować użyć I2S2 i I2S3, drugi do generowania zegara dla mikrofonów i pierwszy do generowania zegara do próbkowania wartości pdm (z podwójną szybkością), dzieląc tę ​​samą PLL, którą powinien zsynchronizować zegar. Robiąc to myślę, że możesz uzyskać bity pdm, czytając rejestr recv z I2S2, ale myślę też, że bity z 2 mikrofonów będą przeplatane (trochę z mikrofonu 1, innego z mikrofonu 2 i tak dalej).

1

Po prostu następuje to samo pytanie. Jednym ze sposobów na uzyskanie danych z obu mikrofonów jest dwukrotne zwiększenie zegara mikrofonu. Możesz to zrobić, kierując zegar generowany przez I2S do zegara (który jest ustawiony na tryb przechwytywania wyjścia) na pin ETR. Następnie za pomocą timera możesz go podzielić według potrzeb. W tym przypadku dwa razy. Zegar wyjściowy timerów jest przesyłany do obu mikrofonów, a ich dane są połączone z linią danych I2S (taką samą, która generuje zegar). Na końcu dostajesz I2S działający dwa razy szybciej niż mikrofony.

Oto przykład z czterema mikrofonami. (W twoim przypadku po prostu usunąć SPI)

enter image description here

Aby uzyskać więcej informacji na ten temat przeczytać.

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