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
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?
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
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.
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
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
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.
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
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.
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.
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
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.
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
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.
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
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:> 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.>> fchkFrank 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
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
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
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.
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.
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
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.
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
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.
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
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
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
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
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 ?
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
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
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
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