Forum: Mikrocontroller und Digitale Elektronik TUSB3200A Erfahrungen?


von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

>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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

muss ich raussuchen das kann ne weile daueren.

Thomas

von Julian (Gast)


Lesenswert?

Kein Problem. Wenn du es noch findest wäre es cool, wenn du es hier 
postest. Oder per Mail geht natürlich auch (c:

Viele Grüße,
Julian

von Julian (Gast)


Lesenswert?

Hallo Thomas,

wollte den Thread noch mal aktivieren, in der Hoffnung, dass dir der 
Schaltplan noch mal über den Weg gelaufen ist?

Gruß,
Julian

von Thomas (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

Suuuper, danke :D

Viele Grüße,
Julian

von Julian (Gast)


Lesenswert?

Vorsichtig nachfrag, ob Thomas den Plan gefunden hat? (c:

von Wolfgang Mües (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

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

von Julian (Gast)


Lesenswert?

Hallo Thomas,

meinst du, du findest den Plan noch wieder? (c:

Gruß,
Julian

von Mr. P (Gast)


Lesenswert?

Hallo
 Wo finde ich den Teil des Codes von 0x000 bis 0x800 für die Soundkarte

"Phase 26"


Danke



Mr.P

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.