Hallo,
hat evtl von Euch schon jemand Erfahrungen mit dem TI TUSB3200A USB
Audio Controller gemacht?
Ich würde den gerne zum bau eines USB-Soundmoduls nutzen.
Habe die Sample-Firmware schon recht gründlich angesehen und denke das
ist machbar. Würde sie nur auf SDCC portieren, da ich keinen Keil
Compiler habe.
Leider scheint es für den Chip keine Eval-Boards mehr zu geben, daher
wäre es natürlich um so spannender falls jemand schon Erfahrungen mit
dem Ding hat und weiß worauf man achten sollte?
Oder gar jemand der selbst schon mal eine Firmware für das Teil
geschrieben hat?
Gruß,
Julian
>Habe die Sample-Firmware schon recht gründlich angesehen und denke das>ist machbar.
vergiss die Orginal Software. Die ist nicht besonders gut, und an
einigen Stellen sogar falsch.
>Würde sie nur auf SDCC portieren, da ich keinen Keil Compiler habe.
kann man machen. Bringt aber eine Fehlerquelle mehr.
Das Eval Board war noch nie in DE lieferbar. Ich hatte mir deshalb
ein eigenes Board gebaut.
- TUSB im Extern mode
- 80c52 Controller mit Keil Monitor
- Codec Interface auf ner Stiftleiste.
>Oder gar jemand der selbst schon mal eine Firmware für das Teil>geschrieben hat?
ja habe ich sowohl für den TUSB3200A als auf für den TAS 1020.
Beide Teile waren kommerziell erfolgreich. Ein 3. Design blieb nur
Studie.
Die TI Chips waren mit Abstand die besten Teile für USB Audio.
Ab der Rev A haben Sie auch ganz gut funktioniert.
Thomas
Hallo Thomas,
danke für den Input. Das die TI-Software nicht das gelbe vom Ei ist war
mir schon klar. Aber zumindest als Grundlage hätte ich sie herangezogen.
Insbesondere da das Datenblatt an vielen Stellen ja sehr oberflächlich
ist.
Hast Du mal eine Firmware gebaut die den Asynchronen USB-Modus
beherrscht? - Für wirklich guten klang ist das imho unerlässlich.
Viele Grüße,
Julian
Was meinst du mit Asynchron? Falls du Audio über bulk machen willst:
vergiss es. Es sei denn du willst einen kompletten Audio Treiber
schreiben.
Ich habe sowohl rate adaptiv als auch synchron gemacht.
USB Audio geht zumindest unter Win nur gut wenn du die ISO pipes
sychron machst. Bei rate adaptiv wird das nicht bitgenau.
Das Hauptproblem bei mir war eigendlich immer der mangelnde
Speicherplatz. Wenn du mit dem SDCC arbeitest wirst du sehr schnell
die 8k voll haben. Der Keil code ist etwa 30% kürzer.
Aus reiner Neugier:
wird das was komerzielles? Weil eigendlich ist usbaudio seit 2 Jahren
tot.
Thomas
Im Moment ist das in erster Linie ein privates Projekt. Wenn es gut wird
könnte es auch irgendwann mal Kommerziell werden.
Wieso meinst du das USB Audio tot ist? - Insbesondere im High-End
Bereich gibt es sehr viele USB-DACs. (z.B.
http://www.wavelengthaudio.com/)
Ich möchte selber einen recht hochwertigen DAC mit AK4396 DACs bauen...
USB erschien mir dafür bisher die geeignetste Lösung. Oder hast du einen
besseren Vorschlag?
Im asynchronen Modus benutzt man einen zusätzlichen Endpoint um dem PC
zu signalisieren wieviel Daten gerade benötigt werden. So bekommt man
eine reine Datenleitung und kann den I2S-Ausgang des TUSB3200A komplett
unabhängig vom PC takten. Damit ist man auch das USB-Jitter Problem los.
Das Datenblatt beschränkt sich zum Thema Asynchron allerdings auf den
Hinweis, dass es unterstützt wird. Ein bisschen googlen bringt einen
aber z.B. dahin, dass wavelengthaudio eine Firmware mit asynchroner USB
Unterstützung implementiert hat.
Unter Windows sollte das seit Vista auch ordentlich funktionieren. Ich
interessiere mich aber ohnehin in erster Linie für Linux-Systeme. Da
schreckt es mich auch nicht ab ggfls. an den Treibern etwas Hand
anzulegen.
Viele Grüße,
Julian
Ah du meinst die Feedback pipe. Ja habe ich implementiert. Die
Ergebnisse
waren mangelhaft. Ehrlicherweise war es aber so dass meine HW ab Win98SE
und Mac OS9 funktionieren musste. Selbst das habe ich nicht mit einer FW
hinbekommen. USB audio ist tot weil es nie eine vernünftige 2.0
Implementierung der Spec gegeben hat. Vista hab ich nie probiert
wohl aber Linux. Dort musst du sehr viel selber machen.
Der Codec Clock ist doch sowieso frei programmierbar und nicht an die
12 MHz gebunden.
http://www.heise.de/preisvergleich/a69811.html ist übrigens meine Kiste
inzwischen fast 6 Jahre alt
Thomas
Das ist ja interessant, dass du das Terratec-Teil gebaut hast (c:
Die USB 1.1 Audio Spec ist ja für alles was nicht 192khz ist durchaus
gut geeignet. Insofern sehe ich auch nicht was dagegen sprechen sollte
sie zu verwenden.
Ja, man kann zwar eine andere Taktung benutzen die wird dann aber von
der PLL im TUSB3200A generiert, die soweit ich weiß an den USB-Takt
gebunden ist, damit wäre wieder das Jitter-Problem da.
Eine funktionierende Implementierung des asynchronen Modus soll wohl
nicht ganz unproblematishc sein, aber durchaus machbar.
In Sachen Linux sind die USB-Audio Treiber im ALSA soweit ich weiß recht
gut funktionsfähig. Aber da ggfls. noch was zu erweitern sollte wie
gesagt kein Problem sein. Habe bereits für diverse Audiotrak PCI-Karten
die ALSA-Treiber gebaut.
Die Binarygröße beim SDCC könnte natürlich wirklich zum Problem
werden... Naja, notfalls muss dann doch der Keil her.
Ich sehe auf jeden Fall keine große Alternative zu USB... PCI(e) ist mir
zu aufwändig, Firewire scheint auch nicht gerade einfacher zu sein als
USB. Viel mehr bleibt dann ja nicht übrig.
Viele Grüße,
Julian
nur mal als Anhaltspunkt:
meine firmware war mit allen Optionen eingeschaltet fast 16k groß.
Weil ich relativ große Deskriptor Tabellen hatte, habe ich die dann
gepackt abgelegt. Für eine gut funktionierende Minimalversion habe
ich etwa 6k benötigt. Mit dem SDCC wirst du keine Freude haben,
da er z. B. Funktionsparameter über den Stack übergibt.
Das hat zwangsläufig mehr code zur Folge.
Wenn man die PLL im Sof Interrupt korrekt nachführt ist der Jitter
übrigens minimal. Genau da funktioniert übrigens der Beispiel code
nicht.
Am wichtigsten ist, dass du den Enum code möglicht kompakt
gestaltest. Dort ist sehr viel Optimierungspotential drin. Mit etwas
Erfahrung kann man den auf 0x800 Bytes drücken.
Thomas
16k ist natürlich eine Menge. Wenn ich mir die Kiste so angucke hatte
die allerdings auch ein paar mehr Funktionen. Ich möchte lediglich
2-Kanal Line Ausgabe und evtl noch einen 2-Kanal Line-In machen. Das
macht es also schonmal überschaubarer.
Wenn sich durch die Feedback-Pipe der USB-Jitter tatsächlich komplett
eliminieren lässt ist es mir das den Aufwand wert...
Ich denke mal ich werde die Original-Firmware als Referenz verwenden und
dann selbst neu implementieren. Alternative Referenzen scheint es ja
nicht zu geben. Habe zwar ein paar Seiten gefunden, die auf
OpenSource-Firmware für die Chips verweisen, aber die Seiten scheinen
alle tot zu sein...
Würde mich auf jeden Fall freuen, falls du mir mit dem einen oder
anderen Tipp zur Seite stehst wenn es bei mir haken sollte (c:
Viele Grüße,
Julian
Eine Frage noch zu deinem selbstgebauten Eval-Board:
Warum hast du nen exteren 8052 genommen? - Hattest du das generell vor
für die Projekete oder macht es das nur zum testen einfacher?
Viele Grüße,
Julian
nun das hatte mehrere Gründe:
1. für std x51 Kerne habe ich einen Emulator. Das heist ich konnte
direkt auf der Zielhardware debuggen.
Der TUSB Chip wird dann einfach wie ein std Preipherie Device in
den Addressraum gemapped.
2. Beim ursprünglichen Entwurf hatte ich auch noch vor extra
DSP Einheiten in den Signalweg einzuschleifen. Das Memory
Interface hätte ich dann sowieso gebraucht.
3. Später habe ich dann auf dem exteren Controller einfach den Mon51
von Keil installiert. Damit kunnte ich problemlos über die ser.
Schnittstelle debugen.
4. Ich bin was die sonstige Peripherie angeht deutlich flexibler.
(2. ser Schnittstelle, SPI Interface, Timer 2)
Wenn du das Bild genauer ansiehst wirst du 2 nicht bestückte
Stiftleisten
finden. Eines war das Codec Interface das andere ein Addressbuss.
Da ich swieso einen Prototypen für die Software brauchte und das
Eval Board nicht lieferbar war, habe ich halt selbst was gebaut.
Wir waren übrigens ende 2001 die ersten die Rev A Sampels in DE hatten.
Thomas
Das ist ja interessant, dass die Stiftleisten auf der Serien-Platine
vorgesehen sind. Hat das Board auch 'nen JTAG-Interface o.ä. zum
Programmieren? - Dann wäre das durchaus eine Alternative zum
selbsgebauten Eval-Board... 150EUR würde das eh allemal kosten.
Das würde mich wirklich interessieren... Auf dem Board ist aber kein
externer 52er mehr drauf, oder? - Kann das auf dem kleinen Bild so
schlecht sehen...
Viele Grüße,
Julian
nein JTAG gibts nicht so oft bei den 51er. Die Kiste als EVAL Board zu
nehmen bringt dir leider nichts (auser du hast einen EMU).
Für Monitor Betrieb fehlt das von Neumann RAM.
Der 51er ist aber noch drauf. (Atmel 89C51RB2 manchmal auch der RD2)
Ich wolte nicht das Risiko eingehen, dass mir der Speicher während
der Entwicklung ausgeht. Später hat sich dann rausgestellt dass die
8k knapp gereicht hätten. Allerdings sind mir zwischezeitlich
die Portpins ausgegangen. Ein Redesign wollten wir aus Zeitgründen
nicht mehr machen.
Die Mehrkosten für den ext. Controller waren gerade mal 5 USD.
Obwohl auf die Stückzahl umgerechnet wäre das ein netter Daimler
geworden.
Theoretisch kann man das Board mit dem Keil Flashmon betreiben dann
muss halt an eine Stiftleiste ein Max232 als Pegelwandler.
Probiert habe ich das allerdings nie.
Thomas
Das ist natürlich schade... Um Zugang zu den Keil-Tools habe ich mich
aber schon gekümmert. Habe einen bekannten der die verwendet. Dort kann
ich mich austoben.
Hast Du noch einen Schaltplan für Dein Eval-Board, den Du mir
möglicherweise zukommen lassen könntest? - Da wüsste ich dann schonmal,
dass es funktioniert.
Viele Grüße,
Julian
Ja das ist schon ok. ich war fast 3 Wochen in China.
Von dort aus kann man mit Gastzugang nicht schreiben.
Da ist wohl eine IP Sperre eingebaut. Schaltplan kommt morgen abend.
Thomas
Hallo,
ich bin auch gerade am Knobeln, ob ich da ein Projekt draus mache...
Als Endstufe hatte ich mir den TAS5706A voergenommen, zusammen mit einem
Notebook-Netzteil.
Ich frage mich nur, ob vielleicht der PCM2706/07 nicht einfacher
einzusetzen ist? Die Takterzeugung sieht auch moderner aus...
Viele Grüße
Wolfgang
Hallo Wolfgang,
der PCM2706/07 ist deutlich einfacher einzusetzen, da keine
Firmware-Entwicklung nötig wird. Aber er ist dadurch natürlich auch in
den möglichen Funktionen und vor allem auch Qualitativ (durch die
Erzwingung des adaptiven USB-Modus) eingeschränkt.
Daher ist der TUSB3200A zumindest für mich die bessere Alternative.
Viele Grüße,
Julian