57 votos

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

He escuchado que D+ y D- son señales diferenciales, ¿importa si los intercambio al conectar un dispositivo USB a la computadora?

0 votos

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

61voto

djpercent Puntos 86

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.

introduzca aquí la descripción de la imagen

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.

3 votos

Cabe destacar que el anfitrión diferencia la velocidad baja/completa por la línea que han tirado hacia arriba. Si intercambias las líneas D+/D-, el dispositivo ni siquiera se comunicará a la misma velocidad que el anfitrión. Además, mientras los datos están codificados en NRZI, la secuencia de sincronización y EoP están definidas en términos de J/K/SE0 y serán incorrectas al invertirse.

2 votos

Puedo hablar desde la experiencia que intercambiar D+/D- resulta en una interfaz USB no funcional. Tuve que trabajar de nuevo en algunos prototipos que tenían un concentrador USB incorporado en ellos. No fue tan divertido.

0 votos

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

1voto

guest101 Puntos 21

He visto dispositivos negociar solo a baja velocidad cuando d+ y d- están intercambiados. Esto fue con un dispositivo de velocidad completa (12mbps) y un puerto basado en chipset VIA.

2 votos

Eso corrobora lo que dijo @trav1s sobre USB 1.x.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X