Concentrador alimentado por bus USB: ¿más de 100 mA por dispositivo?

11

Me gustaría hacer una pregunta bastante específica sobre la administración de energía USB.

En primer lugar, describiré el diseño de mi dispositivo. Es un controlador de línea de señal simétrica con un códec de audio incorporado para mi sistema de altavoces DIY. El dispositivo se divide internamente en dos bloques en su mayoría independientes: el controlador de línea con un MCU de control y el códec de audio (PCM2706 de TI). Ambos necesitan conectividad de datos USB (a través de un FT232R para el bloque del controlador) y todo el dispositivo debe estar alimentado por bus. Los dos bloques estarán unidos entre sí mediante un chip concentrador USB, lo que proporcionará una única conexión USB de enlace ascendente a la PC. Espero que el consumo de la etapa del controlador sea entre 100 y 200 mA (definitivamente más de una unidad de carga).

Aquí viene el problema: de acuerdo con la especificación USB, un concentrador alimentado por bus puede proporcionar solo una unidad por puerto descendente mientras extrae un máximo de 5 unidades del ascendente. Me gustaría saber qué haría el hub si solicitara dos unidades a través del FT232 para la etapa del conductor. No se alcanzará el límite ascendente de 5 unidades (1 unidad para el concentrador, 1 unidad para el códec y dos para el controlador), por lo que la computadora debe poder suministrar esa corriente físicamente.

Para el chip del concentrador, he estado visitando http://www.ti.com/lit/ds/symlink/tusb2036.pdf . Hay una opción de modo de alimentación "agrupado", ¿sería de alguna ayuda? ¿O el chip simplemente se negaría a otorgar dos unidades al conductor? Y en este caso, ¿hay alguna solución sucia?

Soy consciente del requisito de que también se requieren dispositivos de alta potencia para extraer un máximo de 100 mA durante la enumeración; Esto no es un problema ya que el FT232 puede encender el controlador justo después de la enumeración. El centro también activará las etapas de forma independiente.

Espero haber declarado mi problema lo suficientemente claro y gracias por su tiempo de antemano :)

ACTUALIZAR:

Investigué un poco más sobre el chip TUSB2036. La protección contra sobrecorriente se puede desactivar con el pin / OCPROT. Luego, el concentrador informa al controlador raíz que no puede detectar sobrecorriente. Hay una advertencia en la hoja de datos de que la especificación USB 2.0 requiere protección OC; esto no me importa, solo necesito 1.1 a toda velocidad. El concentrador raíz de la PC debería suministrar 500 mAmps a todo el dispositivo. Por lo tanto, podría configurar el FT232 del controlador para que solo requiera 100 mA y el concentrador nunca sabría si hubiera excedido el límite (respetando los 500 mA de la PC, por supuesto). ¿Alguien puede decir si esto podría funcionar?

Ladislav
fuente

Respuestas:

3

Entiendo que su diseño es que todo el dispositivo está en una sola PCB, está dentro de una sola carcasa y está conectado al host mediante un solo cable USB. Ha integrado un concentrador en la PCB para permitir que ambos dispositivos se comuniquen con la PC. La siguiente respuesta dependerá de estos supuestos, si está hecho de varios dispositivos separados conectados por cables desconectables, eso cambiará las cosas.

En este caso, le sugiero que simplemente configure el concentrador para enumerarlo como un dispositivo de alta potencia y comparta los 500 mA resultantes entre toda la placa. Curiosamente, el esquema de muestra de puerto agrupado de TI muestra todos los dispositivos conectados entre sí, incluso cuando se usa su IC de administración de energía:

ingrese la descripción de la imagen aquí

La línea de suministro de energía de 5V entrante (resaltada en azul, ya que es una de las dos redes que nos interesa en este complicado esquema) está conectada a un IC de administración de energía TPS2041 (una descripción generosa, en realidad es solo un FET que se apaga cuando detecta 500 mA de corriente que se pasa). Sin embargo, cada una de las entradas está en corto, y cada una de las salidas también está en corto, y luego se distribuye a cada uno de los puertos aguas abajo (la red se muestra en rojo).

Básicamente, están haciendo protección contra sobrecorriente para todas las secciones posteriores en un solo IC. No tienen forma de detectar si tienen tres unidades de baja potencia (100mA), una sola unidad de alta potencia o dos unidades de baja potencia y una unidad de 300 mA. Todas estas opciones son aceptables basadas en este diseño de referencia. Tu escribiste:

De acuerdo con la especificación USB, un concentrador alimentado por bus puede proporcionar solo una unidad por puerto descendente mientras extrae un máximo de 5 unidades ...

pero, para responder directamente a su pregunta, este diseño de Texas Instruments (miembro del grupo USB e implementador principal) muestra que solo tiene que garantizar que la corriente total sea inferior a 5 unidades.


