Interface USB avec microcontrôleur PIC avec code
INTERFACE USB avec MICROCONTRÔLEUR PIC: Le but de cet article est de construire un concept d’interface USB avec le microcontrôleur PIC. Le programmeur est utilisé pour la première fois pour charger le code dans le microcontrôleur et après cela, nous pouvons directement charger le code dans le microcontrôleur via ce circuit plus simple. PIC18F2550 et PIC18F4550 sont célèbres pour leur module USB.
Table des Matières
USB (bus série universel)
C’est la connexion la plus utilisée pour connecter un ordinateur à différents périphériques tels que des appareils photo numériques, des imprimantes, des scanners et des disques durs externes, etc.
VITESSES DE TRANSFERT USB
USB 1.0 Prend en charge les taux de transfert de données de:
- 5 Méga bits par seconde Mbps (basse vitesse), utilisé pour les périphériques d’entrée humains, par exemple clavier, souris, joysticks, etc.
- 2 Mbps (haute vitesse) utilisé pour les imprimantes, les scanners, etc.
USB 2.0 connu sous le nom d’USB haute vitesse et capable de supporter un taux de transfert allant jusqu’à 480 Mbps.
USB 3.0 Également connu sous le nom d’USB ultra-rapide et prend en charge des taux de transfert allant jusqu’à 5,0 gigabits par seconde (Gbps).
USB 3.1 Également connu sous le nom de super speed + et capable de prendre en charge des taux de transfert allant jusqu’à 10 Gbps.
USB Type-C Sa fiche se connecte à la fois aux « hôtes et aux périphériques ».
Sortie USB:
Les principales étapes de ce projet sont:
Étape #1 Génération d’horloge
Étape #2 Constructions de circuits
Étape #3 Programmation du Microcontrôleur
Étape #4 Gravure du code dans le Microcontrôleur
Étape #5 Pilotes de périphériques
Étape #6 Fonctionnement du circuit
GÉNÉRATION D’HORLOGE pour USB interface avec le microcontrôleur pic
P18F2550 / 4550 prend en charge la basse vitesse (1,5 Mo / s) et la pleine vitesse (12 Mo / s), donc pour l’USB, nous devons sélectionner une horloge spécifique. Une horloge interne de 6 MHz ou 48 MHz est requise en raison de l’exigence de synchronisation imposée par USB.Mais il y a un problème dans l’utilisation du cristal de 48 MHz. Ce cristal est d’un coût élevé et il crée également du bruit. Puisque plus le cristal est élevé, plus le bruit sera important.Il existe de nombreux choix pour répondre à l’exigence d’horloge du module USB qui offrent toujours une flexibilité pour l’horloge du reste de l’appareil à partir de la source d’oscillateur primaire.Ici, l’oscillateur à cristal utilisé avec le PIC18F4550 pour l’interface USB est un oscillateur à cristal de 20 MHz. Il est utilisé pour l’oscillation interne du microcontrôleur et il est connecté sur 13 et 14 broches du MCU.
PARAMÈTRES DES BITS DE CONFIGURATION POUR l’interface USB avec microcontrôleur pic
Dans le cas d’un cristal de 20 MHz:
- Réglez la « Sélection de l’oscillateur » sur HSPLL. Cela donnera 20 MHz à l’entrée de « l’oscillateur primaire »
- Réglez la « sélection de prescaleur PLL » sur 5, nous obtenons donc 4 MHz qui sont multipliés par 24 pour obtenir les 96 MHz pour USB
- Réglez la « sélection d’horloge USB » à 96 MHz divisée par 2
- Réglez la « sélection de postscaleur d’horloge système » à 96 divisée par deux.
Enfin, la fréquence de l’oscillateur est réglée sur 48 MHz. (96 MHz / 2 = 48 MHz
Circuit d’interface USB avec microcontrôleur pic
Réalisez le schéma de circuit comme indiqué dans le schéma:
- La tension d’entrée d’un microcontrôleur PIC18F4550 ne doit jamais dépasser 5 V.
- L’oscillateur à cristal utilisé est un oscillateur à cristal de 20 MHZ qui est connecté sur 13 et 14 broches.
- 11e et 32e broches courtes ensemble à 5v, de même 12e et 31e broches à GND. Mais ici, MCU a construit des connexions.
- Les deux LED sont sur RD0 et RD1 et une résistance de 1 kΩ est ajoutée à chaque LED. Ils sont utilisés à des fins de communication uniquement pour voir que la communication USB existe.
- Par ce circuit d’interface USB, nous allons contrôler 2 broches, RD2 et RD3.
- Un interrupteur est destiné au bouton de réinitialisation et est connecté à la broche 1.
- L’autre commutateur est pour le chargement de démarrage connecté à la broche 37.
Les LED allumées (RD2, RD3) sont utilisées comme broches de contrôle, mais ces broches de contrôle peuvent également être utilisées pour contrôler d’autres choses. Il peut facilement s’interfacer avec le pilote de moteur L293D, le moteur à courant continu, le moteur pas à pas, les commutateurs de relais, le servo, etc.
Schéma sur Proteus
PROGRAMMATION DU MICROCONTRÔLEUR PIC
Le code d’interface USB avec le microcontrôleur est donné ci-dessous. Mais pour utiliser ce code, vous devez également ajouter un pilote de périphérique. Avant d’utiliser ce code, l’utilisateur doit créer un pilote de périphérique USB en allant dans outils de Mikro C pour pic, puis cliquer sur le terminal HID et générer un descripteur.c fichier et collez ce fichier dans votre dossier de code principal.
unsigned char readbuff absolute 0x500; // Buffers should be in USB RAM, please consult datasheetunsigned char writebuff absolute 0x540;char cnt;char kk;void interrupt(){ USB_Interrupt_Proc(); // USB servicing is done inside the interrupt}void main(void){ ADCON1 |= 0x0F; // Configure all ports with analog function as digital CMCON |= 7; // Disable comparators HID_Enable(&readbuff,&writebuff); // Enable HID communication while(1){ while(!HID_Read()) ; for(cnt=0;cnt<64;cnt++) writebuff=readbuff; while(!HID_Write(&writebuff,64)) ; }}
Le code du micro-contrôleur est écrit avec un logiciel spécial qui a son propre langage de programmation similaire à C, par exemple: mplab, logiciel microC. Le code est ensuite compilé dans une sortie respective. Dans ce processus, le « .un fichier « hex » est généré qui doit être brûlé / fusible dans le microcontrôleur.
GRAVURE DU CODE DANS LE MICROCONTRÔLEUR
La sortie chargée dans l’EPROM du microcontrôleur s’appelle le firmware. Nous avons besoin d’un matériel spécial pour fusionner ce code de sortie (fichier hexadécimal) dans le MCU. Le programmeur JDM est un exemple d’un tel périphérique utilisé pour charger le fichier hexadécimal sur le MCU. Il est facile à fabriquer et bon marché.Après le chargement, retirez le PIC18F4550 du programmeur (chargement du code hexadécimal pour la 1ÈRE fois) et insérez-le de nouveau dans le circuit d’interface USB.Après cela, nous devons fournir le chauffeur.
Nous n’avons pas à suivre cette étape (utilisation du programmeur) à chaque fois pour charger le firmware (fichier hex). Une fois le firmware de base chargé dans la puce, nous pouvons mettre à jour le fichier hexadécimal de sortie directement avec le circuit de développement d’interface avec le logiciel smallbootloading.
PILOTES DE PÉRIPHÉRIQUES POUR l’interface USB avec microcontrôleur pic
Connectez le câble USB de l’ordinateur à l’interface USB. Même après avoir terminé le circuit et aussi la programmation dans le microcontrôleur, il ne commencera pas à fonctionner correctement. Comme nous le savons, une nouvelle installation matérielle nécessite que le pilote pour Windows soit détecté par le système.
Pour l’installation du pilote et l’opération de démarrage, nous devons télécharger et installer USB MICROCHIP FRAMEWORK à partir du site Web de microchip.
FONCTIONNEMENT DU CIRCUIT de l’interface USB
Pour démarrer le circuit, nous devons l’initialiser en mode BOOTLOAD. Dans le circuit d’interface USB, comme déjà expliqué, il y a deux boutons, l’un est le bouton Set et l’autre est le bouton BOOTLOAD.
- MAINTENEZ le bouton SET enfoncé
- Maintenez la RÉINITIALISATION enfoncée, puis appuyez une fois sur le bouton de chargement
- Puis relâchez les deux boutons.
- La fenêtre détectera alors le matériel USB PICI8F4550 et demandera des pilotes pour ce circuit / carte PIC18F4550.
- Si la fenêtre ne demande pas de pilotes, il peut y avoir des problèmes avec le circuit.
- Supposons que les pilotes de ce périphérique USB se trouvent dans
C:\MCUSB\MCUSB Driver\Debug
Lorsque Windows demande des pilotes, accédez à la recherche manuelle des pilotes et accédez au dossier d’emplacement de mention ci-dessus pour les pilotes.Une fois les pilotes installés, Led1 et Led 2 (connectées sur RD0 et RD1) commenceront à clignoter alternativement, ce qui signifie que notre circuit USB communique parfaitement avec notre PC.Une fois les pilotes installés, chaque fois que nous connectons ce circuit à notre ordinateur, nous n’avons pas besoin d’appuyer sur les boutons de réinitialisation ou de chargement et les LED commenceront à clignoter alternativement.Maintenant, la carte de circuit d’interface USB est prête et nous pouvons CHARGER notre propre fichier hexadécimal dans la puce Directement à partir de la CARTE USB (sans programmeur JDM).
Il n’est pas nécessaire d’utiliser un programmateur (circuit de brûleur) pour graver le micrologiciel (fichier hexadécimal) dans le PIC18F4550. Le programmeur JDM est utilisé uniquement pour la première programmation du code et pour les autres étapes, nous pouvons utiliser un logiciel de chargement de démarrage pour graver le nouveau code directement du circuit d’interface USB vers le MCU. Ce MCU peut être utilisé pour d’autres circuits spécifiques pour lesquels le code de sortie a été conçu.