prof. Jacques Lepot
ATMEGA32UX ET MODE DFU
Les ATMEGA "U"

 

La série U des ATMEGA de ATMEL dispose en interne d'un contrôleur USB hardware.
C'est un avantage car cela permet de connecter ces micros vers un PC sans avoir recours un un chip de type FTDI.
Pour le reste ils sont entièrement compatible avec les ATMEGA32 ou le 328 de l'Arduino.

C'est ce chip qui est utilisé sur l'Arduino Leonardo. (schéma et fichier eagle)


leonardo

Cette carte comporte très peu de composants

Indispensables:

Un ATMEGA32U4
Un quartz
Des condensateurs de découplage

En option:
4 Leds et quelques résistances
Et, si on veut une alimentation 5 à 12 V
Un régulateur, une diode de protection, 2 condensateurs
et, grand luxe,un petit circuit analogique pour commuter automatiquement l'alimentation USB/12V.

 




Ce contrôleur USB est de type "Device", c'est à dire périférique d'un pc. Il ne sera jamais possible de connecter sur ce port USB une caméra, une imprimante, un clavier , une souri etc ...Pour cela, il faut un contrôleur "Host" ou "OTG"

Par contre le microcontroleur peut se présenter au pc comme un port série (CDC) un clavier, une souri (HID) ou, ce dont nous allons parler, un périférique DFU.

L'avantage de tous ces périfériques est qu'ils sont reconnus par Windows sans nécéssiter l'installation d'un driver particulier.

Il y a actuellement 3 modèles ATMEGA32U, 16U et 8U. soit 32K,16K et 8K de mémoire flash.
Et 2 variantes U4 et U2, les U2 n'ont pas de convertisseur A/D.

Pour en savoir plus sur les variantes, télécharger AVR Studio, demander des échantillons gratuits, c'est ici

 

DFU

 

DFU signifie: Device Firmware Update. C'est un protocole, développé en commun par plusieurs fabricants, pour permettre la mise à jour du firmware (le logiciel embarqué dans un appareil électronique) avec un pc et un port USB.

Ce protocole n'est pas limité aux Atmel mais est aussi utilisé pour mettre à jour de nombreux appareils, iphones etc ...

Quelques liens:
http://dfu-programmer.sourceforge.net/

http://www.codeproject.com/
http://www.iphone-info.fr/

Bien entendu, il faut que le "device", ici notre ATMEGA, dispose du programme qui lui permet d'établir la communication avec le pc à travers ce protocole. Il serait donc normal de devoir charger ce programme dans une puce vierge, et pour cela il nous faudrait un programmeur spécial (par exemple STK500).

Mais en pratique, non, il n'y a besoin d'aucun programmeur spécial car le code DFU est INSTALLE D'ORIGNE dans ces ATMEGA"U".
Il suffit donc des 2 fils D+ et D- et le 5V et la masse pour qu'un ATMEGA32U4 VIERGE puisse entrer en communication avec un pc,
et que ce dernier soit pret à charger un programme dans le microcontroleur.

Une fois la carte réalisée, pour charger un programme, c'est très simple en suivant cette procédure

  • Téléchargez et installez un logiciel de programation DFU, le plus simple est d'utiliser celui de Atmel
    FLIP.(seulement 6MB si vous avez java)

  • Lancez FLIP et choisissez votre chip:

    flip1flip2


  • Choisissez la communication USB

    flip3

  • Vous devez obtenir ceci

    A droite la signature du chip qui identifie bien un ATMEGA32U4
    Si le chip ne dispose que de 28KB de mémoire et non 32, c'est parceque 4KB sont utilisé pour le
    bootloader DFU.
    A gauche, des options pour la programmation

    Erase: effacer avant de programmer
    Blank chek: vérifier l'effacement
    Program: on charge un programme du pc vers la puce (fichier HEX)
    Verify: vérifier le programme après chargement

    flip4
  • Enfin, et c'est pour cela qu'on est venu, charger un programme
    flip5
    File > Load HEX File

    choisissez le ficher .HEX que vous désirez flasher

    Si c'est un programe que vous avez compilé avec Arduino, il se trouve dans
    C:\Users\ton_nom\AppData\Local\Temp\buildnnnnnnnnnnnn.tmp\Blink.cpp.hex
    buildnnnnnnnn est un nom barbare qui change à chaque projet, mais il est indiqué à la fin de la compilation. Blink, c'est le nom du programme.
    Si c'est un programme compilé avec AVRStudio, il est dans le sous répertoire debug ou release de votre projet


    Cela donne ceci

    flip6


    flip7

    Cliquez RUN , ca efface, ca programme, ca vérifie et puis ...


    tout est bon, le programme est dans le chip

    Pour resetter l'ATMEGA, démarrer son programme et quitter le mode DFU,
    cliquez sur Start Application, ne cochez pas la case reset.

    Vous pouvez aussi tout débrancher et alimenter votre circuit par une alimentation USB,
    le programme démarrera directement