Escuché que D + y D- son señales diferenciales, ¿importa si las cambio al conectar un dispositivo USB a la computadora?
Escuché que D + y D- son señales diferenciales, ¿importa si las cambio al conectar un dispositivo USB a la computadora?
Respuestas:
Al entrar y salir del estado inactivo, la polaridad es importante y el intercambio de las líneas D + y D- causará problemas.
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.
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.
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.
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).
Editar: gracias a quienes comentaron. Agregué énfasis y detalles de sus útiles notas.
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.