I²S Signal mit ATmega erzeugen

#1409101
Lesenswert?

Guten Abend,

um einen Audio DAC vom Typ WM8714 zu testen, und um einfach mal
auszuprobieren ob es möglich ist, versuche ich einen ATmega88 I²S Daten
ausgeben zu lassen.

Ich arbeite mit zwei Timern im CTC Modus. T0 (MCLK) läuft läuft 8x so
schnell wie T2 (BCLK), der bei jedem Flankenwechsel einen Interrupt
auslöst.
In dieser ISR wird bei jedem zweiten Aufruf ein neues Bit auf DIN gelegt
so dass es bei steigender Flanke von BCLK bereit liegt.
Außerdem wird alle 16 Takte LRCIN umgeschaltet und das 8 bit Wort dass
ich ausgeben möchte um 1 inkrementiert. Bit 9-16 sind dabei immer 0.

Mit dem Selbstbau-LA Scanlogic, meinem Multimeter und meinem Oszi habe
ich die Ausgangssignale auf Frequenz und Timing hin überprüft und kann
keinen Fehler feststellen.

Ich habe verschiedene Frequenzen getestet bis hinauf zu 16 kHz
Samplingrate aber es ist hinter einem LC Filter über hochohmig
angeschlossene Kopfhörer nichts zu hören.
Ein anderer DAC vom Typ DA1131 bleibt ebenfalls stumm, rauscht aber
etwas und fabriziert fürchterliche Geräusche wenn ich das Timing
absichtlich verstelle ;).

Die Screenshots vom LA habe ich mal angehängt. Zum einen sieht man das
Verhältnis MCLK zu BCLK, auf dem anderen BCLK, DIN und LRCIN.
Ich hoffe jemand erkennt einen Fahler, denn ich bin ratlos.

Grüße,
Marco
Angehängte Dateien:
Persönliche Seite #1409159
Lesenswert?

Ich versuche hier momentan einen MAX9850 zum laufen zu bringen 
(allerdings mit einen SAM7). Bisher höre ich auch nur das Rauschen des 
Verstärkers...

Dein Logic-Analyzer ist ja ein ganz nettes Teil, so einen kann man sich 
mal schnell zusammen basteln.

AFAIK ist I2S so definiert, dass auf der steigenden Flanke Daten in den 
DAC gelesen werden.
Wichtig ist auch, dass das MSB des aktiven Kanals erst beim zweiten BCLK 
Puls übertragen wird (mit dem vorherigen BCLK Puls wird das LSB des 
vorherigen Kanals übertragen). Die meisten DACs kann man aber so 
einstellen, dass sie sich anders verhalten. Das konnte ich zumindest 
meinem Errata entnehmen:
http://pdfserv.maxim-ic.com/en/errata/MAX9850_ERRATA.pdf

So ganz erkennen was da passiert kann ich nicht. Das zweite bild sieht 
aus als würden viel weniger Bits übertragen werden

Wichtig ist ja auch, dass die Einstellungen des DAC genau zu der 
ausgegebenen MCLK und BCLK des µC passen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren