Estoy tratando de proporcionar una fuente de alimentación externa de 5 V a un concentrador USB (anteriormente) alimentado por bus.
Mi primer intento fue simplemente conectar los pines de datos del host USB a los pines de datos del concentrador y los 5 V externos a los pines de alimentación del concentrador, así:
PSU 5V ----- Hub VCC In
PSU GND ----- Hub GND In
Host D+ ----- Hub D+
Host D- ----- Hub D-
Sin embargo, el concentrador (y los dispositivos conectados) no fueron detectados por la PC host. Mi suposición era que como Host GND y Hub GND ya no estaban conectados, los niveles estaban apagados, así que agregué esa conexión:
PSU 5V ----- Hub VCC In
PSU GND ---=- Hub GND In
Host GND--/
Host D+ ----- Hub D+
Host D- ----- Hub D-
Todavía no hay suerte. Luego leí que un host USB espera que un dispositivo consuma alrededor de 100 mA para que sea detectado, por lo que suponiendo que el host generaría 5 V, agregué 50 R de resistencia entre él y el GND del host para que siempre se extraigan 100 mA:
PSU 5V ------ Hub VCC In
PSU GND ----=- Hub GND In
Host GND -=/
|
50R
|
Host 5V -/
Host D+ ----- Hub D+
Host D- ----- Hub D-
En esta configuración, con la PC anfitriona y la fuente de alimentación encendidas, mido 70 mV en la resistencia y resistencia cero. Cuando desconecto el cable USB del host, mido el 50R correctamente.
¿Me estoy perdiendo de algo? ¿Por qué el host USB no detectaría el concentrador y por qué parecería acortar sus propios pines de 5V y GND?
Nota: he leído esta pregunta , en la que las respuestas sugieren que solo conectar las líneas de tierra sería suficiente, y esta , que confirma mi creencia de que está bien que el concentrador USB solo consuma 100 mA y no negocie sus requisitos actuales.
USB no tiene Tx y Rx, tiene D+ y D-. Estos deben estar conectados por nombre (por lo que D+ a D+ y D- a D-)
Si los conectó al revés, es posible que el host apague el puerto para evitar daños. De todos modos, no debería necesitar una resistencia de Vcc a GND, el host no necesita tener 100 mA dibujados para detectar un dispositivo, lo detecta con un menú desplegable de una de las líneas de datos)
Si el concentrador tiene un suministro separado, solo necesita conectar las líneas de tierra; no desea conectar Vcc juntos. Obviamente, si no es así, necesita alimentarlo desde el suministro del host (es decir, conecte ambos)
Cualquier dispositivo USB que se conecta a una computadora le informa a la computadora sobre sus requisitos de energía y, en general, el HUB USB está alimentado por bus. Esto está programado en el firmware. Después de conectarse a la computadora host, los flujos de flujo de datos largos apuestan por hub & host. Solo después de que se intercambie la información adecuada entre los dos, el anfitrión reconoce el concentrador. Así que creo que será difícil cambiar la situación simplemente cambiando las conexiones.
Luego leí que un host USB espera que un dispositivo consuma alrededor de 100 mA para que sea detectado
Simplemente mal. Un dispositivo puede consumir hasta 100 mA sin avisar al host. Un concentrador autoalimentado no debería consumir casi nada del puerto host (ascendente).
una fuente de alimentación externa de 5 V a un concentrador USB (anteriormente) alimentado por bus
El concentrador aún le dirá al host (Windows) que está alimentado por bus. Por lo tanto, el host lo apagará una vez que la suma de los dispositivos conectados (incluido el concentrador) supere los 500 mA.
Realmente deberías usar un Hub autoalimentado.
Ian Renton