Forum: Mikrocontroller und Digitale Elektronik TUSB2046B funktioniert leider nicht / wird nicht erkannt bzw entdeckt


von Ludo S. (ludo916)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

um einen USB-Hub zu realisieren habe ich die Schaltung wie im Anhang 
gemacht. Leider funktioniert die nicht und sie wird von Windows/Linux 
nicht erkannt. Man merkt gar nicht, dass etwas angeschlossen wurde.

Ich habe mir die anderen Beiträge durchgelesen und die mögliche 
Änderungen in meiner Schaltung durchgeführt. Es funktioniert immer noch 
nicht.

Vielleicht kann mir einer noch an dieser Stelle helfen, die Ursache zu 
finden.

Danke und VG

Ludo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ludo S. schrieb:

> Ich habe mir die anderen Beiträge durchgelesen und die mögliche
> Änderungen in meiner Schaltung durchgeführt.

Welche waren das denn?

> Es funktioniert immer noch
> nicht.

Cross-check:

* läuft der Quarz überhaupt an?
* stimmt dessen Frequenz genau genug?
* DP und DN tatsächlich an die korrekten Pins angeschlossen?

von Ludo S. (ludo916)


Lesenswert?

Vielen Dank für deine Rückmeldung.

Jörg W. schrieb:
> Welche waren das denn?

Pull Up / kondendator an den Reset Pin.

Jörg W. schrieb:
> * läuft der Quarz überhaupt an?
> * stimmt dessen Frequenz genau genug?
> * DP und DN tatsächlich an die korrekten Pins angeschlossen?

Ja DP und DN wurden richtig angeschlossen. Die Frequenz vom Quarz war 
auch in Ordnung.

VG

von Jim M. (turboj)


Lesenswert?

Ludo S. schrieb:
> Man merkt gar nicht, dass etwas angeschlossen wurde.

Laut Schaltplan geht ein fest installierter Pullup von D+ an 3,3V - 
damit muss sich was am Linux/Windows tun - jedenfalls wenn man eine 
Weile wartet.

Ein nackter Pullup auf D+ würde unter Windows ein Gerät mit 
Ausrufezeichen im Gerätemanager erzeugen.

Unter Linux muss das >dmesg< irgendwas mit "new full speed device" 
anzeigen - ansonsten ist D+ oder GND nicht korrekt angeschlossen.

von Ludo S. (ludo916)


Lesenswert?

Jim M. schrieb:
> Laut Schaltplan geht ein fest installierter Pullup von D+ an 3,3V -
> damit muss sich was am Linux/Windows tun - jedenfalls wenn man eine
> Weile wartet.

Bei mir ging es leider nicht.

Jim M. schrieb:
> Ein nackter Pullup auf D+ würde unter Windows ein Gerät mit
> Ausrufezeichen im Gerätemanager erzeugen.

Ich gucke die ganze Zeit im Gerätemanager und es tut sich leider 
nichts.Was würde man den machen wenn das nicht korrekt erkannt wird, da 
man keinen Treiber benötigt?

Jim M. schrieb:
> ansonsten ist D+ oder GND nicht korrekt angeschlossen.

Ist etwas worauf man hier achten sollte?

VG

von Thomas (Gast)


Lesenswert?

Der 2046 ist total problemlos, um zumindest erkannt zu werden, brauchen 
nur vier Dinge erfüllt zu sein:
1. Vcc und GND muss angeschlossen sein 3.3V.
2. Reset darf nicht auf GND liegen
3. Der Quarz muss auf 12 MHz schwingen
4. Der Upstreamport muss richtig und mit einem 1k5 Widerstand 
angeschlossen sein.

Auch wenn dein Schaltplan sehr unübersichtlich ist und der Upstreamport 
fehlt, scheinen diese Sachen bei dir korrekt zu sein. Als Hinweis: du 
könntest bei der Ausgabe z.b die Pinmarkierungen ausschalten die stören 
nur.

Prüfe DM0 auf Kurzschluss am Überspannungs IC. Prüfe an DM0P gegen Vcc 
dort muss 1.k5 Ohm zu messen sein.
Und nochmal: Sind die D+ und D- wirklich korrekt mit DM0P und DM0M 
verbunden?
Falls das alles stimmt muss auf jedenfall etwas passieren wie Jim gesagt 
hat.
Gerätemanager prüfen.
Übrigens der Connect Widerstand wird üblicherweise an VUsb des 
Upstreamports angeschlossen und nicht an der interne 3.3V Spannung.

Thomas

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas schrieb:
> Übrigens der Connect Widerstand wird üblicherweise an VUsb des
> Upstreamports angeschlossen und nicht an der interne 3.3V Spannung.

Hmm. Das muss er doch sogar sein, oder? Sprich, der muss gegen 5 V 
gehen, nicht gegen 3,3 V.

> 3. Der Quarz muss auf 12 MHz schwingen

Ich verstand das Datenblatt so, dass es 6 MHz wären.

von Thomas (Gast)


Lesenswert?

12 MHz war natürlich Käse sollte 6MHz sein

Thomas

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Jörg W. schrieb:
> Hmm. Das muss er doch sogar sein, oder? Sprich, der muss gegen 5 V
> gehen, nicht gegen 3,3 V.

Es funzt auch an den internen 3.3V wenn diese aus VUsb abgeleitet sind 
sprich das Teil Buspowered ist. Hab ich schon gemacht geht.

Thomas

von Ludo S. (ludo916)


Angehängte Dateien:

Lesenswert?

Thomas schrieb:
> 4. Der Upstreamport muss richtig und mit einem 1k5 Widerstand
> angeschlossen sein.

Anbei ein Bild vom Upstreamport wie es an dem Linux System (D+ und D- 
richtig) angeschlossen wurde. C34 und C33 wurde auch gelöscht.

Thomas schrieb:
> Auch wenn dein Schaltplan sehr unübersichtlich ist und der Upstreamport
> fehlt, scheinen diese Sachen bei dir korrekt zu sein. Als Hinweis: du
> könntest bei der Ausgabe z.b die Pinmarkierungen ausschalten die stören
> nur.

Den habe ich erneut als Pdf im Anhang.

Thomas schrieb:
> Und nochmal: Sind die D+ und D- wirklich korrekt mit DM0P und DM0M
> verbunden?

ja sind die.

Thomas schrieb:
> Übrigens der Connect Widerstand wird üblicherweise an VUsb des
> Upstreamports angeschlossen und nicht an der interne 3.3V Spannung

VUsb ist üblicherweise 5V und nicht 3.3V wie Vcc. wird die Spannung auf 
der Datenleitung (D+) nicht zu hoch ? Bei mir wird er an die interne 
3.3V angeschlossen.

VG
Ludo S.

Thomas schrieb:
> 12 MHz war natürlich Käse sollte 6MHz sein

Ja genau ich habe auch 6MHz

@Thomas

du hast in deiner Schaltung einen 4k7 und 4.7uF an den Reset-Pin. Wie 
ist es mit 10k und 100nF oder 1uF ?


VG.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ludo S. schrieb:
> VUsb ist üblicherweise 5V und nicht 3.3V wie Vcc. wird die Spannung auf
> der Datenleitung (D+) nicht zu hoch ?

Gerade nochmal nachgelesen, der Pullup ist gegen 3,3 V spezifiziert im 
Standard. Ich hatte das falsch in Erinnerung.

von Thomas (Gast)


Lesenswert?

Diese Schaltung ist so viele 1000 mal in einem USB Audio Device verbaut 
worden. Die funktioniert definitiv.
Meine Reset Beschaltung ist mehr wegen der damals vorhanden Std 
Bauteilen so dimensioniert. Mit 10k / 1u dürfte der Reset Puls etwa 
2.5mal kürzer sein. Das sollte kein Problem sein.
Wenn das alles so wie in deinem Schaltplan ist, hast du ein Problem mit 
dem Aufbau.
z.B. Lötfehler. 5V sind kein Problem den Connect Widerstand an 3.3V zu 
hängen aber auch nicht. Du musst übrigens an D+ und D- die 15k vom 
Downstream Port des Hosts messen können, wenn das USB Kabel gesteckt 
ist. PC muss natürlich aus sein.
Tatsächlich ist es so dass dieser Widerstand normalerweise auf 1k8 
vergrößert wird wenn man VUsb benutzt.

Thomas

von Harald (Gast)


Lesenswert?

Ich habe die Schaltung auch schon aufgebaut, die hat sofort 
funktioniert. Von daher muss ein Problem im Aufbau liegen. Hast du noch 
eine zweite Platine, die du Stück für Stück in Betrieb nehmen kannst? 
Das meiste Gedöns ist für die einfache Erkennung als Hub ja noch 
garnicht notwendig. Vielleicht ne Haarverbindung im Kupfer auf der 
Platine? Hast du mal auf Durchgang/Kurzschluss durchgepiept bis zum 
IC-Beinchen? Alle Signale direkt am IC-Pin gemesssen?
Nur so als Denkanstoß.

