Modo de host USB en uC, para admitir un pequeño conjunto predefinido de dispositivos USB

Aparentemente, una de las principales razones por las que la mayoría de los uC de 8 bits/16 bits no admiten la operación en modo host USB es debido al proceso bastante costoso llamado "enumeración". Según mi investigación, este paso parece ser necesario cuando el host debe identificar la clase de dispositivo conectado a él, identificar un proveedor/dispositivo específico y luego cargar el controlador apropiado para manejar la comunicación entre el procesador del host y el dispositivo. La otra razón es la necesidad de proporcionar suficiente corriente a los dispositivos.

Ahora, si la "corriente suficiente" no es un gran problema, digamos porque mi uC (que me gustaría que actúe como host USB) está alimentado (a través de un wallwart regulado y bien clasificado), y solo hay 3 dispositivos USB con que necesita para funcionar, por ejemplo --

  1. Dispositivo que utiliza Serial over USB patentado
  2. Dispositivo (sensor) que utiliza USB-HID
  3. Proveedor/modelo específico Dispositivo USB2.0 Bluetooth2.1

a través de, por ejemplo, un dispositivo concentrador USB? De hecho, si puede ser un concentrador alimentado, entonces la cuestión de la "corriente suficiente" se aborda de todos modos.

¿Es posible conformarse con decir algo como Atmel ATmega32U2? La idea es que, en lugar de enumerar dispositivos de una gran lista de posibles dispositivos, sé de antemano qué dispositivos están conectados y cómo están conectados. ¿Cuáles podrían ser las advertencias si esto fuera posible? Si alguien está al tanto de tales intentos (con éxito o no), me encantaría saber de ellos.

Hay suficientes formas disponibles para proporcionar el modo host con un microcontrolador que tratar de hacerlo con algo que no está diseñado para el rol es "hacerlo de la manera difícil". Busque dispositivos con capacidad USB OTG" = "On the Go". Estos pueden proporcionar capacidad de host o esclavo según sea necesario.
Bueno, entonces, agregue: "4. Hub USB" porque ese es otro controlador de dispositivo que necesitará. Y hablar con un dispositivo Bluetooth seguramente será otro proyecto más.

Respuestas (2)

Hay suficientes formas disponibles para proporcionar el modo host con un microcontrolador que tratar de hacerlo con algo que no está diseñado para el rol es "hacerlo de la manera difícil".

Busque dispositivos con capacidad USB OTG" = "On the Go".
Estos pueden proporcionar capacidad de host o esclavo según sea necesario.


Si "... algo como Atmel ATmega32U2..." incluye un Atmel AT90USB64 , entonces sí.

es decir, usar una de las partes disponibles que tienen esta capacidad es la "manera fácil" de hacerlo. Hay suficientes formas disponibles para proporcionar el modo host con un microcontrolador que tratar de hacerlo con algo que no está diseñado para el rol es "hacerlo de la manera difícil". Busque dispositivos con capacidad USB OTG" = "On the Go". Estos pueden proporcionar capacidad de host o esclavo según sea necesario.

Circuitos integrados con capacidad OTG de algún tipo

Más barato en 1 en stock en Digikey:

Microcontrolador AVR con capacidad USB OTG $8.43/1 Digikey en existencia.

Microcontrolador compatible con PIC OTG y host $4.22/1 en existencia Digikey

El dispositivo PIC también es el microcontrolador host/OTG más económico de cualquier tipo disponible en stock en unidades de 1 de Digikey.

¿Puedes enseñar algo de lo que es OTG también, en lugar de solo un banco de lugares para comprar cosas?
Gracias @Russell. Esas son algunas buenas opciones. No sabía que las opciones USB-OTG o USB-Host están disponibles en uC de 8 bits. Desearía que los AVR estuvieran disponibles en un número bajo de pines y en el mismo rango de precios que los PIC. Los PIC como tales parecen estar muy cerca de lo que necesito, pero quería ver si V-USB como SW bitbanged solución sería posible. Probablemente no.
Al leer la documentación de PIC sobre OTG, me di cuenta de que la implementación de OTG (o estándar, no estoy seguro) no es una implementación completa de "host", es decir, existen algunas limitaciones/advertencias. Si bien aún podría satisfacer muy bien mis necesidades, quería resaltar este hecho.
@icarus74: ¿Le importaría compartir ejemplos de tales "limitaciones/advertencias"?
@pfalcon, no recuerdo bien cuáles eran (ha pasado un tiempo), pero recuerdo que la hoja de datos en sí enumeraba las limitaciones, por lo que sería un buen lugar para buscar.
@Kortuk: soy consciente de sus objetivos, PERO creo que es un comentario un poco injusto. ¡NOTA!: No estoy molesto/preocupado/molesto/... - solo creo que la respuesta es mejor de lo que parece. Mi comentario original dio un resumen de una línea: lo copié en la parte superior de mi respuesta para aquellos que no pueden leer una página completa a la vez :-). ENTONCES mi consejo Atmega 64 es sobre un producto específico que se acerque a su especificación Atmega 32. ENTONCES hay una lista de TODOS los microcontroladores que vende Digikey que lista OTG en la guía de selección. Esa no es una lista de compras per se: Digikey resulta ser una fuente de datos fantástica. ...

Hay alguna implementación basada en SW del controlador USB Host en Atmega uControllers

SIAM32 USB HC (controlador de host de bus serie universal Atmel Mega32 implementado por software) https://courses.cit.cornell.edu/ee476/FinalProjects/s2007/blh36_cdl28_dct23/blh36_cdl28_dct23/

http://ibm-cvut.felk.cvut.cz/~usbhatm07/presentation/presentation.pdf