Resumen
Cuando se entra y sale del estado inactivo, la polaridad es importante y intercambiar las líneas D+ y D- causará problemas.
Transmisión de Datos
Los datos USB están codificados en NRZ de tal manera que "Uno" se representa por ningún cambio en el nivel físico, y "Cero" se representa por un cambio en el nivel físico (ver figura abajo). Por lo tanto, invertir la señal (por ejemplo, intercambiando D+ y D-) no resulta en un 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.
Saliendo del Estado Inactivo
El host incluye resistencias de pull-down de 15 kΩ en cada línea de datos. Cuando no hay ningún dispositivo conectado, esto hace que ambas líneas de datos se mantengan en bajo en el estado llamado "cero de un solo extremo" (SE0 en la documentación de USB), e indica un reinicio o conexión desconectada. Un dispositivo USB lleva una de las líneas de datos a alto con una resistencia de 1.5 kΩ. Esto supera una de las resistencias de pull-down en el host y deja las líneas de datos en un estado inactivo llamado "J". Para USB 1.x, la elección de línea de datos indica a qué velocidades de señal es capaz el dispositivo; los dispositivos de banda ancha total llevan D+ a alto, mientras que los dispositivos de banda ancha baja llevan D- a alto.
Mientras los datos están codificados en NRZI, la secuencia de sincronización y EoP están definidas en términos de estados fijos (J/K/SE0). Cuando D+ y D- se intercambian, el estado J se intercambia con K y SE0 sigue siendo SE0 (ambas líneas bajan). Por lo tanto, la secuencia de sincronización y EoP se vuelve incorrecta en la inversión. En USB 1.x, si D+ y D- se intercambian, un dispositivo de banda ancha total es reconocido como de banda ancha baja y viceversa. Por lo tanto, el dispositivo no comunicará a la misma velocidad que el host.
Entrando en el Estado Inactivo
El final de un paquete USB, llamado EOP (final de paquete), se indica cuando el transmisor lleva a SE0 por 2 tiempos de bit (D+ y D- ambos por debajo del máximo) y 1 tiempo de bit de estado J. Después de esto, el transmisor deja de llevar las líneas D+/D- y las resistencias de pull-up mencionadas las mantienen en el estado J (inactivo).
Con un controlador de D+/D- intercambiado, el host verá la secuencia (SE0, SE0, K) en lugar de la correcta (SE0, SE0, J). Entonces, el host podría no reconocer el final del paquete, lo que causaría problemas.
Conclusión
Si el dispositivo y el host cumplen estrictamente con las especificaciones de USB, intercambiar los pines D+ y D- resultará en un fallo. Es posible que el diseñador del host haya previsto un modo de falla como este, y haya incorporado compatibilidad para ello. Sin embargo, independientemente de si un cable intercambiado sería funcional en la práctica, ciertamente no cumpliría con las especificaciones.
Otro miembro, Andrew Kohlsmith, experimentó esto cuando los pines de un concentrador USB fueron intercambiados accidentalmente. El problema se manifestó en que los dispositivos conectados no aparecían. El dispositivo USB mostraba que estaba alimentado pero no era reconocido en absoluto por la computadora en el lado ascendente del concentrador (que estaba cableado correctamente al host).
Fuente: wikipedia
Editar: gracias a aquellos que comentaron. He añadido énfasis y detalles de sus notas útiles.
0 votos
Pregunta interesante... Válido para todos los protocolos diferenciales válidos... como CAN!