Ich habe gehört, dass D + und D- Differenzsignale sind. Ist es wichtig, wenn ich sie beim Anschließen eines USB-Geräts an den Computer austausche?
Ich habe gehört, dass D + und D- Differenzsignale sind. Ist es wichtig, wenn ich sie beim Anschließen eines USB-Geräts an den Computer austausche?
Antworten:
Beim Betreten und Verlassen des Ruhezustands ist die Polarität wichtig, und das Vertauschen der D + - und D- -Leitungen führt zu Problemen.
USB-Daten sind NRZ-codiert , sodass "Eins" durch keine Änderung des physischen Pegels und "Null" durch eine Änderung des physischen Pegels dargestellt wird (siehe Abbildung unten). Daher führt das Invertieren des Signals (zum Beispiel durch Vertauschen von D + und D-) zu keiner Funktionsänderung während der Datenübertragung. Vor und nach der Datenübertragung können jedoch Probleme auftreten, die die Kommunikation mit dem Gerät beeinträchtigen können.
Der Host enthält 15 kΩ Pulldown-Widerstände auf jeder Datenleitung. Wenn kein Gerät angeschlossen ist, werden beide Datenleitungen in den sogenannten "single-ended zero" -Zustand (SE0 in der USB-Dokumentation) versetzt und es wird ein Reset oder eine getrennte Verbindung angezeigt. Ein USB-Gerät zieht eine der Datenleitungen mit einem Widerstand von 1,5 kΩ hoch. Dadurch wird einer der Pulldown-Widerstände im Host übersteuert und die Datenleitungen werden in einem Ruhezustand mit der Bezeichnung "J" belassen. Bei USB 1.x gibt die Auswahl der Datenleitung an, welche Signalraten das Gerät unterstützen kann. Geräte mit voller Bandbreite ziehen D + hoch, während Geräte mit niedriger Bandbreite D - hoch ziehen.
Während die Daten NRZI-codiert sind, werden die Synchronisationssequenz und der EoP als feste Zustände (J / K / SE0) definiert. Wenn D + und D- geschaltet sind, wird der J-Zustand mit K geschaltet und SE0 ist immer noch SE0 (beide Leitungen sind niedrig). So werden die Synchronisationssequenz und der EoP bei der Inversion falsch. Wenn in USB 1.x D + und D- vertauscht werden, werden Geräte mit voller Bandbreite als Geräte mit geringer Bandbreite erkannt und umgekehrt. Das Gerät kommuniziert also nicht einmal mit der gleichen Geschwindigkeit wie der Host.
Das Ende eines USB-Pakets, EOP (End-of-Packet) genannt, wird durch den Sender angezeigt, der 2 Bit-Zeiten von SE0 (D + und D– beide unter max) und 1 Bit-Zeit von J-Zustand treibt. Danach hört der Sender auf, die D + / D– -Leitungen anzusteuern, und die oben erwähnten Pull-up-Widerstände halten ihn im J-Zustand (Leerlauf).
Bei einem D + / D- vertauschten Treiber sieht der Host die Sequenz (SE0, SE0, K) anstelle der richtigen (SE0, SE0, J). Der Host erkennt dann möglicherweise nicht das Ende des Pakets, was zu Problemen führen würde.
Wenn sich das Gerät und der Host strikt an die USB-Spezifikationen halten, führt das Vertauschen der D + - und D- -Pins zu einem Fehler. Es ist vorstellbar, dass der Designer des Hosts einen solchen Fehlermodus vorausgesehen und die Kompatibilität dafür eingebaut hat. Aber ob ein solches ausgetauschtes Kabel in der Praxis funktionsfähig wäre oder nicht, würde es sicherlich nicht den Spezifikationen entsprechen.
Ein anderes Mitglied, Andrew Kohlsmith, erlebte dies, als versehentlich die Stifte eines USB-Hubs vertauscht wurden. Das Problem äußerte sich darin, dass verbundene Geräte nicht angezeigt wurden. Das USB-Gerät würde anzeigen, dass es mit Strom versorgt wurde, dies wurde jedoch vom Computer auf der Upstream-Seite des Hubs (der ordnungsgemäß mit dem Host verbunden war) überhaupt nicht erkannt.
Edit: Danke an diejenigen, die kommentiert haben. Ich habe Betonung und Details aus Ihren hilfreichen Anmerkungen hinzugefügt.
Ich habe gesehen, dass Geräte nur dann mit niedriger Geschwindigkeit verhandeln, wenn d + und d- vertauscht wurden. Dies geschah mit einem Gerät mit voller Geschwindigkeit (12 MBit / s) und einem VIA-Chipsatz-basierten Port.