¿USB Host siempre suministra energía en VBUS?

Sé bastante sobre USB, pero por alguna razón no puedo responder esta pregunta por mí mismo.

¿El puerto host USB (digamos USB 2.0) siempre suministra 5 V en el pin VBUS? Si no, ¿cómo detecta la conexión del dispositivo?

Para el dispositivo (caja alimentada por bus) es fácil detectar el host detectando el pin VBUS, pero para que esto funcione, el host USB siempre debe proporcionar 5 V en el pin VBUS, lo que me lleva a hacer esta pregunta.

Una cosa que se me ocurre es que puede proporcionar 5 V, 100 mA de forma predeterminada y más solo después de una enumeración exitosa. Pero por lo que he observado, los puertos USB de la computadora portátil tienen VBUS de 5 V habilitado de forma predeterminada y no están limitados a 100 mA, por lo que solo quiero entender desde el punto de vista del estándar USB.

Cualquier respuesta será muy apreciada.

Respuestas (2)

Un host USB clásico estándar siempre debe proporcionar VBUS (+5 V +- 10 %) a un puerto de bajada, para que un dispositivo pueda iniciar la secuencia de conexión (pulsar D+ o D- alto). El puerto debe proporcionar al menos 500 mA (versión 2.0) o 900 mA (versión 3.0), independientemente de si hay comunicación o conexión o no. Estos son requisitos "al menos" para los "puertos de alta potencia" USB 2.0 y USB 3.0 clásicos y los concentradores alimentados, por lo que pueden suministrar más si lo desean. Los requisitos se enumeran en la Sección 7.2 de las Especificaciones USB 2.0. Los pequeños alimentados por batería pueden tener una excepción.

NOTA 1: VBUS debe ser suministrado por el host incluso en el modo de "reposo" (estado de suspensión).

--

NOTA 2: si un host no impulsa el VBUS alto, no se producirá/debería realizar ninguna conexión, incluso si el dispositivo tiene alimentación propia. Las solicitudes de conexión (D+ o D- pull-ups) deben ocurrir solo si VBUS está presente, según las especificaciones de USB 2.0 Sec.7.2.1. Por lo tanto, es una violación de las especificaciones solo "tener" los pull-ups, el pull-up debe estar condicionado con VBUS.

--

NOTA 3: Entonces, sin VBUS => sin comunicación. Debido a esta regla, ningún modo "parcial" o "señalización de host" es posible sin VBUS.

Los 500 mA son un requisito para USB HOST . Este número de suministro se confunde frecuentemente con un requisito de un DISPOSITIVO USB como consumidor. Un dispositivo USB NO DEBE consumir más de 100 mA en la etapa de conexión inicial, y puede consumir toda la energía solo cuando se enumera y recibe el comando "set_configuration ()". Los dispositivos USB informan sus requisitos de energía en el descriptor del dispositivo, durante esta sesión inicial de "100 mA". Si el host ha agotado su presupuesto de energía, puede detener la enumeración, rechazando efectivamente el dispositivo.

NOTA 4: como se puede ver, no hay "negociación", es "mi camino [anfitrión]" o "autopista".

--

NOTA 5: los hosts USB no tienen medios específicos para vigilar el consumo de energía real de sus puertos. Los controladores de host USB no tienen ningún registro que pueda medir/informar el consumo de puertos. Por lo tanto, un host no puede hacer cumplir el límite de 100 mA para vigilar los dispositivos defectuosos que podrían violar la especificación de 100 mA, a menos que ocurra un evento drástico de sobrecorriente del puerto. El cumplimiento del límite de 100 mA se pensó a nivel del proceso de certificación USB-IF.

En resumen, los 500 mA y 100 mA son requisitos para diferentes entidades USB, una para hosts y hubs, y otra para dispositivos, nuevamente como se describe en la Sección 7.2.1. Así es como funciona desde el punto de vista del estándar USB.

Ahora las cosas son un poco diferentes con la introducción del conector tipo C. Los dispositivos de tipo C (tanto hosts como periféricos) tienen prohibido emitir VBUS , inicialmente. Por lo tanto, en lugar de tener energía VBUS audazmente en un puerto Tipo-C, el host debe encender la fuente VBUS solo si la lógica del puerto detecta la presencia de cable/dispositivo. Lo hace al detectar el nivel de voltaje en el pin "CC" (Canal de comunicación). Un host tipo C tiene un pull-up en ambos pines CC. Un dispositivo (o conjunto de cables heredado) debe tener un menú desplegable de 5,1 k. Cuando el dispositivo/cable está enchufado, el host detecta que 5.k arrastra su pull-up hacia abajo y, en este punto, el host tiene derecho a activar la alimentación VBUS y comienza la comunicación USB.

Muchas gracias por la respuesta detallada y bien referenciada. Realmente aprecio tu ayuda. Estoy muy atascado en un proyecto, por lo que no puedo dedicar tiempo a pensar más aquí. Voy a comentar aquí si tengo más preguntas sobre el mismo.
"El host USB puede tener un sistema de administración de energía que sea independiente del USB" del capítulo de administración de energía usb_20.pdf 4.3.2. Entonces, "Un host USB clásico estándar siempre debe proporcionar VBUS" no es correcto. Por razones de administración de energía, el sistema puede apagar VBUS.
@iouzzr, una "administración de energía independiente de USB" no hace que el host USB sea "estándar" y "clásico". Sin embargo, es cierto que el mercado de dispositivos portátiles ha inventado el concepto de "espera en frío" con VBUS apagado, principalmente porque muchos dispositivos USB no siguieron los límites de potencia de SUSPENSIÓN y para evitar el agotamiento a largo plazo de baterías pequeñas. Pero este tipo de dispositivos generalmente tienen el apodo de "dispositivos portátiles", que difícilmente es "USB clásico", por lo que mi afirmación sigue siendo cierta. Pero gracias de todos modos por mencionar este matiz.
¿Un cargador de pared USB-C siempre proporciona VBUS?
@Bram, no, un cargador compatible con Tipo C no debe suministrar VBUS hasta que el puerto/cable vea los desplegables adecuados en los pines CC (a menos que esté enchufado)

A menos que esté en algún tipo de suspensión o modo de falla de sobrecorriente, sí, un host USB ordinario (Classic 1.0/1.1/2.0) siempre suministrará energía a VBUS.

El host detecta los dispositivos USB porque tienen una resistencia pull-up en una de las líneas de datos, D-para un dispositivo de baja velocidad y D+para un dispositivo de velocidad completa (o un dispositivo de alta velocidad; la alta velocidad se descubre en la señalización). ).

Si bien la especificación USB prohíbe que los periféricos consuman más de 100 mA sin negociación, en la práctica, muchos (la mayoría) de los hosts no imponen esto. Por lo general, tienen algún tipo de PTC o protección activa contra sobrecorriente que se activa en algún lugar por encima de los 500 mA (algunos, como el Raspberry pi original, tenían límites más bajos y no podían obtener la corriente de especificación USB completa).

Algunos de los primeros teléfonos inteligentes tenían una capacidad de host USB parcial no compatible , podían operar en la función de señalización del host, pero no enviar VBUS a un periférico. La mayoría hoy en día tienen una bomba de carga para suministrar VBUS o no permiten la operación en modo anfitrión.

Muchas gracias por su detallada respuesta. Realmente lo aprecio.