ES8311 Codec · I2S Wiedergabe & Echo · ESP‑IDF Beispielprojekt
Dieses Projekt demonstriert die Audio‑Funktionen des Waveshare ESP32‑P4‑NANO in Kombination mit dem ES8311‑Audio‑Codec.
Es zeigt, wie man Audio über I2S ausgibt, ein Mikrofon einliest und PCM‑Dateien abspielt.
Das Beispiel unterstützt zwei Betriebsmodi:
- 🎵 Musikmodus – spielt eine eingebettete PCM‑Datei ab
- 🔁 Echomodus – gibt das Mikrofonsignal in Echtzeit wieder
- Initialisierung des ES8311‑Codecs über I2C
- I2S‑Konfiguration für 16‑Bit Stereo
- Wiedergabe einer eingebetteten PCM‑Datei
- Mikrofon‑Echo in Echtzeit
- Aktivierung eines externen Audio‑Verstärkers (PA‑Pin)
- Kompatibel mit ESP‑IDF
- Waveshare ESP32‑P4‑NANO
- ES8311 Audio‑Codec
- Kopfhörer 4 Ohm oder 8 Ohm Lautsprecher (angeschlossen an die weiße JST-Buchse auf dem Board) oder Lautsprecher
- Optional: Mikrofon (für Echomodus)
- Verbindung: USB-C Kabel (angeschlossen am Port UART)
- Entwicklungsumgebung:** Visual Studio Code (VS Code)
- Erweiterung:** Espressif IDF Extension für VS Code
- ESP‑IDF (empfohlen: v5.x oder neuer)
- CMake / Ninja (Standard bei ESP‑IDF)
- Toolchain für ESP32‑P4
main/
├── i2s_es8311_example.c # Hauptbeispiel
├── example_config.h # Pin‑ und Parameterkonfiguration
└── CMakeLists.txt
Das Projekt aktiviert einen definierten GPIO‑Pin (z. B. GPIO48), um einen
externen Audio‑Verstärker (PA) einzuschalten:
gpio_set_level(GPIO_OUTPUT_PA, 1);Der Codec wird über I2C konfiguriert:
- Sample‑Rate
- Master‑Clock (MCLK)
- Auflösung: 16‑Bit
- Lautstärke
- Mikrofon‑Konfiguration
- Optional: Mikrofonverstärkung
Das Projekt richtet I2S wie folgt ein:
- Master‑Modus
- Philips‑Standard
- 16‑Bit Stereo
- Zuweisung der Pins:
- MCLK
- BCLK
- WS
- DOUT
- DIN
Sowohl TX (Ausgabe) als auch RX (Eingabe) werden aktiviert.
Wenn CONFIG_EXAMPLE_MODE_MUSIC aktiviert ist:
- Eine PCM‑Datei wird als Binärressource eingebettet
- Daten werden vorab in den TX‑Kanal geladen
- Die Musik wird in einer Endlosschleife abgespielt
Wenn der Musikmodus deaktiviert ist:
- Mikrofon‑Daten werden über I2S eingelesen
- Direkt wieder über I2S ausgegeben
- Dadurch entsteht ein Live‑Echo
Projekt kompilieren:
idf.py buildFlashen:
idf.py flashSerielle Ausgabe:
idf.py monitorDie Einstellungen findest du in:
example_config.h
Dort kannst du u. a. anpassen:
- I2S‑Pins
- I2C‑Pins
- Sample‑Rate
- MCLK‑Multiplikator
- Lautstärke
- Betriebsmodus (Musik / Echo)
-
Projekt öffnen: Lade dieses Repository herunter und öffne den Ordner in Visual Studio Code.
-
Ziel wählen: Setze das Target auf den P4-Chip:
- Befehl:
ESP-IDF: Set Espressif Device Target->esp32p4
- Befehl:
-
Kompilieren (Build): Erstelle das Programm.
- Klicke auf das Zylinder-Symbol (Build) in der unteren Leiste.
-
Flashen: Übertrage das Programm auf das Board.
- Verbinde das Board über den UART-Port.
- Klicke auf das Blitz-Symbol (Flash).
-
Testen: Nach dem Neustart sollte leise Musik aus dem angeschlossenen Lautsprecher zu hören sein.
Dieses Projekt basiert auf Beispielcode von Espressif Systems. (https://www.waveshare.com/wiki/ESP32-P4-Nano-StartPage)
- Lizenz: CC0-1.0 (Creative Commons Zero v1.0 Universal)
- Status: Public Domain (Gemeinfrei)
Der Code kann frei verwendet, verändert und für eigene Projekte genutzt werden.
Prilchen LABS
- Webseite: prilchen.de
- YouTube: Prilchen auf YouTube
- GitHub: prilchen
Hinweis: Dies ist ein Lernprojekt für Ausbildungszwecke (FiSi / ITSE) und Bastler.