mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Robin K. (r_k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Burkhard K. (buks)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Burkhard K. (buks)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.