¿Un dispositivo USB autoalimentado tiene que conectarse a VCC desde el puerto host?

16

Un periférico USB autoalimentado proporciona su propia potencia, por lo que está bien conectar solo D +, D- y GND al puerto del host, o siempre tiene que conectar también + 5V, luego esperar la fase de negociación para el dispositivo para decirle al host que es autoalimentado y que, por lo tanto, no necesita energía, ¿muchas gracias?

El periférico específico que estoy viendo se basa en un adaptador USB a serie FTDI FT4232H, pero realmente espero una respuesta genérica a la pregunta.

kbro
fuente
1
FTDI tiene muchas notas de aplicaciones e información sobre esto en sus hojas de datos. ¿Echaste un vistazo allí?
Gustavo Litovsky
La hoja de datos de FTDI ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf muestra VBUS conectado a RESET # a través de un puente de resistencia, de modo que (presumiblemente) desconectar el cable USB hace que el dispositivo se reinicie (si estaba alimentado por bus, entonces ¡Obviamente, desenchufar el cable USB desconectaría completamente el dispositivo!). Pero la pregunta es, ¿la carga en VBUS significa algo para el host USB, y la falta de carga al dejar VBUS n / c rompe algo en el protocolo de enlace USB?
kbro
USB generalmente no tiene idea de si hay algo conectado. A menos que extraiga más de 100 mA, no puede saber si hay algo conectado.
Gustavo Litovsky
@GustavoLitovsky, en realidad, los hosts USB no tienen ningún medio para discriminar entre ninguna corriente o corriente de 100 mA extraída de su puerto. El único medio definido en las especificaciones de USB es cuando ocurre una sobrecorriente, que está muy por encima de 500 o 900 mA. Sin embargo, todo se puede diseñar utilizando circuitos adicionales y pines GPIO adicionales.
Ale..chenski

Respuestas:

6

La respuesta genérica a esta pregunta es sí, el VBUS (+ 5V del cable) debe estar conectado al dispositivo incluso si es autoalimentado. La razon es la siguiente:

Para iniciar el proceso de conexión en el lado del host, el dispositivo debe levantar D + (en el caso del modo FS / HS) o D- (en el caso del dispositivo LS).

Sin embargo, las especificaciones USB tienen un requisito obligatorio de que ningún dispositivo USB debe generar corriente en ningún pin de interfaz a menos que esté conectado a un cable, consulte la sección 7.1.5.1, que dice:

La fuente de voltaje en la resistencia pull-up debe derivarse o controlarse mediante la alimentación suministrada en el cable USB de modo que cuando se retira VBUS, la resistencia pull-up no suministra corriente en la línea de datos a la que está conectada.

Si un dispositivo USB no tiene este control, una de las líneas de datos será una fuente de corriente. La afirmación prematura de pull-ups fue una fuente de problemas para algunos hosts USB heredados. Es por eso que se instituyó esta regla, y hay una prueba especial para esto en el programa de certificación USB-IF.

Por lo tanto, el USB VBUS es una señal importante de "banda lateral" en el protocolo de conexión USB. Como tal, los CI de dispositivos USB normales tienen un pin de entrada separado para detectar la presencia de un host USB. Algunos fabricantes de circuitos integrados (por ejemplo, FT232H, MCP2221, etc.) omiten este requisito, suponiendo que su chip se utilizará únicamente en la configuración alimentada por bus, donde el requisito de control de extracción se cumple automáticamente. Sin embargo, al diseñar estos chips en diseños autoalimentados, se necesitan algunos esfuerzos de circuito adicionales para vincular la habilitación de pull-ups con la presencia de VBUS en el puerto USB.

Con respecto al protocolo de conexión USB "protocolo de enlace", USB no se basa en la corriente extraída de VBUS. El protocolo es el siguiente: el puerto del host debe tener VBUS activo; VBUS está conectado al dispositivo; el dispositivo ve el VBUS y levanta 1.5k en uno de los cables D + / D-; El host ve esta conexión y, después de un retraso de 100 ms, confirma la señalización USB_RESET (SE0, etc.).

Ale..chenski
fuente
18

Con un dispositivo autoalimentado , no conecte sus 5V a los 5V del host, puede apagar la fuente de alimentación. GNDy D+, D-hará muy bien.

Tenga en cuenta que los niveles D+y D-están clasificados para + 3.6V máximo, ¡no a 5V como podría esperar!

jippie
fuente
44
Sin embargo, vale la pena monitorear VBUS para detectar condiciones de desconexión / conexión, ya que parte de la negociación inicial de USB involucra pull-ups en D + y D-. Una vez nos encontramos con problemas en los que un concentrador no podía enumerar correctamente los dispositivos, según el orden en que se activaron el concentrador y los dispositivos con alimentación propia, a menos que observe VBUS. La solución fue usar un divisor potencial en VBUS para manejarlo.
Jxj
1
Por la misma razón, la resistencia pullup, que notifica a un host que un dispositivo ha sido enchufado e identifica su velocidad inicial, debe hacer referencia a VBUS, no al suministro local del dispositivo.
Dave Tweed
1
Hmmm: el cuadro de llamada "Dispositivos autoalimentados" en usbmadesimple.co.uk/ums_2.htm dice lo mismo: no tire D + o D- por encima de VBUS. Más interesante aún, no conduzca D + o D- cuando VBUS esté apagado. La hoja de datos FT4232H ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf muestra que VBUS se conecta a RESET # que se vincularía con "no conducir cuando VBUS está apagado", pero no parece haber ningún garantice que D + / D- siempre estén por debajo de VBUS en el reinicio. Pensé que todo el punto sobre el reinicio es que D + está por encima o por debajo de D-, no que estaba cerca de VBUS.
kbro