Est-il possible d’échanger les câbles D + et D- avec un câble USB?

54

J'ai entendu dire que D + et D- sont des signaux différentiels. Est-ce important si je les échange lorsque je connecte un périphérique USB à l'ordinateur?

Yan King Yin
la source
Question intéressante ... Valable pour tous les protocoles différentiels valides ... comme CAN!
Swanand

Réponses:

58

Sommaire

Lorsque vous entrez et sortez de l'état inactif, la polarité est importante et permuter les lignes D + et D- posera des problèmes.

Transmission de données

Les données USB sont codées NRZ de telle sorte que "One" ne représente aucun changement de niveau physique et que "Zero" soit représenté par un changement de niveau physique (voir la figure ci-dessous). Par conséquent, l'inversion du signal (par exemple, en permutant D + et D-) n'entraîne aucune modification fonctionnelle lors de la transmission des données. Mais il peut y avoir des problèmes avant et après la transmission des données qui peuvent tuer la communication avec le périphérique.

Quitter l'état d'inactivité

L'hôte comprend des résistances de 15 kΩ sur chaque ligne de données. Lorsqu'aucun périphérique n'est connecté, cela place les deux lignes de données à l'état bas, dans l'état dit "zéro asymétrique" (SE0 dans la documentation USB), et indique une connexion réinitialisée ou déconnectée. Un périphérique USB tire sur l’une des lignes de données avec une résistance de 1,5 kΩ. Ceci surpasse l'une des résistances de l'hôte et laisse les lignes de données dans un état inactif appelé "J". Pour USB 1.x, le choix de la ligne de données indique le taux de signal auquel le périphérique est capable. Les périphériques à bande passante totale tirent D + élevé, tandis que les périphériques à bande passante étroite tirent D-élevé.

Bien que les données soient codées en NRZI, la séquence de synchronisation et l'EoP sont définis en termes d'états fixes (J / K / SE0). Lorsque D + et D- sont commutés, l'état J est commuté avec K et SE0 est toujours SE0 (les deux lignes sont basses). Ainsi, la séquence de synchronisation et l'EoP deviendront incorrects lors de l'inversion. Sous USB 1.x, si D + et D- sont échangés, les périphériques à bande passante complète sont reconnus comme bande passante étroite et inversement. Ainsi, l'appareil ne communiquera même pas à la même vitesse que l'hôte.

Entrer en veille

La fin d'un paquet USB, appelée EOP (fin de paquet), est indiquée par l'émetteur qui commande les temps de 2 bits SE0 (D + et D− inférieurs à max) et le temps de 1 bit de l'état J. Après cela, l’émetteur cesse de commander les lignes D + / D- et les résistances de rappel susmentionnées le maintiennent à l’état J (inactif).

Avec un pilote échangé D + / D-, l'hôte verra la séquence (SE0, SE0, K) au lieu de la séquence correcte (SE0, SE0, J). L’hôte pourrait alors ne pas reconnaître la fin du paquet, ce qui poserait des problèmes.

entrez la description de l'image ici

Conclusion

Si le périphérique et l'hôte se conforment strictement aux spécifications USB, le remplacement des broches D + et D- entraînera une défaillance. Il est concevable que le concepteur de l'hôte ait prévu un tel mode de défaillance et y ait intégré une compatibilité. Mais si un tel câble échangé serait fonctionnel dans la pratique, il ne respecterait certainement pas les spécifications.

Un autre membre, Andrew Kohlsmith, a vécu cette situation lorsque les broches d’un concentrateur USB ont été échangées accidentellement. Le problème s'est manifesté en tant qu'appareils connectés ne se présentant pas. Le périphérique USB indiquerait qu'il était alimenté, mais l'ordinateur situé du côté en amont du concentrateur ne le reconnaissait pas du tout (ce qui était correctement câblé à l'hôte).

Source: wikipedia

Edit: merci à ceux qui ont commenté. J'ai ajouté l'accent et les détails de vos notes utiles.

Travisbartley
la source
2
Il convient de noter que l'hôte différencie la vitesse minimale / maximale de la ligne. Si vous permutez les lignes D + / D-, le périphérique ne communiquera même pas à la même vitesse que l'hôte. De plus, alors que les données sont codées NRZI, la séquence de synchronisation et l’EoP sont définis en termes de J / K / SE0 et deviendront incorrects lors de l’inversion.
avril
2
Je peux parler d'expérience que permuter D + / D- se traduit par une interface USB non fonctionnelle. J'ai dû retravailler certains prototypes dotés d'un concentrateur USB intégré. Pas tellement amusant.
akohlsmith
@avakar Merci pour les détails. Je pense que la réponse a couvert la majeure partie de cela brièvement, mais je vais essayer d'ajouter plus de détails afin que ce soit plus clair.
Travisbartley
@ Andrew Kohlsmith C'est une information utile. Si vous vous en souvenez, j'ai quelques questions à vous poser. Est-ce que le périphérique ou le hub a eu le brochage? Comment l'erreur s'est-elle manifestée? Lorsque vous avez connecté l'appareil, n'a-t-il pas reconnu ou reconnu son dysfonctionnement? Comment avez-vous diagnostiqué le problème? Tous les détails aideraient, je vais essayer d'ajouter vos informations à la réponse.
Travisbartley
2
@ trav1s j'avais échangé le D + / D- du côté du moyeu. Le problème s'est manifesté par le fait que l'appareil ne se présentait pas. La clé USB indiquerait qu’elle était alimentée, mais elle n’était pas du tout reconnue par l’ordinateur situé en amont du concentrateur (qui était correctement câblé à l’hôte). Diagnostic Je suis gêné d’écrire, j’ai passé beaucoup de temps à penser que c’était un problème de configuration / logiciel du hub. À la fin, j’ai tracé les câbles mais j’ai fait le test en dernier parce que j’étais convaincu que l’USB ressemblait à Ethernet et pouvait échanger automatiquement les broches. J'avais tort. :-)
akohlsmith
1

J'ai vu des appareils négocier à basse vitesse uniquement lorsque d + et d- sont échangés. C'était avec un périphérique à pleine vitesse (12 Mbps) et un port basé sur un chipset VIA.

Dean Franks
la source
2
Cela corrobore ce que @ trav1s a dit à propos de USB 1.x.
Vaibhav Garg