Ich hatte die Schaltung relativ schnell wieder abgestoßen, denn ich 
hatte mittlerweile schon wieder vergessen, wie lahm Full-Speed wirklich 
ist. Kaum zu ertragen. Wenn du mal einen performanten High-Speed Hub 
aufbauen willst, der zudem auch noch wesentlich einfacher in der 
Beschaltung ist, dann sei dir Terminus FE1.1 und FE2.1 empfohlen. Die 
gibt es auch als Lizenznachbau von Exar, XR22417 und XR22414.

von Thomas (Gast)


Lesenswert?

Vielleicht verstehe ich deine Pläne ja komplett falsch aber hast du 
nicht 2mal 1.5k an der D+ Leitung?
Einmal R27 und einmal R31. Das kann man mit dem Ohmmeter nachmessen.

Thomas

von Ludo S. (ludo916)


Lesenswert?

Thomas schrieb:
> Vielleicht verstehe ich deine Pläne ja komplett falsch aber hast du
> nicht 2mal 1.5k an der D+ Leitung?

Das hast du richtig gesehen. R31 gilt nicht und wurde mit R27 ersetzt. 
auf der Schaltung ist ja nur 1 pullup an der D+ Leitung.

Ich werde morgen/oder am Montag im E-Labor eure Tipps noch mal 
durchgehen und gebe euch dann eine Rückmeldung, ob es funktioniert hat 
oder nicht. Quarzfrequenz muss ich auch noch mal messen.

VG.

von Ludo S. (ludo916)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

erstmal vielen Dank für die bisherige Unterstützung. Mein System konnte 
unter windows erkennt werden. Unter Linux aber noch nicht.

Morgen werde ich noch weiter untersuchen, weil nun die Downstream port 
nicht funktionieren.

Unter windows zeigt das System usb 1.1 statt usb 2.0 wie ich erwatete. 
habe ich noch was falsches getan oder ist es auch richtig so? vielleicht 
funktioniert das später nicht richtig.

ich habe die Information aus windows angehängt.

VG

von Frank K. (fchk)


Lesenswert?

USB 1.1 ist korrekt so.

Deine Downstream-Ports funktionieren nicht, weil Du den falschen 
Powerswitch genommen hast. Das Schaltbild passt zum TPS2044B (Enables 
Low aktiv), nicht aber zum TPS2054B (Enables high aktiv). Siehe auch 
Figure 11 auf Seite 16 unten - da ist auch der TPS2044 verwendet.

fchk

von Ludo S. (ludo916)


Lesenswert?

Frank K. schrieb:
> USB 1.1 ist korrekt so.
>
> Deine Downstream-Ports funktionieren nicht, weil Du den falschen
> Powerswitch genommen hast. Das Schaltbild passt zum TPS2044B (Enables
> Low aktiv), nicht aber zum TPS2054B (Enables high aktiv). Siehe auch
> Figure 11 auf Seite 16 unten - da ist auch der TPS2044 verwendet.
>
> fchk

Frank K. schrieb:
> Deine Downstream-Ports funktionieren nicht, weil Du den falschen
> Powerswitch genommen hast. Das Schaltbild passt zum TPS2044B (Enables
> Low aktiv), nicht aber zum TPS2054B (Enables high aktiv). Siehe auch
> Figure 11 auf Seite 16 unten - da ist auch der TPS2044 verwendet.

Hi,

danke für deine Rückmeldung. das habe ich auch gemerkt. PWRon ist activ 
low und TPS2054 ist activ high. ich habe den TPS2054 statt TPS2044 
benutzt, weil Mouser den als (nicht für neue Design empfohlen) 
gekennzeichnet hat. Der wurde wahrscheinlich abgekündigt.

kennst du zufällig einen guten Bauteil mit dem ich die Pegel wandeln 
kann ??
Das würde ich gerne morgen noch testen.

VG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Vier Negatoren?

74xx04

von Ludo S. (ludo916)


Lesenswert?

Jörg W. schrieb:
> 74xx04

Danke
VG.

von Thomas (Gast)


Lesenswert?

Naja mit usb2 wird das nichts der 2046 ist ein reiner Fullspeed Hub 
usb1.1 ist also richtig. Wieso glaubst du das das Teil HiSpeed kann?
Merke Usb2 bedeutet nicht automatisch HiSpeed.

Thomas

von Frank K. (fchk)


Lesenswert?

Ludo S. schrieb:

