Tutorial d’utilisation USB avec un microcontrôleur PIC18F4550 Sommaire I. Objec

Tutorial d’utilisation USB avec un microcontrôleur PIC18F4550 Sommaire I. Objectif II. Norme USB III. PIC18F4550 IV. Pilote et firmware USB de Microchip V. Bootloader VI. Software PC VII. Firmware PIC VIII. Exemple IX. Conclusion I. Objectif L’objectif de ce tutoriel est de faire une méthode pas à pas pour utiliser une liaison USB dans un projet électronique. Nous utiliserons ici un microcontrôleur PIC de Microchip qui intègre la norme USB. Nous utilisons le 18F4550 mais il en existe d’autres, plus compacts. II. Norme USB Ici nous n’expliquerons pas le fonctionnement de l’USB mais plutôt les divers modes de communication proposés par ce bus : - communication CDC (convertisseur USB-série) - communication HID (human interface device) - communication mass Storage - communication générique (transfert brut des données) CDC : Le mode CDC sert à émuler un port série donc l’ordinateur voit le périphérique comme un port série et le dialogue se réalise comme tel avec les mêmes bibliothèques qu’un port série. HID : Ce mode est utilisé pour les souris, claviers et autres périphériques basse vitesse à transferts de données faibles. Mass Storage : Mode utilisé pour les clés USB et autres périphériques de stockage. Générique : Mode utilisé dans ce tutoriel, il permet une vitesse maximum de 480 Mbits/s, 12 Mbits/s, 2 Mbits/s. Les bibliothèques fournies avec ce mode nous permettent de donner la quantité d’information à envoyer dans un temps que l’on peut fixer. III. PIC18F4550 Le PIC intègre l’USB et Microchip fournit tout un panel d’outils pour utiliser ce mode de communication. Le 18F4550 comporte 40 broches, il est composé de CNA, de CAN, de ports série, d’un 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 l’environnement 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 d’applications 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 microcontrôleur et un dossier pour le PC. Ce qui concerne le microcontrôleur se résume à un Bootloader, un exemple de communication CDC, d’un exemple de communication HID, d’un exemple de programme basique utilisé avec le Bootloader et d’un exemple de communication générique. Le dossier PC comporte les drivers de l’USB lorsqu’on branche le microcontrôleur sur le PC, des bibliothèques pour la communication générique et des exemples de programmes sur PC, et d’un programmateur utilisé avec le Bootloader. V. Bootloader Le Bootloader est un programme résidant dans le PIC en haut de la mémoire. Il permet de mettre à jour le programme contenu dans le PIC en écrivant directement dans la mémoire sans passer par un programmateur dédié. Le Bootloader est protégé contre les écritures dans la zone réservée à son code. Nous l’utiliserons ici avec la liaison USB. Au démarrage du PIC, celui-ci scrute un bouton ; s’il est enfoncé, il passe en mode programmation, sinon il exécute le programme. En mode programmation il dialogue avec un programme du PC et efface l’ancien 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 développement de Microchip contenant un ICD2, programmateur débogueur, et une carte de développement PICDEM mais tout autre programmateur compatible avec le 18F4550 conviendra. Il faut donc mettre le microcontrôleur sur la PICDEM, brancher l’ICD2, ouvrir MPLAB, compiler le Bootloader et programmer la puce. Si vous utilisez un PIC18F2550, un 18F87J50 ou un schéma différent (oscillateur au lieu du quartz, …), il faudra modifier un peu la source du Bootloader, pour cela se servir de la doc du microcontrôleur et d’internet (site de liens en annexe). Etape 2 : Réaliser un prototype intégrant au minimum le schéma 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 l’USB et première détection. Connectez l’USB, ce qui alimente la carte. Entrez dans le mode Bootloader en maintenant enfoncé le bouton S2, puis appuyez sur S1. Normalement, Windows détecte un périphérique USB inconnu. Etape 4 : Installation du pilote. Une fenêtre Windows s’ouvre alors pour installer manuellement le pilote. Sélectionnez « Ne pas se connecter a internet » puis rechercher manuellement puis donner le répertoire 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 d’exemple : demo2 de Microchip. Avec MPLAB, ouvrir le projet demo2, le modifier si nécessaire et le compiler Rentrer dans le mode Bootloader en pressant S2 et S1 et relâcher S2 après S1. Ouvrir le logiciel \MCHPFSUSB\Pc\Pdfsusb\PDFSUSB.exe Sélectionner 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 microcontrôleur et vérifier le bon fonctionnement du programme. Etape 6 : Créer un programme sur PC en utilisant les bibliothèques fournies par Microchip ou les bibliothèques de liaison série standards. Etape 7 : Créer votre propre programme en vous inspirant de l’exemple « démo », CDC ou HID pour le dialogue USB. VI. Software PC Il est maintenant nécessaire 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 l’on appuis sur un bouton a l’écran et un voyant qui s'allume sur votre fenêtre lorsque vous mettez a un une broche du microcontrôleur. Nous avons utilisé l’environnement de delphi6 (langage pascal) pour réaliser notre programme mais il est possible de le créer sous n’importe quel autre langage. Les bibliothèques 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 bibliothèque qui interprète la dll (fournit en annexe). Pour les autres langages la façon de l’utiliser dépend 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 reçut 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 périphériques connecté et retourne 0 si elle n’en 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 données Exemple d’utilisation : // 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 d’envoi send_buf[0] := STOP; // nom de la commande à envoyer send_buf[1] := 2; // longueur de l’émission 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 opérations ce fera de la même manière, ce qui diffère ce sont les commandes, les donnés à envoyer, à recevoir. Un exemple plus complet est donné plus loin. VII. Firmware PIC Pour programmer le PIC18F4550 nous utilisons l’environnement de programmation MPLAB de Microchip. VIII. Exemple IX. Conclusion X. Annexe uploads/Management/ tutoriel 1 .pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 09, 2021
  • Catégorie Management
  • Langue French
  • Taille du fichier 0.2037MB