Para resolver su problema, las reglas indican (tomado del excelente documento USB en pocas palabras ):

Las funciones alimentadas por bus de alta potencia extraerán toda su potencia del bus y no podrán extraer más de una carga unitaria hasta que se haya configurado, después de lo cual puede drenar 5 cargas unitarias (500 mA máx.) Siempre que lo solicite en su descriptor.

Si puede garantizar que la etapa del controlador no comenzará a tomar corriente hasta que se haya configurado el dispositivo (que podría ser tan simple como un retraso temporizado en el controlador host), simplemente puede conectar todo junto. Debido a que todo su circuito está en una sola PCB y no tiene puertos de bajada accesibles para el usuario, probablemente también pueda omitir el TPS2041 y simplemente diseñar el sistema para que no requiera más de 500 mA de corriente en ningún estado.

Otro beneficio de enumerar como dispositivo de alta potencia son las especificaciones mejoradas de voltaje de entrada. Cuando se ha enumerado como un dispositivo de baja potencia, solo se requiere que el host produzca 4,40 V en el puerto ascendente (que será menor en su dispositivo debido a la resistencia del cable). Cuando se haya enumerado como un dispositivo de alta potencia, la especificación garantiza que obtendrá 4.75 V, que es más probable que esté dentro del rango operativo de cualquier componente de 5V que esté utilizando.

Kevin Vermeer
fuente
Gracias por una excelente respuesta. Pero, ¿cómo configuro el hub de esa manera? ¿Necesito la EEPROM externa o solo ato el pin / GANGED a tierra (y los otros pines de configuración de acuerdo con el esquema que ha enviado)?
Ladislav
1
¡Tendría que atar! PANDADO al suelo y! EXTMEM a 3.3V. Sin embargo, la EEPROM externa podría ser buena: de lo contrario, su dispositivo aparecerá como 'hub USB genérico' en la PC. Alternativamente, probablemente podría emular una EEPROM con su microcontrolador integrado (configure una de las interfaces I2C para que actúe como esclavo). Entonces podría informarlo como un 'Controlador del sistema de altavoces y controlador de códec' o algo así.
Kevin Vermeer
5

He diseñado una placa alrededor de ese centro.

En mi aplicación, estaba permitiendo el acceso a un FT232 y un FT245.

Si todo está en su propia PCB, le recomendaría que ignore por completo los sistemas completos de protección contra sobrecorriente. Después de todo, si algo falla en su PCB, todo necesitará trabajo, por lo que hacer que el dispositivo pueda manejar una falla parcial es un punto discutible.

En mi situación, até el TUSB para solicitar los 500 ma completos y deshabilité la protección contra sobrecorriente, y simplemente ejecuté todo directamente desde el USB 5.0v. Lo logré obligando al concentrador a informar como autoalimentado al host ascendente.

He hecho un par de tablas, sin ningún problema real, por lo que parece una estrategia perfectamente viable. También se ha utilizado con varias computadoras diferentes, por lo que me sentiría bastante seguro de usarlo tal cual.

Por supuesto, si esto es para un dispositivo de producción, en lugar de un proyecto personal o un arnés de prueba (que es lo que es en mi caso), es un problema completamente diferente.

ingrese la descripción de la imagen aquí

(Ver la nota en el esquema)


Por lo que vale, a menudo puedes abusar horriblemente de la mayoría de los puertos USB modernos sin demasiados problemas. Muchos de ellos pueden suministrar mucha más potencia que los 500ma para los que están clasificados, sin demasiados problemas.
Además, la mayoría de ellos (todo lo que he probado, salvo algunas computadoras portátiles ) suministrarán felizmente los 500 ma completos sin tener que enumerar ningún dispositivo.

Sin embargo, esto varía de una placa base a otra, dependiendo de cómo esté diseñado el host USB. Su experiencia puede ser diferente.

Connor Wolf
fuente
Sí, he estado pensando en eso, pero como has dicho, esto varía de MB a MB. El dispositivo no se producirá en miles, pero necesito que sea tan interoperable como sea posible, por lo que "Funcionaría" en cualquier computadora. Gracias de todos modos, las observaciones prácticas son igual de valiosas :).
Ladislav
@Ladislav: no creo que exista la posibilidad de evitar la necesidad de encender y apagar los dispositivos posteriores sin violar la especificación USB al menos un poco.
Connor Wolf
Vale la pena señalar que si sujeta el dispositivo para informar que funciona como bus, y simplemente no se molesta con el cambio de alimentación, puede funcionar de todos modos. Podría valer la pena probarlo. Alternativamente, busque un concentrador IC solo USB-1.1.
Connor Wolf
1

Puede estar un poco sucio: el TUSB2036 permite la selección de puertos aguas abajo (p3 NPINT1-0 configurado en 10). Luego, conecte su dispositivo a dos puertos (físicos) para que pueda dibujar 2 unidades en paralelo.

suha
fuente