Part 1 : Construire un périphérique USB avec un PIC 18F4550 |
Vous trouverez sur cette page les informations nécessaires (schémas électroniques, circuit imprimé, description du firmware) pour construire un périphérique USB (2.0 full-speed) avec les microcontrôleurs PIC 18F4550 ou 18F2550. Ces microcontroleurs sont les successeurs des 16C745 et 16C765. Ils sont extrêmement simple à mettre en oeuvre et Microchip fournit des examples de firmwares très bien documentés. Pour nos expérimentations, nous utiliserons le firmware CDC permettant d'émuler un port série mais il est également facile de construire des périphériques HID. La carte à 18F4550Voici un schéma pour le 18F4550. Il y a très peu de composants additionnels. C'est un périphérique USB auto-alimenté par le bus USB.
Rq: Je travaille avec le programmeur tiny-ICSD d'Olimex, si vous utilisez un autre programmateur , il faut retirer les diodes D1 et D2 et remplacer le connecteur de programmation.
(cliquez sur l'image pour une version haute résolution) Ce schéma est compatible avec le bootloader USB fournit par microchip. C5 vaut 470nF (c'est à dire plus que les 220nF recommandés dans le datasheet) et doit être low ESR (faible résistance série), un céramique multicouche convient parfaitement. Il ne faut pas oublier les capacités de découplage de 100nF placées au plus prés des broches d'alimentation. Voici une implémentation possible: En cliquant sur l'image vous donwloaderez un PCB en 300dpi pour vos gravure. Connectez bien votre cable USB: Noir=GND, Rouge=+5V, Vert=Data+, Blanc=Data- 4/1/2007 : IMPORTANT ERRATA. Il y a un petit bug sur le PCB. R5 doit etre connecté au +5V, pas à la masse (le schema est bon mais le PCB non) (Merci à Direk qui à vu le problème) Le logicielIl faut commencer par récupérer le MCHPFSUSB_Setup sur le site de Microchip. C'est un exécutable, il faut donc Windows pour récupérer les sources :(. Le firmware est écrit en C (compatible avec le compilateur Microchip C18). Le code est gratuit, mais pas libre.
Comme je ne peux pas distribuer le code modifié, voici quelques indications pour vos prototypes. Les sources du firmware CDC sont dans fw/cdc/MCHPUSB.mcw Commentez les lignes suivantes dans usbcfg.h : #define USE_SELF_POWER_SENSE_IO #define USE_USB_BUS_SENSE_IO
Sur le schéma présenté, les LED systèmes sont sur le port B. Il est donc utile de modifier io_cfg.h
#define mLED_1 LATBbits.LATB0 #define mLED_2 LATBbits.LATB1 #define mLED_3 LATBbits.LATB2 #define mLED_4 LATBbits.LATB3 Placez vos applications perso dans user.c. Comme exemple vous pouvez regardez le fonctionnement de la fonction Exercise_Example() dans user.c. Les fonctions utiles sont getsUSBUSART() (reception de données) et putrsUSBUSART() (envoie de données) Pensez bien à vérifier l'état de mUSBUSARTIsTxTrfReady() avant d'envoyer des données. D'autres exemples sont dans le répertoire exercice. Par exemple la fonction suivante (à appeler dans user.c) permet d'allumer ou d'éteindre la LED 4 en pressant la touche 1 dans le terminal.
void Exercise_03(void){
Sous windows vous devez installer le driver fournit et vous pouvez utiliser hyperterminal comme émulateur de terminal (configurer les communications à 19200bd avec un quartz 20MHz si vous ne modifiez pas le code). Sous linux il faut s'assurer que le module cdc-acm se charge bien, un périphérique /dev/ttyACM0 doit apparaitre.
Aide et discussionsVenez discuter sur le forum electronicfr. AvertissementL'ENSEMBRE LES INFORMATIONS DES CE SITE EST FOURNI « EN L'ÉTAT » ET SANS GARANTIE SPÉCIFIQUE OU IMPLICITE, Y COMPRIS, ET C'EST UNE LISTE NON EXHAUSTIVE, LES GARANTIES IMPLICITES DE QUALITÉ COMMERCIALE OU D'ADÉQUATION À UN OBJECTIF PARTICULIER.A venirVous trouverez bientôt sur ce site des exemples de montages avec le 18F4550 dont bientôt un convertisseur USB<->serie.
|
||||||||||||||||||||||||||||||||||||||
mXcomment 1.0.5 © 2007-2008 - visualclinic.fr
License Creative Commons - Some rights reserved
| Suivant > |
|---|







