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
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"
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
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.