SAMD21 (Arduino): Mikrofon und Lautsprecher über 1 x I2S

OP #4954921
Lesenswert?
• ▲
▼
Hallo

Ich habe von SparkFun ein 9DoF Razor IMU M0 (also ein Atmel SAMD21G18A 
mit 9DoF Sensor und Micro-SD-Slot).
Nun möchte ich zwei I2S Module integrieren:
- [1] Adafruit I2S MEMS Microphone Breakout
      SPH0645LM4H
- [2] Adafruit I2S 3W Class D Amplifier Breakout
      MAX98357A

Dabei soll über das Mikrofon die PCM-Daten in einer WAV-Datei auf die SD 
Karte geschrieben und später diese WAV-Datei auf dem Lautsprecher 
ausgegeben werden (das eine oder das andere, nicht beides gleichzeitig).

Leider hat der SAMD21 nur eine I2S-Schnittstelle. Also soll ein Taster 
am uC zwischen "Aufnehmen" und "Abspielen" wechseln.

So wie ich es verstanden habe, ist der uC immer I2S-Master.
Je nachdem ob der uC als I2S-Master seinen Clock (CLK_I2S_APB) ans 
Mikrofon oder am DAC-Amp liefert, kann entschieden werden, ob man 
"Aufnehmen" oder "Abspielen" möchte.

Dieser Clock kann über zwei externe MOSFET-Paare vom uC angesteuert 
werden:
- Clock an Mikrofon, oder
- Clock an DAC-Amp, oder
- beides aus
(- oder beides ein, was aber nicht sinnvoll ist)
Siehe auch beiliegender Schaltplan. Würde das gehen?
Oder gibt es bessere/andere Lösungen dazu?

Geht das mit den mitgelieferten Arduino Libraries, oder muss ich sie 
gegebenenfalls anpassen?

Hat jemand schon das gleiche oder ein ähnliches Problem schon gelöst?

Andreas



Datenblatt vom Mikrofon (SPH0645LM4H-B):

Active Mode
When Vdd is applied the microphone senses the CLOCK line, if the 
frequency is greater than 900KHz, the microphone enters the normal mode 
of operation. In this mode the I2S Master must provide the CLK and WS 
signals as the microphone is an I2S slave device.

Sleep Mode
When Vdd is applied the microphone senses the CLOCK line, if the 
frequency is less than 900KHz or completely off , the microphone enters 
the sleep mode of operation. In this mode the microphone tri-states the 
DATA pin and turns off internal circuits to reduce power consumption.


Datenblatt vom DAC-Amp (MAX98357A):

Standby Mode
The ICs automatically enter standby mode when BCLK is removed. If BCLK 
stops toggling, the ICs automatically enter standby mode. In standby 
mode, the Class D speaker is turned off and the outputs go into a 
highimpedance state, ensuring that unwanted current is not transferred 
to the load during this condition.

[1] https://www.adafruit.com/products/3421
[2] https://www.adafruit.com/products/3006
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.