Forum: Mikrocontroller und Digitale Elektronik Audio-DAC an LPC2106?


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

hat jemand eine Idee wie man einen Audio-DAC an den LPC2106 anbinden
könnte? Ein I2S-Signal zu erzeugen scheint ohne zusätzliche Hardware
fast unmöglich zu sein.

Gruß
Andreas

von Rufus T. Firefly (Gast)


Lesenswert?

Ich fürchte, daß Du recht haben könntest. IIS ließe sich in Software per
"bit-banging" hinbekommen, aufgrund des hohen erforderlichen Takts
dürfte der LPC aber zu gar nichts anderem mehr kommen (bei
16-Bit-Stereo-Samples, die mit 44.1 kHz übertragen werden, liegt die
Datenrate bei etwa 1.4 MBit/sec).

Mit externer Hardware (parallel zu befüllendes Schieberegister) wird
sich das sicherlich lösen lassen. Aber auch das ist mit dem 2106 fast
schon grenzwertig, da der ja nur sehr wenig nutzbare I/O-Leitungen
hat.

Was genau hast Du vor?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich habe einen MP3-Decoder im LPC laufen und würde den Ton gerne
irgendwie dort rausbekommen. Das Problem mit I2S ist dass Masterclock,
Bitclock und Wordclock in festem Verhältnis stehen müssen, das ist mit
SPI wohl kaum möglich. Der einzige SPI-DAC den ich kenne ist der
VS10xx, aber den als DAC für einen Software-MP3-Decoder zu verwenden
wäre ja irgendwie unsinnig.

von Rufus T. Firefly (Gast)


Lesenswert?

Interessantes Projekt. Ein "bit-banging" verbietet sich hier
vermutlich gänzlich, da der mp3-Decoder wohl auch ein bisschen
Rechenleistung verbraucht.
Ein Lösungsansatz, der allerdings nur mit einem FPGA/CPLD oder
ähnlichem realisierbar sein dürfte (oder einem recht großen Gattergrab)
wäre ein SPI-zu-IIS-Konverter. Der wird vom LPC via SPI befüllt und
kümmert sich um den Rest.

Was wäre von einem nicht-Audio DAC zu halten? Da gibt es immerhin
welche mit SPI-Interface, wie beispielsweise den hier
http://focus.ti.com/lit/ds/symlink/dac8532.pdf

Wenn ich mich nicht total vertue, müsste es möglich sein, den mit dem
SPI-Interface des LPC zu verheiraten, und die "update rate" von 93
kSample/sec sollte auch reichen. Du musst "nur noch" zu den richtigen
Momenten an der Leitung /Sync zupfen - und die richtigen Inhalte
senden.

Der Wandler möchte zwar 24-Bit-Daten übertragen haben, aber das dürfte
drei nacheinander per SPI übertragenen Daten entsprechen. In den
ungenutzen Bits werden, wenn ich das Datenblatt richtig überflogen
habe, Informationen wie Kanalwahl und anderer Kram übertragen (Siehe S.
11 im Datenblatt).

Wär' das was für Dein Projekt?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

An einen "normalen" DAC habe ich auch schon gedacht; allerdings
brauche ich dann halt noch einen Tiefpassfilter und ggf. Verstärker,
also habe ich wieder ein paar Teile mehr auf der Platine, und
wahrscheinlich mehr Schwierigkeiten mit der Tonqualität im Vergleich
zur Single-Chip-Lösung. Aber besser als gar nichts ist es.

Externes CPLD ist auch eine Möglichkeit, aber aufwendig. Man bräucht
ein kleines FPGA im Controller, oder sowas wie die TPU im 68332...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hmm, vielleicht klappt das mit I2S doch. So wie ich das im Datenblatt
vom tlv320dac26 verstehe muss nur der Worttakt synchron zum Mastertakt
sein (das sollte mit dem Timer gehen), der Bittakt muss halt nur die
Daten rechtzeitig zum Worttaktwechsel vollständig reingeschoben haben
(das geht mit SPI). Beim CS4334 irritiert mich nur der Satz "Please
note that there is no required phase relationship, but MCLK
(Mastertakt), LRCK (Worttakt) and SCLK (Bittakt) must be
synchronous.".

von Thomas (Gast)


Lesenswert?

I2S geht definitf nicht mit SPI.
Wenn sich der Codec auf MSB first umstellen lässt kannst du mit SPI
arbeiten. Das funktioniert

Thomas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hmm? MSB first ist doch Standard.

von Thomas (Gast)


Lesenswert?

Dann schau dir mal I2S genauer an. (Wordclock zu Daten) dann weist du
was ich meine.
Thomas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

"The WS line changes one clock period before the MSB is transmitted."
Wo ist da das Problem? Würde es dir etwas ausmachen dich klarer
auszudrücken?

von Thomas (Gast)


Lesenswert?

ohne jetzt zu sehr ins Detail zu gehen Es gibt bei Audio Codecs
diverse serielle Formate. I2S MSB first LSB first und ein paar andere.
Wenn du das ganze per SPI machen willst, kannst du eben kein kein I2S
verwenden.

Thomas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

MSB first ist wie schon gesagt Standard. Aber worauf willst du hinaus?
Ich kann Bits doch beliebig umsortieren, ein Bit mehr vorne dran
reinschieben, usw. Das Problem scheint viel eher die Synchronisation zu
sein.

von Rufus T. Firefly (Gast)


Lesenswert?

Der SPI des 2106 kann sowohl LSB first als auch MSB first (siehe User
Manual, Seite 128, Tabelle 100, Bit 6 im SPCR - LSBF).

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.