¿Cómo se reconoce el chip ATmega32U4 a través de USB?

3

Tengo un chip ATmega32U4 que se puede conectar a una PCB y conectar a una PC a través de USB. Cuando se hace esto, Windows 10 (si están instalados los controladores adecuados) reconoce el dispositivo como un chip ATmega32U4.

¿Cuál es el responsable del chip para responder al conector USB? ¿Cómo funciona esto exactamente?

  • ¿También es un llamado cargador de arranque que se almacena en flash?
  • ¿Es un software enviado por Atmel que se almacena en flash? Porque entonces, ¿qué pasaría cuando reescribiera la memoria flash? ¿Ya no sería reconocible por Windows?
pregunta bas

2 respuestas

4

En un microcontrolador como el ATmeaga32u4, esas clavijas USB están conectadas a un poco de hardware especial para manejar la señalización USB. Pero ese hardware hace prácticamente la electrónica, no controla qué datos se envían o reciben.  Y los datos deben enviarse y recibirse para identificar el dispositivo y enumerar. Si no hay software en el chip, no se envían datos y el chip no se enumera. Es probable que Windows informe que "uno de los dispositivos USB conectados a esta computadora ha funcionado mal", pero es posible que ni siquiera lo detecte.

Pero los chips generalmente vienen de fábrica con un gestor de arranque DFU en ellos (aunque también hay chips completamente en blanco y programados de manera diferente). El gestor de arranque DFU se identifica a sí mismo como un dispositivo de clase DFU y también le otorga a la PC un Id. De proveedor (VID) y un Id. De producto (PID). Luego, la PC revisa su lista de controladores para encontrar uno que dice ser compatible con ese VID y PID. Probablemente haya instalado Atmel Flip, que incluye un controlador, y el controlador sabe que VID / PID significa un ATmega32u4 con el cargador de arranque DFU. Así que Windows carga ese controlador, y el controlador le dice a Windows que es un ATmega32u4.

Presumiblemente, quieres hacer otra cosa con el chip a largo plazo. Así que tendrás que programarlo con tu propia aplicación. No puede (y no querría) ejecutar el gestor de arranque y su aplicación al mismo tiempo. Pero puede dejarlos en el chip, y alternarlos con algún código especial, configuración de fusibles o tirando de un pin a tierra durante el reinicio. Esto es excelente para el desarrollo, ya que ese cargador de arranque puede usarse para cargar una nueva copia de su aplicación. También es útil si desea que los clientes realicen actualizaciones de firmware en el futuro.

Pero mientras su aplicación se está ejecutando, el gestor de arranque no lo está. Así que el gestor de arranque no puede hacer la enumeración, no puede pasar el VID / PID a la computadora, etc. En su lugar, su aplicación tendrá que hacer todo eso. Y es complicado. Pero la buena noticia es que hay bibliotecas que hacen la mayor parte por usted. El más común se llama LUFA . También deberá comprar / elegir su propio VID / PID y escribir un controlador para que vaya con su dispositivo.

    
respondido por el Jack B
2

Por lo tanto, en los microcontroladores, debe escribir un firmware que maneje USB, y eso incluye reaccionar a los paquetes del host que solicitan cosas como las identificaciones de proveedores y productos.

Por lo tanto, hay un software que se ejecuta en su microcontrolador que habla a su PC de acuerdo con el estándar USB.

Las posibilidades son, eso sí, este es el firmware del cargador de arranque que viene pre-flasheado por atmel - la razón es simplemente para permitirle construir un dispositivo y luego programarlo rápidamente. ¡Muy útil para la producción!

El hecho de que el gestor de arranque se encuentre o no en la memoria de escritura del usuario y en qué circunstancias se ejecuta al inicio depende mucho. La hoja de datos de sus dispositivos y las guías del usuario tendrán detalles sobre eso. Busque el cargador de arranque, USB, y posiblemente "DFU", el perfil de USB para las cargas de firmware.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas