Ist es in Ordnung, bei einem USB-Kabel die Drähte D + und D- auszutauschen?

54

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?

Yan König Yin
quelle
Interessante Frage ... Gültig für alle gültigen Differenzprotokolle .. wie CAN!
Swanand

Antworten:

58

Zusammenfassung

Beim Betreten und Verlassen des Ruhezustands ist die Polarität wichtig, und das Vertauschen der D + - und D- -Leitungen führt zu Problemen.

Datenübertragung

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.

Beenden des Ruhezustands

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.

In den Ruhezustand wechseln

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.

Bildbeschreibung hier eingeben

Fazit

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.

Quelle: Wikipedia

Edit: Danke an diejenigen, die kommentiert haben. Ich habe Betonung und Details aus Ihren hilfreichen Anmerkungen hinzugefügt.

Travisbartley
quelle
2
Es ist zu beachten, dass der Host die niedrige / volle Geschwindigkeit unterscheidet, um welche Linie sie gezogen haben. Wenn Sie die D + / D- Leitungen vertauschen, kommuniziert das Gerät nicht einmal mit der gleichen Geschwindigkeit wie der Host. Während die Daten NRZI-codiert sind, werden die Synchronisationssequenz und der EoP in Bezug auf J / K / SE0 definiert und werden bei Inversion falsch.
Avakar
2
Ich kann aus Erfahrung sagen, dass das Vertauschen von D + / D- zu einer nicht funktionierenden USB-Schnittstelle führt. Ich musste einige Prototypen überarbeiten, in die ein USB-Hub eingebaut war. Nicht so viel Spaß.
Akohlsmith
@avakar Vielen Dank für die Details. Ich denke, die Antwort hat das meiste davon kurz behandelt, aber ich werde versuchen, mehr Details hinzuzufügen, damit es klarer wird.
Travisbartley
@ Andrew Kohlsmith Es ist eine nützliche Information. Wenn Sie sich erinnern können, habe ich einige Fragen an Sie. Hatte das Gerät oder der Hub den Stiftwechsel? Wie hat sich der Fehler manifestiert? Wurde das Gerät beim Anschließen nicht erkannt oder als fehlerhaft eingestuft? Wie haben Sie das Problem diagnostiziert? Alle Details würden helfen, ich werde versuchen, Ihre Informationen zur Antwort hinzuzufügen.
Travisbartley
2
@ trav1s Ich hatte das D + / D- auf der Nabenseite getauscht. Das Problem zeigte sich darin, dass das Gerät nicht angezeigt wurde. Der USB-Stick zeigte an, dass er mit Strom versorgt wurde, wurde jedoch vom Computer auf der Upstream-Seite des Hubs (der ordnungsgemäß mit dem Host verbunden war) überhaupt nicht erkannt. Diagnose Es ist mir peinlich, darüber zu schreiben. Ich habe viel Zeit damit verbracht zu denken, dass es sich um ein Problem mit der Hub-Konfiguration / Software handelt. Am Ende habe ich die Drähte verfolgt, aber ich habe es zuletzt getan, weil ich davon überzeugt war, dass USB wie Ethernet ist und die Stifte automatisch austauschen kann. Ich lag falsch. :-)
Akohlsmith
1

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.

Dean Franks
quelle
2
Das bestätigt, was @ trav1s über USB 1.x gesagt hat.
Vaibhav Garg