> danke für deine Rückmeldung. das habe ich auch gemerkt. PWRon ist activ
> low und TPS2054 ist activ high. ich habe den TPS2054 statt TPS2044
> benutzt, weil Mouser den als (nicht für neue Design empfohlen)
> gekennzeichnet hat. Der wurde wahrscheinlich abgekündigt.

Bei TI steht der TPS2044B als active, wurde also nicht abgekündigt.

Ansonsten LM3544MX-L, ist praktisch das gleiche.

fchk

von Ludo S. (ludo916)


Angehängte Dateien:

Lesenswert?

Thomas schrieb:
> Naja mit usb2 wird das nichts der 2046 ist ein reiner Fullspeed Hub
> usb1.1 ist also richtig. Wieso glaubst du das das Teil HiSpeed kann?
> Merke Usb2 bedeutet nicht automatisch HiSpeed.

Vielen Dank. Da hast du recht.

Frank K. schrieb:
> Ansonsten LM3544MX-L, ist praktisch das gleiche.

Danke. Das habe ich eben in meiner Schaltung eingesetzt.

Danke für eure Unterstützungen

Das Gerät funktioniert jetzt unter Windows einwandfrei.
Unter Linux habe ich ein weiteres Problem und bin immer noch mit der 
Fehlersuche beschäftigt. siehe Abb.

Vielleicht hat einer mal eine Idee, was das seien könnte.

Danke & VG

Ludo S.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ludo S. schrieb:
> Unter Linux

Gleiche Hardware (Computer) wie Windows, oder eine andere?

Das sieht alles irgendwie nach Hardwarefehlern aus, nicht nach irgendwas 
mit dem OS selbst.

von Ludo S. (ludo916)


Lesenswert?

Jörg W. schrieb:
> Gleiche Hardware (Computer) wie Windows, oder eine andere?

Das ist eine andere Hardware. Die Schaltung ist die gleiche wie bei der 
Verwendung unter windows.

VG.

Jörg W. schrieb:
> Das sieht alles irgendwie nach Hardwarefehlern aus

Das denke ich auch und kann bisher den Fehler noch nicht finden

VG

von Jim M. (turboj)


Lesenswert?

Ludo S. schrieb:
> Das ist eine andere Hardware. Die Schaltung ist die gleiche wie bei der
> Verwendung unter windows.

Dann schau Dir z.B. mal mit 'nem DSO die USB Signale an. Denn da ist 
irgendwas grundlegendes kaputt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Häng mal spaßeshalber noch einen weiteren USB-Hub dazwischen.

von Thomas (Gast)


Lesenswert?

Für mich sieht es so aus als wenn die Überstromerkennung nicht 
funktioniert.
Löte mal das PortIc aus und stell sicher dass an CUR Eingängen ein 
Pullup hängt.
Die Downstream Ports gehen dann zwar nicht aber der Hub sollte korrekt 
erkannt werden.

Thomas

von Ludo S. (ludo916)


Lesenswert?

Thomas schrieb:
> Für mich sieht es so aus als wenn die Überstromerkennung nicht
> funktioniert.
> Löte mal das PortIc aus und stell sicher dass an CUR Eingängen ein
> Pullup hängt.

Da hängt einen 10k pullup auf 3V3. die Überstromerkennung sollte 
funktionieren.

