www.mikrocontroller.net

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


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. hilft der TLV320AIC23B da eigene interne Takterzeugung 
ARM MP3/AAC Player)

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim Jaacks (timjaacks)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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/m.... 
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.