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

48

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

    
pregunta Yan King Yin

2 respuestas

53

Resumen

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

Transmisión de datos

Los datos USB son codificado NRZ de manera que "One" está representado por no cambio en el nivel físico, y "Cero" se representa por un cambio en el nivel físico (vea la figura a continuación). Por lo tanto, invertir la señal (por ejemplo, al intercambiar D + y D-) no produce cambios funcionales 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 desplegables de 15 kΩ en cada línea de datos. Cuando no   El dispositivo está conectado, esto hace que ambas líneas de datos queden bajas en el llamado   estado de "cero único" (SE0 en la documentación del USB), y   Indica una conexión restablecida o desconectada. Un dispositivo USB tira de uno   de las líneas de datos altas con una resistencia de 1,5 kΩ. Esto supera a uno de   las resistencias de bajada en el host y deja las líneas de datos en una   estado inactivo llamado "j". Para USB 1.x, la elección de la línea de datos indica   de qué velocidades de señal es capaz el dispositivo; dispositivos de ancho de banda completo   tire D + alto, mientras que los dispositivos de bajo ancho de banda tiran D− alto.

Mientras que los datos están codificados en NRZI, la secuencia de sincronización y la 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). Así que la secuencia de sincronización y la 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), se indica mediante   el transmisor controla 2 bits de SE0 (D + y D- ambos por debajo del máximo) y   Tiempo de 1 bit del estado J. Después de esto, el transmisor deja de conducir el   Las líneas D + / D y las resistencias pull up antes mencionadas lo mantienen en la J   estado (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 puede entonces no reconocer el final del paquete, lo que podría causar problemas.

Conclusión

SieldispositivoyelhostcumplenestrictamenteconlasespecificacionesdeUSB,elcambiodelospinesD+yD-darácomoresultadounfallo.Esconcebiblequeeldiseñadordelhosthayaprevistounmododefallodeestetipoyhayaincorporadocompatibilidadparaél.Perosidichocableintercambiadofuncionaríaonoenlapráctica,ciertamentenoseajustaríaalasespecificaciones.

Otromiembro,AndrewKohlsmith,experimentóestocuandoseintercambiaronaccidentalmentelospinesdeunconcentradorUSB.Elproblemasemanifestócomodispositivosconectadosquenoaparecen.EldispositivoUSBmostraríaqueestabaencendido,perolacomputadoranoloreconocióenabsolutoenlapartesuperiordelconcentrador(queseconectócorrectamentealhost).

Fuente: wikipedia

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

    
respondido por el travisbartley
2

He visto que los dispositivos negocian como baja velocidad solo cuando d + y d- están intercambiados. Esto fue con un dispositivo de velocidad completa (12 Mbps) y un puerto basado en chipset VIA.

    
respondido por el Dean Franks

Lea otras preguntas en las etiquetas