samedi 29 mars 2014

introduction au LPC810 (ARM M0+)

Je prends une pause du projet PICvision pour présenter le seul microcontrôleur 32 bits disponible en format PDIP-8. Le MCU LPC810 fabriqué par NXP est en effet basé sur le core ARM M0+. Pour l'avoir en format PDIP-8 il faut commander le modèle LPC810M021FN8. NXP est le seul manufacturier à offrir des MCU ARM en format PDIP et il n'y a que 2 modèles disponibles, l'autre étant le LPC1114FN28 disponible en format PDIP-28 large (600mil.).

Caractéristiques du LPC810

paramètrevaleur
coeurARM Cortex M0+
architectureVon Neumann
Freq. CPU30Mhz max.
mémoire flash4Ko
mémoire RAM1Ko
USART2
I2C1
SPI1
comparateur1
multirate timer4 canaux
systick counteroui, 24 bits
GPIO6
multiplicationhardware 32 bits, 1 cycle
boot loader en ROMoui
alimentation1,8 à 3,6 volt

Environnement de développement

NXP mais à notre disposition une version gratuite de LPCXpresso. Cet IDE est basé sur Eclipse et est disponible pour Linux, Windows et OSX. Il faut cependant créer un compte utilisateur sur le site lpcware.com pour obtenir la clé d'enregistrement.

Une fois le logiciel installé l'enregistrement se fait à partir de l'IDE dans le menu HELP - Activate - Create serial number and register...

Une fois le numéro de série créé et la clé d'activation obtenue, il faut alors aller dans HELP - Activate - Enter activation code...

La version gratuite permet de créer des programmes jusqu'à 256Ko. Il y a deux autres logiciels à télécharger. Le premier est flash magic disponible gratuitement pour windows et OSX. Flash magic permet de programmer le MCU en se servant du boot loader en ROM qui est inclus dans le MCU lors de sa fabrication. A moins que vous n'ayez un programmeur compatible supportant SWD ou JTAG vous ne pourrez pas programmer le LPC810 à partir de l'IDE. Par défaut le compilateur génère un fichier .AXF qui n'est pas supporté par flash magic. Il faut donc pour chaque projet spécifié qu'on veut un fichier .HEX.

Pour générer un fichier HEX il faut dans l'explorateur de projet, cliquer avec le bouton droit sur le nom du projet et dans le menu choisir propeties. dans C/C++ setting onglet build steps, post-build steps command: cliquez sur le bouton edit....

dans l'éditeur ajoutez la ligne suivante:
arm-none-eabi-objcopy -O ihex "${BuildArtifactFileName}"
 "${BuildArtifactFileBaseName}.hex"
Une fois cette configuration accomplie, lors de la compilation du projet un fichier .HEX sera généré.

Premier projet

Pour ce premier projet on va en importer un de Github et le modifier. Allez à https://github.com/microbuilder/LPC810_CodeBase et à droite de la page cliquez sur le dernier bouton nommé Download ZIP. Une fois téléchargé il faut maintenant l'importer dans l'explorateur de projet de LPCXpresso.

En dessous de l'explorateur de projet il y a une autre fenêtre avec plusieurs onglets. Dans Quick start panel cliquez sur import project(s). Dans le fenêtre d'importation cliquez le premier bouton browse... et allez chercher le fichier .ZIP que vous venez de télécharger. Cliquez maintenant sur le bouton Finish. Une fois le projet importé il devrait apparaitre dans l'explorateur de projet sous le nom LPC810_CodeBase.

Déployez l'arborescence de ce projet et le dossier src à l'intérieur de celui-ci. Ouvrez le fichier main.c dans l'éditeur en double-cliquant dessus.

J'ai modifié le projet pour remplacer la LED simple par une une LED RGB dont les anodes sont connectées comme suis:

  • PIO0_1 (broche 5) ANODE ROUGE
  • PIO0_2 (broche 4) ANODE BLEU
  • PIO0_3 (broche 3) ANODE VERTE
  • V-   CATHODE COMMUNE
vue montage dans Boardview:
photo du montage:
On y aperçois la petite alimentation Sparkfun 3,3/5 Volt, ainsi que adaptateur de niveaux de tension RS-232 vers TTL.

Voici le fichier main.c tel que je l'ai modifié.

Ce projet est déjà configuré pour générer un fichier .HEX il ne reste donc qu'à le compiler. Dans la barre d'outils il y a un marteau avec une petite flèche à droite qui pointe vers le bas. Cliquez sur la flèche et ensuite sur Release (Release build).

S'il n'y a pas d'erreur de compilation il devrait y avoir un fichier LPC810_CodeBase.hex dans le dossier release du projet. Dernière étape flasher ce fichier dans le LPC810.

Flash magic

Vous avez installé flash magic maintenant ouvrez le. Mais d'abord pour faire entrer le MCU en mode boot loader il faut l'éteindre et ensuite mettre PIO0_1 (broche 5) à zéro volt (voir photo, j'utilise le cavalier bleu à cet effet). On réalimente le MCU. Maintenant dans flash magic, il faut sélectionner le port sériel sur lequel est branché le MCU, indiquez la vitesse de transmission et mettre le clock à 12Mhz. Comme illustré ci-bas (le no de port ne sera pas nécessairement le même sur votre ordinateur.
Pour la programmation le LPC810 reçoit sur la broche 8 et transmet sur la broche 2.

Utilisez le bouton browse pour aller chercher le fichier LPC810_CodeBase.hex dans votre dossier de travail LPCXpresso. Lorque c'est fait on clique sur le bouton start. Si tout va bien le message Finished va apparaître après quelques secondes dans la barre d'état. On éteint l'alimentation du MCU, on enlève le cavalier sur la broche 5 de Vss et on réallume. La LED RGB allume ses 3 couleurs en alternance à intervale de 0,5 seconde.


Documents à télécharger

LPC8xM datasheet
LPC81x user manual

Aucun commentaire:

Enregistrer un commentaire