Forum: Mikrocontroller und Digitale Elektronik Audio DAC für LPC2378


von Mike (Gast)


Lesenswert?

Hallo,

ich möchte meinen LPC2378 mit einem Audio-Dac versehen. 16 Bit Mono bei 
32 oder 48 kHz würden schon genügen. Der LPC2378 besitzt zwar eine I2S 
Schnittstelle, doch leider hat die nur 3 Pins (SCK, WS und SD), während 
die DAC's 4 Signale benötigen. WS schein LRCLK zu enstprechen, aber es 
fehlt der MCLK -Ausgang. Eventuell kann man den Takt durch den Timer des 
LPC2378 erzeugen, do wie bekomme ich dann die Ausgänge synchronisiert?
Kennt jemand einen DAC, der mit dem LPC2378 kompatibel ist?

Gruss
Mike

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

MCLK ist in der Regel WS*256 oder WS*512, je nach Betriebsart des DAC. 
Eventuell kannst Du 12,288MHz oder 24,576MHz als Takt für den LPC und 
gleichzeitig für den DAC nutzen, dann kannst Du jeden beliebigen Stereo 
I2S-DAC benutzen (48kHz 16...24Bit).

von Mike (Gast)


Lesenswert?

Die "krummen" Werte als Prozessortakt kann ich leider nicht verwenden, 
da ich auf ein Vielfaches von 12MHz für den USB angewiesen bin. Es 
scheint so, als ob das I2S Interface von NXP wenig brauchbar ist - wozu 
ist es dann da? Ich werde daher versuchen, den DAC statt mit 12.288 MHz 
mit 12 MHz zu betreiben. Dann beträgt die Datenrate zwar nur 46,875 kHz, 
was in etwa 0.4 Halbtönen tiefer entspricht und kaum hörbar sein sollte.

Gruss
Mike

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Evtl. hilft der TLV320AIC23B da eigene interne Takterzeugung 
ARM MP3/AAC Player)

von Bernd G. (Gast)


Lesenswert?

Eine aufwendige Lösung: Sample-Rate-Converter zwischen Prozessor und 
DAC.
(Kostet etwa 5 - 10 €, gibt es bei TI). Dann dürfen Prozessor- und 
DAC-Takt
unterschiedlich sein.

von Gerhard (Gast)


Lesenswert?

0,4 Halbtöne tiefer sind deutlich hörbar und wären für jeden halbwegs 
musikalischen Menschen eine Zumutung. Diese Lösung solltest du m.E. 
abhaken.

Audio-DACs sind eigentlich nicht zum Anschluß an µCs gemacht. Der 
Masterclock muß synchron zum Rest sein, deshalb ginge es auch mit einem 
separat erzeugten Takt nicht.

Schau dich mal unter dem Stichwort "AC97-Codec" um, da gibt es einige 
bei den üblichen Verdächtigen (Cirrus, TI, ...). Diese brauchen, wenn 
ich mich richtig erinnere, nur einen Bitclock und sind für solche 
Anwendungen besser geeignet.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

AC97 ist ja noch komplizierter. Ich würde den Mastertakt einfach extern 
mit einem Quarz und Teilern erzeugen und sowohl DAC als auch 
Controller-I2S als Bit-Takt-Slaves laufen lassen. Falls der Controller 
da mitkommt. Ach und herkömmliche I2S-DACs können mit dem notwendigen 
Aufwand sehr wohl an µController angeschlossen werden. Siehe hier: 
Beitrag "SD-Karten-Wave-Recorder"

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

2 Möglichkeiten:
- DAC verwenden der mit 12 MHz klar kommt
- DAC mit eigenem Quarz als I2S-Master (Controller als Slave)

Beides geht mit dem von Martin erwähnten TLV320AIC23B.

von Tim J. (timjaacks)


Angehängte Dateien:

Lesenswert?

Hallo!

Mir ist klar, dass dieser Thread schon zwei Jahre alt ist, aber es gibt 
sicherlich Leute, die ihn durch die Suche finden (so wie ich zum 
Beispiel :-)). Deshalb möchte ich gern kurz eine Lösung vorstellen, die 
ich selbst probiert habe:

Es gibt externe Clock-Generatoren für I2S. TI hat welche im Angebot 
(nach Audio Clock Generator suchen), ich selbst habe einen von MAX 
benutzt, den MAX9485. Der braucht einen 27MHz-Quarz als Eingang und 
erzeugt eine entsprechende I2S-Master-Clock. Die Samplerate und der 
Skalierungsfaktor (256x, 384x) lassen sich entweder durch einfache 
Pin-Beschaltung auf High/Low oder per I2C konfigurieren. Der LPC2378 
muss dann als I2S-Slave konfiguriert werden, d.h. man braucht einen 
Wandler, der Master-fähig ist. Der erhält die MCLK und generiert daraus 
SCLK und LRCLK. Die wiederum werden vom LPC2378 empfangen. Das 
funktioniert wunderbar und problemlos!

Für alle, die den LPC2378 gern als I2S-Master benutzen wollen, gibt es 
von NXP ein (gut verstecktes) PDF, das eine Möglichkeit dafür aufzeigt. 
Das befindet sich im folgenden ZIP-Archiv: 
http://www.standardics.nxp.com/support/documents/microcontrollers/zip/i2s.usb.audio.demo.zip. 
Ich habe dieses PDF auch hier mal angehängt. Ab Seite 18 wird erklärt, 
wie man die Clocks erzeugt. Diese Möglichkeit habe ich selbst nicht 
ausprobiert, aber da sie direkt von NXP kommt, wird sie wohl sicherlich 
auch funktionieren.

Hoffe, dass ich mit diesem Beitrag noch einigen Leuten helfen konnte!

Viele Grüße,
Tim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.