DP und DM sind nicht miteinander verbunden. Wenn Das Modul aus ist habe 
ich 3v3 auf DP und ca 0V auf DM.
Wenn das Modul startet bekomme ich DP(0.9V) und DM(0.7V. So kann es 
nicht funktionieren.

von Thomas (Gast)


Lesenswert?

Nun ich bin mir sehr sicher dass was mit dem PortIc nicht stimmt. Also 
entweder auslösen oder das richtige Ic einlöten. Linux so wie auch OSX 
reagieren wesentlich empfindlicher auf fehlerhafte Devices. Windows 
enumeriert fast alles. Der Hub selbst ist wohl ok sonst würdest du unter 
win auch Fehler bekommen. Es muss also an den Downstreams liegen. 
Deshalb mein Vorschlag die Downstreams erst Mal zu deaktivieren.

Thomas

von Thomas (Gast)


Lesenswert?

Anderer Vorschlag:
Da ja Win und Linux unterschiedliche Maschinen sind würde spaßeshalber 
mal ein Ubuntu auf der Windows Machine booten und schauen ob lsusb 
deinen Hub findet. Vielleicht hast du ja auch den USB Port auf der Linux 
Maschine gegrillt.

Thomas

von Ludo S. (ludo916)


Lesenswert?

Danke für deine beiden Vorschläge. Das werde ich morgen mal ausprobieren 
und sehen, was daraus kommt.


Thomas schrieb:
> Nun ich bin mir sehr sicher dass was mit dem PortIc nicht stimmt

Eigentlich ist der PortIc nicht direkt mit dem Host (Linux) verbunden. 
Sondern an den Hub. Oder wirkt sich eine fehlerhafte Funktion auf den 
Hub bzw. den Upstream?

Thomas schrieb:
> Es muss also an den Downstreams liegen.

Bisher hatte ich noch kein device an dem Downstream port dran.

Heute habe ich mal den Hub im Betrieb gehalten und das Modul (Linux) aus 
und wieder eingeschaltet. Ich bekam regelmäßig so eine Fehlermeldung:
usb usb1-port1: Cannot enable. Maybe the USB cable is bad?

Aber wenn beide gleichzeitig starten oder das Modul zuerst wird den Hub 
nicht enummeriert.

VG

von Thomas (Gast)


Lesenswert?

Ich hab das nicht mehr so genau parat was Linux so alles beim 
enumerieren anstellt. Es ist bei mir schon 16 Jahre her als ich die 
Schaltung entworfen habe. Die Enumerierung unterscheidet sich aber 
grundlegend zwischen Win und Linux. Ich habe damals sogar Funktionen in 
meiner FW eingebaut, die unterschieden haben ob mein Device unter Win 
oder Linux/OSX arbeitet. Die Win OS Descriptior Requests gab es ja m.W. 
erst ab Vista.
Generell würde ich auch mal checken ob die Downstream Ports keine 
Schlüsse haben. Das kann an den Überspannungsschutz ICs ganz leicht 
passieren. An allen Downstream Datenleitungen musst du die 15k 
nachweisen können. Jede Abweichung deutet auf Fehler hin.
Zusätzlich kannst du mal messen ob VUsb auch an den Downstreams ankommt 
sprich ob die Ports enabled werden. Erst dann würde ich das Port Ic Mal 
runternehmen.

Thomas

von Ludo S. (ludo916)


Lesenswert?

Thomas schrieb:
> An allen Downstream Datenleitungen musst du die 15k
> nachweisen können.

Da habe genau die 15k.

Thomas schrieb:
> Zusätzlich kannst du mal messen ob VUsb auch an den Downstreams ankommt
> sprich ob die Ports enabled werden.

Ja die werden aktiv.

Was ist den mit den Serien widerstände an den Upstream leitungen (2x 22R 
oder 2x27R)
Müssen da auch unbedingt 2x 15k auf GND und (2x 22pF oder 2x 27pF) an 
GND sein ?

von Thomas (Gast)


Lesenswert?

Der Upstreamport Port bekommt die Serienwiderstände aber NICHT die 15k 
diese sind ja schon im Downstream des Hosts verbaut. Die Cs habe bei mir 
nicht verbaut aber vorgesehen.

Thomas

von Ludo S. (ludo916)


Lesenswert?

Hallo Zusammen,

noch mal vielen Dank für eure Unterstützung und eure Beiträge. heute 
habe ich meine Schaltung mit Linux im Laufen bekommen.
Es lag mehr auf der Host-Seite. Die OC-Leitung vom Host wurde auf der 
Leiterplatte nicht richtig gemacht deswegen, war der pin die ganze Zeit 
aktiv (activ low) und der Host reagierte nicht auf den Hub.

Die habe ich überbrückt und nun funktioniert den Hub richtig.

Thomas schrieb:
> Der Upstreamport Port bekommt die Serienwiderstände aber NICHT die 15k

Ich hatte vorher einfach so zwei 15k von D+ und D- auf GND geschaltet, 
und es ja trotzdem funktioniert. Es hat mich ja auch gewundert. Die habe 
ich nachher noch mal entfernt.

VG

von Michael Ganzera (Gast)


Lesenswert?

Der TUSB2046 hat ein Reste Problem wenn man ihn laut Datenblatt 
geschaltet 10k pull up an reset gg 3v3. Hier funktionieren bei mir 
30-40% der ICS nicht korrekt. Keine Erkennung des HUBs. Scheint dass die 
interne State machine hier nicht die richtigen settings lädt. Abhilfe 
bringt ein zusätzlicher 1uF gg GND.
Damit funktioniert das reset timing und alle nicht funktionalen PCBs 
konnten so zum Arbeiten gebracht werden. H

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.