Forum: Digitale Signalverarbeitung / DSP / Machine Learning MEMS Mikrophon PDM mit stm32 auslesenund nach PCM konvertieren


von Robin K. (r_k)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,


Ich bin neu in dem Thema Mikrocontroller-Programmierung und MEMS 
Mikrophonen. Ziel ist es, ein Mikrophon auszulesen und eine FFT aus den 
Daten zu generieren.


Hierfür verwende ich ein Eval-Board (STM32WB55) und ein digitales 
Mikrophon (IM69D130 von Infineon). Das Mikrofon ist mit der 
SAI-Schnittstelle des Boards verbunden.


Der Ausgang des Mikrophons ist ein PDM-Signal. Dieses lese ich durch 
Polling über die Schnittstelle ein. Anschließend möchte ich das 
PDM-Signal in ein PCM-Signal wandeln. Hierfür verwende ich die 
PDM-Library von ST. Dieses Signal möchte ich anschließend über die 
FFT-Funktion aus der DSP-Library von ST in den Frequenzbereich 
transformieren.


Nun habe ich folgende Probleme und Fragen:
- Mein PCM-Signal, welches ich aus der Funktion erhalte scheint nicht 
korrekt zu sein (Mikrophon liegt nur auf dem Tisch und empfängt keine 
Geräusche)
- Meine Frage ist, ob mein PDM Signal überhaupt richtig ist. (Die Clock 
der Schnittstelle ist auf 3,09MHz eingestellt)


Ich habe dem Beitrag meinen Quellcode angehangen. Außerdem Graphen der 
Daten (PDM-Signal und PCM-Signal).


Über jegliche Hilfe bin ich sehr Dankbar.

Viele Grüße

von J. S. (engineer) Benutzerseite


Lesenswert?

PDM lässt sich leicht in Echtzeit filtern. Wie du das mit deiner LIB 
machen musst, lässt sich so aber so nicht sagen. Wahrscheinlich werden 
Datenportionen eingelesen und abschnittweise gefiltert / dezimiert.

Natürlich müssen die Daten alle korrekt erfasst werden. Es müsste 
geprüft werden, ob das der Fall ist.

3 MHz Takt an sich sind schon einmal nicht falsch. Das entspricht etwa 
dem, was eine Audio-CD liefert und reicht für die "schlechten" MEMS in 
aller Regel aus. Schließe einfach ein Oszilloskop über einen 15kHz 
Tiefpass an oder zeichne das Signal mit der Soundkarte auf.

Wir hatten solche Themen schon mehrfach hier:

Beitrag "DSP für digitale MEMS Mikrofon Messung gesucht"
Beitrag "MEMS Ultraschallmikro mit PDM"
Beitrag "Decimator-Schaltung für Puls-Datenstrom"
Beitrag "FIR Filter Optimierung eines PDM Signals auf STM32F407 simuliert mit Matlab"
Beitrag "MEMS mic mit I2S am STM32F405"
Beitrag "MEMS Mikro mit I2S auswerten"

von Burkhard K. (buks)


Lesenswert?

Jürgen S. schrieb:
> PDM lässt sich leicht in Echtzeit filtern.

Wer sich mit dem Filtern nicht auseinandersetzen will oder kann, für den 
gibt es PDM-zu-PCM-Wandler in Hardware, z.B. den ADAU7002 von Analog: 
https://www.analog.com/en/products/adau7002.html

Das IM69D130 gibt es auch als Stereo-"Shield", bei dem der ADAU7002 
schon drauf ist: 
https://www.infineon.com/cms/en/product/evaluation-boards/s2go-memsmic-im69d

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Ja, wobei der TE ja erst einmal schauen wollte, ob sein PDM überhaupt 
gut daher kommt. Es kann durchaus sein, dass sich so ein Modulator 
vertaktet, wenn man ihn mit einem schlechten Takt ansteuert oder ihn mit 
der Frequenz überfährt. Ich habe z.B. vor einiger Zeit mal Knowles Mics 
vertestet und gefunden, dass die angeblichen 4,096 MHz Zieltaktfrequenz 
ohne Weiteres zu überschreiten sind, wenn der Takt optimal geformt ist 
und der Modulator sogar mit Phasenrauschen zu beaufschlagen ist. 
Umgekehrt machen manche bei schon den nominell minimalen 2,4 MHz 
irgendwelche "Faxen" wenn der Takt unsauber ist, weil z.B. nicht 
niederohmig genug.

>Ad7002
Laut Datenblatt 64fach oversampling und max 96 kHz fs.

Gähn :-)

von Burkhard K. (buks)


Lesenswert?

Jürgen S. schrieb:
>>Ad7002
> Laut Datenblatt 64fach oversampling und max 96 kHz fs.
>
> Gähn :-)

Nicht jeder will oder muss immer gleich auf den Himalaya steigen :-)

Jürgen S. schrieb:
> die angeblichen 4,096 MHz Zieltaktfrequenz
> ohne Weiteres zu überschreiten sind, wenn der Takt optimal geformt ist

Bis wohin bist Du denn vorgedrungen? Die digitalen Knowles 4MHz MEMse 
sind bis 80kHz brauchbar/spezifiziert - das reicht für Fledermäuse eher 
weniger. Macht so ein Mikro bei 50% Übertaktung noch mit?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.