Arduino & Raspberry Pi

Ein mehrkanaliger HDA-Codec auf dem RP2040

Die HDA-Link-Schnittstelle, auch Azalia genannt, findet man meist nur in PC-Chipsätzen. Der Autor eines Habr-Artikels wollte prüfen, ob der Mikrocontroller RP2040 des Raspberry Pi Pico als Host für diese Schnittstelle dienen kann. Der Reiz liegt auf der Hand: Mehrkanalige HDA-Audiocodecs bieten deutlich mehr Kanäle als I²S.

Das Projekt basiert auf einem RP2040 mit PIO-Blöcken und einem auf der Platine verbauten Realtek ALC889. Die Platine stammt von einem früheren, gescheiterten Versuch mit einem STM32F103 und einem Spartan-3. Das BCLK-Signal muss stabile 24 MHz haben und kann daher nicht per Software erzeugt werden. Die Schnittstelle nutzt vier Leitungen: BCLK, SYNC, SDO und SDI. Ein Rahmen mit 1000 Bit ergibt 48 kHz, bei 96 und 192 kHz steigt die Zahl der Samples pro Rahmen.

Die Umsetzung nutzt vier PIO-Zustandsautomaten: SDO-Ausgabe, SYNC-Ausgabe, SDI-Eingabe mit BCLK-Erzeugung und einen Automaten, der dem Codec eine Adresse zuweist. Die Daten laufen über DMA, während der zweite Kern des RP2040 Samples und Befehle packt und die Antworten des Codecs auswertet. Das Demoprojekt erzeugt Sinustöne auf fünf Stereo-DACs, die dritte Harmonische liegt bei etwa −123 dB.

Der Codec lief mit 192 kHz Abtastrate. Das Übertakten des RP2040 auf 32 MHz (256 kHz) funktionierte ebenfalls, der Codec wurde dabei aber stark warm. Die Platine zieht bei 3,3 V zwischen 150 und 270 mA. Es gibt auch Grenzen: Die eingebauten Filter wirken wie ein Hochpass erster Ordnung mit rund 4 Hz Grenzfrequenz, und die HDA-Eingangsbandbreite erlaubt nicht drei Stereokanäle mit 24/192 gleichzeitig.

Der Autor entdeckte außerdem einen Synchronisationsfehler des RP2040, wenn DMA, USB und XIP-Sampling gleichzeitig laufen. Die Ursache fanden Spezialisten von Raspberry Pi. Für aufwendige Verarbeitung empfiehlt er den RP2350 mit DSP-Befehlen. Mir gefällt, dass das Projekt Ergebnisse und Schwächen gleichermaßen ehrlich zeigt.

Quelle: Habr

Kommentare 0

Schreib den ersten Kommentar, in jeder Sprache.

Zum Kommentieren anmelden