En un cable USB, ¿está bien intercambiar los cables D + y D-?


54

Escuché que D + y D- son señales diferenciales, ¿importa si las cambio al conectar un dispositivo USB a la computadora?


Pregunta interesante ... Válido para todos los protocolos diferenciales válidos ... como CAN!
Swanand

Respuestas:


58

Resumen

Al entrar y salir del estado inactivo, la polaridad es importante y el intercambio de las líneas D + y D- causará problemas.

Transmisión de datos

Los datos del USB están codificados con NRZ de modo que "Uno" está representado por ningún cambio en el nivel físico, y "Cero" está representado por un cambio en el nivel físico (vea la figura a continuación). Por lo tanto, invertir la señal (por ejemplo, intercambiando D + y D-) no produce ningún cambio funcional durante la transmisión de datos. Pero puede haber problemas antes y después de la transmisión de datos que pueden interrumpir la comunicación con el dispositivo.

Salir del estado inactivo

El host incluye resistencias pull-down de 15 kΩ en cada línea de datos. Cuando no hay ningún dispositivo conectado, esto arrastra ambas líneas de datos al estado denominado "cero de un solo extremo" (SE0 en la documentación del USB) e indica un restablecimiento o una conexión desconectada. Un dispositivo USB eleva una de las líneas de datos con una resistencia de 1.5 kΩ. Esto domina una de las resistencias desplegables en el host y deja las líneas de datos en un estado inactivo llamado "J". Para USB 1.x, la elección de la línea de datos indica de qué velocidad de señal es capaz el dispositivo; los dispositivos de ancho de banda completo extraen D + alto, mientras que los dispositivos de ancho de banda bajo extraen D-alto.

Mientras los datos están codificados con NRZI, la secuencia de sincronización y EoP se definen en términos de estados fijos (J / K / SE0). Cuando D + y D- se cambian, el estado J se cambia con K y SE0 sigue siendo SE0 (ambas líneas bajas). Entonces la secuencia de sincronización y EoP se volverán incorrectas en la inversión. En USB 1.x, si se intercambian D + y D-, los dispositivos de ancho de banda completo se reconocen como de ancho de banda bajo y viceversa. Por lo tanto, el dispositivo ni siquiera se comunicará a la misma velocidad que el host.

Entrando en estado inactivo

El final de un paquete USB, llamado EOP (fin de paquete), está indicado por el transmisor que maneja 2 bits de SE0 (D + y D− ambos por debajo del máximo) y 1 bit de tiempo del estado J. Después de esto, el transmisor deja de conducir las líneas D + / D− y las resistencias pull up mencionadas anteriormente lo mantienen en el estado J (inactivo).

Con un controlador intercambiado D + / D-, el host verá la secuencia (SE0, SE0, K) en lugar de la correcta (SE0, SE0, J). El host podría no reconocer el final del paquete, lo que causaría problemas.

ingrese la descripción de la imagen aquí

Conclusión

Si el dispositivo y el host se adhieren estrictamente a las especificaciones USB, el intercambio de los pines D + y D- resultará en una falla. Es concebible que el diseñador del host haya previsto un modo de falla de este tipo y haya incorporado compatibilidad para él. Pero si dicho cable intercambiado sería funcional o no en la práctica, ciertamente no se adheriría a las especificaciones.

Otro miembro, Andrew Kohlsmith, experimentó esto cuando los pines de un concentrador USB fueron intercambiados accidentalmente. El problema se manifestó cuando los dispositivos conectados no aparecían. El dispositivo USB mostraría que estaba alimentado, pero la computadora no lo reconoció en absoluto en el lado aguas arriba del concentrador (que estaba conectado correctamente al host).

Fuente: Wikipedia

Editar: gracias a quienes comentaron. Agregué énfasis y detalles de sus útiles notas.


2
Cabe señalar que el host diferencia la velocidad baja / total por la cual la línea se ha detenido. Si intercambia las líneas D + / D-, el dispositivo ni siquiera se comunicará a la misma velocidad que el host. Además, mientras los datos están codificados con NRZI, la secuencia de sincronización y EoP se definen en términos de J / K / SE0 y se volverán incorrectos en la inversión.
avakar

2
Puedo hablar por experiencia de que intercambiar D + / D- da como resultado una interfaz USB no funcional. Tuve que reelaborar algunos prototipos que tenían un concentrador USB incorporado. No es muy divertido
akohlsmith

@avakar Gracias por los detalles. Creo que la respuesta cubrió la mayor parte de eso brevemente, pero intentaré agregar más detalles para que quede más claro.
travisbartley

@ Andrew Kohlsmith Es información útil. Si puedes recordar, tengo algunas preguntas para ti. ¿El dispositivo o el concentrador tenían el intercambio de clavijas? ¿Cómo se manifestó el error? Cuando conectó el dispositivo, ¿no fue reconocido o reconocido como un mal funcionamiento? ¿Cómo diagnosticaste el problema? Cualquier detalle ayudaría, intentaré agregar su información a la respuesta.
travisbartley

2
@ trav1s Cambié el D + / D- en el lado del cubo. El problema se manifestó cuando el dispositivo no apareció. La llave USB mostraría que estaba alimentada pero no fue reconocida en absoluto por la computadora en el lado aguas arriba del concentrador (que estaba conectado correctamente al host). Diagnóstico sobre el que me da vergüenza escribir, pasé mucho tiempo pensando que era un problema de configuración / software del concentrador. Al final, rastreé los cables, pero lo hice al final porque estaba convencido de que USB era como ethernet y podía intercambiar automáticamente los pines. Estaba equivocado. :-)
akohlsmith

1

He visto dispositivos negociar como baja velocidad solo cuando d + y d- se intercambian. Esto fue con un dispositivo de velocidad completa (12mbps) y un puerto basado en el chipset VIA.


2
Eso corrobora lo que @ trav1s dijo sobre USB 1.x.
Vaibhav Garg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.