Previous Up Next

4  Programmation du périphérique

Il s’agit du point le plus délicat du tutorat : la réalisation d’une interface USB de classe "Mass Storage" étendue.

4.1  Prise en main

Commencez par un test basique de la clef : faire clignoter une ou plusieurs LED. Avec un peu de soudure, vous pouvez aussi tester les boutons. Pour le programme de test, vous pouvez partir de ce projet : TestLED.tgz.  
 
La seconde étape est de tenter de communiquer avec les mémoires SPI. Lisez la documentation de la mémoire (DS-45DB641E-027-1385809.pdf). Pour vous faciliter la vie une micro-bibliothèque de gestion des mémoires AT45DB641E est donnée : AT45DB641E.tgz. Récupérez les octets d’identification des mémoires. Utilisez les LED de la carte pour communiquer les octets reçus.

4.2  Fonction mémoire de masse

Vous pouvez enfin passer à l’utilisation de la bibliothèque LUFA pour implanter un périphérique USB de classe Mass Storage. Téléchargez la dernière version de la bibliothèque LUFA http://www.fourwalledcubicle.com/LUFA.php. Créez un répertoire PolytechLille au même niveau que les répertoires Demos et Projects. Le principe serait de recopier la démonstration de périphérique USB bas niveau MassStorage dans le répertoire PolytechLille et de l’adapter pour le périphérique du tutorat. Mais, pour vous aider, une version modifiée de cette démonstration MassStorage est donnée : MassStorageSimple.tgz. Dans cette version, vous n’avez à modifier que les fichiers Lib/DataflashManager.h et Lib/DataflashManager.c.  
 
Une tendance naturelle est de créer un tableau pour stocker une page mémoire mais avec un ATMega16u2, il vaut mieux éviter : ce microcontrôleur ne possède que 512 octets de mémoire vive. Même allouer un tableau pour une page de 256 octets n’est pas une bonne idée sachant que la bibliothèque LUFA consomme déjà de la mémoire. Vous écrirez donc les octets un à un dans le tampon d’écriture des mémoires et vous lirez les octets d’une page mémoire un à un.

4.3  Fonction supplémentaire

La fonctionnalité supplémentaire est décrite dans la section 5.4.  
 
Vous allez modifier le projet pour ajouter une interface "spécifique vendeur" et des points d’accès de type interruption. Il faut un point d’accès "OUT" (sens hôte vers périphérique) et un point d’accès "IN" (sens périphérique vers hôte). La déclaration des interfaces et des points d’accès se font dans les fichiers Descriptors.c et Descriptors.h. La gestion des points d’interruption se fait dans l’autre source .c.  
 
La démonstration Keyboard comporte déjà le code pour déclarer et exploiter des points d’accès de type interruption. Inspirez-vous en (cherchez les fonctions Endpoint_ConfigureEndpoint, Endpoint_SelectEndpoint, etc). N’hésitez pas à consulter la documentation de la bibliothèque LUFA sur Internet.

4.4  Téléversement du programme

Pour téléverser votre programme sur l’ATMega16u2, le paquetage Debian dfu-programmer est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’ATMega16u2 est la suivante :

4.5  Test de la mémoire de masse

Pour tester le bon fonctionnement de votre carte, procédez comme suit :


Previous Up Next