Tutoriel
Tutoriel
Tutoriel
Sommaire
Objectif Norme USB PIC18F4550 Pilote et firmware USB de Microchip Bootloader Software PC Firmware PIC Exemple Conclusion
I.
Objectif
Lobjectif de ce tutoriel est de faire une mthode pas pas pour utiliser une liaison USB dans un projet lectronique. Nous utiliserons ici un microcontrleur PIC de Microchip qui intgre la norme USB. Nous utilisons le 18F4550 mais il en existe dautres, plus compacts. II. Norme USB
Ici nous nexpliquerons pas le fonctionnement de lUSB mais plutt les divers modes de communication proposs par ce bus : - communication CDC (convertisseur USB-srie) - communication HID (human interface device) - communication mass Storage - communication gnrique (transfert brut des donnes) CDC : Le mode CDC sert muler un port srie donc lordinateur voit le priphrique comme un port srie et le dialogue se ralise comme tel avec les mmes bibliothques quun port srie. HID : Ce mode est utilis pour les souris, claviers et autres priphriques basse vitesse transferts de donnes faibles. Mass Storage : Mode utilis pour les cls USB et autres priphriques de stockage. Gnrique : Mode utilis dans ce tutoriel, il permet une vitesse maximum de 480 Mbits/s, 12 Mbits/s, 2 Mbits/s. Les bibliothques fournies avec ce mode nous permettent de donner la quantit dinformation envoyer dans un temps que lon peut fixer.
III.
PIC18F4550
Le PIC intgre lUSB et Microchip fournit tout un panel doutils pour utiliser ce mode de communication. Le 18F4550 comporte 40 broches, il est compos de CNA, de CAN, de ports srie, dun bus SPI, Il permet donc une adaptation toutes sortes de projets. Nous le programmerons en langage C avec les logiciels MPLAB et C18 de Microchip, tous les deux disponibles gratuitement. MPLAB est lenvironnement de programmation et C18 un plugin pour pouvoir programmer en C. IV. Pilote et firmware USB de Microchip
Microchip fournit des pilotes et des exemples dapplications pour le PC et des programmes pour le PIC. Ils les distribuent sous le nom de MCHPFSUSB. Il contient des documents, un dossier pour le microcontrleur et un dossier pour le PC. Ce qui concerne le microcontrleur se rsume un Bootloader, un exemple de communication CDC, dun exemple de communication HID, dun exemple de programme basique utilis avec le Bootloader et dun exemple de communication gnrique. Le dossier PC comporte les drivers de lUSB lorsquon branche le microcontrleur sur le PC, des bibliothques pour la communication gnrique et des exemples de programmes sur PC, et dun programmateur utilis avec le Bootloader. V. Bootloader
Le Bootloader est un programme rsidant dans le PIC en haut de la mmoire. Il permet de mettre jour le programme contenu dans le PIC en crivant directement dans la mmoire sans passer par un programmateur ddi. Le Bootloader est protg contre les critures dans la zone rserve son code. Nous lutiliserons ici avec la liaison USB. Au dmarrage du PIC, celui-ci scrute un bouton ; sil est enfonc, il passe en mode programmation, sinon il excute le programme. En mode programmation il dialogue avec un programme du PC et efface lancien programme pour mettre le nouveau. Les tapes pas pas pour commencer un projet sont : Etape 1 : Utiliser un programmateur de PIC pour programmer le Bootloader dans le PIC18. Nous avons utilis un kit de dveloppement de Microchip contenant un ICD2, programmateur dbogueur, et une carte de dveloppement PICDEM mais tout autre programmateur compatible avec le 18F4550 conviendra. Il faut donc mettre le microcontrleur sur la PICDEM, brancher lICD2, ouvrir MPLAB, compiler le Bootloader et programmer la puce.
Si vous utilisez un PIC18F2550, un 18F87J50 ou un schma diffrent (oscillateur au lieu du quartz, ), il faudra modifier un peu la source du Bootloader, pour cela se servir de la doc du microcontrleur et dinternet (site de liens en annexe). Etape 2 : Raliser un prototype intgrant au minimum le schma suivant :
Nous pouvons voir ici le PIC, son quartz de 20 MHz, le bouton de reset, celui pour entrer dans le mode Bootloader et le port USB. Etape 3 : Connecter lUSB et premire dtection. Connectez lUSB, ce qui alimente la carte. Entrez dans le mode Bootloader en maintenant enfonc le bouton S2, puis appuyez sur S1. Normalement, Windows dtecte un priphrique USB inconnu. Etape 4 : Installation du pilote. Une fentre Windows souvre alors pour installer manuellement le pilote. Slectionnez Ne pas se connecter a internet puis rechercher manuellement puis donner le rpertoire o se trouvent les pilotes Microchip : \MCHPFSUSB\PC\MCHPUSB driver\release. Etape 5 : Utilisation du Bootloader. Nous allons maintenant utiliser le Bootloader pour programmer un programme dexemple : demo2 de Microchip. Avec MPLAB, ouvrir le projet demo2, le modifier si ncessaire et le compiler Rentrer dans le mode Bootloader en pressant S2 et S1 et relcher S2 aprs S1.
Ouvrir le logiciel \MCHPFSUSB\Pc\Pdfsusb\PDFSUSB.exe Slectionner PICDEM FS USB 0 (Boot) dans la liste Cliquer sur Load HEX File" : "C:\MCHPFSUSB\fw\Demo02\Demo02.hex" Cliquer sur programme Appuyer sur S1 pour reseter le microcontrleur et vrifier le bon fonctionnement du programme. Etape 6 : Crer un programme sur PC en utilisant les bibliothques fournies par Microchip ou les bibliothques de liaison srie standards. Etape 7 : Crer votre propre programme en vous inspirant de lexemple dmo , CDC ou HID pour le dialogue USB. VI. Software PC
Il est maintenant ncessaire de faire un programme sur le PC qui interagira avec votre montage. Il est conseill de commencer par un simple petit programme qui allume une led lorsque lon appuis sur un bouton a lcran et un voyant qui s'allume sur votre fentre lorsque vous mettez a un une broche du microcontrleur. Nous avons utilis lenvironnement de delphi6 (langage pascal) pour raliser notre programme mais il est possible de le crer sous nimporte quel autre langage. Les bibliothques fournit par Microchip sont situ dans le dossier : MCHPFSUSB\Pc\Mpusbapi . On y trouve une dll et ses sources. Pour utiliser une dll avec Delphi il faut passer par un fichier bibliothque qui interprte la dll (fournit en annexe). Pour les autres langages la faon de lutiliser dpend du compilateur utilis. Utilisation de la dll : Il y a une zone modifier et deux fonction a utiliser, la zone a modifier concerne les codes des commandes a envoyer et la taille des paquets reut et mis (buffer) : READ_VERSION = $00; // commandes pour le Bootloader READ_FLASH = $01; WRITE_FLASH = $02; ERASE_FLASH = $03; READ_EEDATA = $04; WRITE_EEDATA = $05; READ_CONFIG = $06; WRITE_CONFIG = $07; UPDATE_LED = $32; RESET_DEVICE = $FF; // commandes personnelles STOP = $20; CHANGE = $21;
Et les fonctions utiliser sont : GetSummary() qui cherche les priphriques connect et retourne 0 si elle nen trouve aucun et sinon le nombre trouv. Function EnvoiReception(SendData :PByteBuffer; SendLength : DWORD ; ReceiveData : PByteBuffer; var ReceiveLength : DWORD):DWORD; Celle-ci sert envoyer recevoir les donnes Exemple dutilisation : // Fonction qui envoi la commande stop procedure TCNC1.arret; var RecvLength : DWORD; // variables utilis par la fonction send_buf : TByteBuffer; receive_buf :TByteBuffer; begin // remplissage des buffer denvoi send_buf[0] := STOP; // nom de la commande envoyer send_buf[1] := 2; // longueur de lmission RecvLength := 2; // longueur de la reception if (EnvoiReception(@send_buf,send_buf[1],@receive_buf,RecvLength) = 2) Then Begin if (receive_buf[0] = STOP) then // si la commande renvoy correspond bien Memo1.lines.add('STOP OK') Else Memo1.lines.add('Mauvais renvoit de commande!') end Else Memo1.lines.add('USB Operation Failed'); // si il y a eu une erreur end; Toute autres oprations ce fera de la mme manire, ce qui diffre ce sont les commandes, les donns envoyer, recevoir. Un exemple plus complet est donn plus loin.
VII.
Firmware PIC
VIII.
Exemple
IX.
Conclusion
X.
Annexe