USB bus communication circuit diagramFigure 1: Schéma du circuit de communication USB

De nombreux ordinateurs, en particulier ceux qui sont portables, n’ont plus de port série (port COM). Lorsqu’une connexion à un ordinateur personnel (PC) est requise, l’USB est le choix. Le bus USB (Universal Serial Bus) est aujourd’hui l’interface largement utilisée dans les produits de consommation électroniques. La plupart des appareils électroniques ont au moins un port USB sur eux, y compris les ordinateurs personnels, les appareils photo, les appareils GPS, les imprimantes et ainsi de suite. Certains microcontrôleurs PIC18 supportent directement l’interface USB. Les microcontrôleurs 16 bits (PIC24) et 32 bits (PIC32) ont également une interface USB intégrée. Dans cet article, nous allons apprendre comment une communication entre un ordinateur personnel hôte et un microcontrôleur peut être réalisée avec un bus USB.

La figure 1 ci-dessus montre une connexion typique de PIC18F4550 à un ordinateur.
Les broches PORTC RC4 (broche 23) et RC5 (broche 24) sont utilisées pour l’interface USB. RC4 est la broche des données USB D- et RC5 est la broche des données USB D+.
La puissance maximale disponible de l’ordinateur vers un périphérique USB externe est limitée à environ 100 mA à 5,0 V, c’est une fonctionnalité intéressante qui peut également être utilisée pour alimenter un microcontrôleur plutôt que d’utiliser une alimentation externe.

Avantages de la communication USB

  • L’USB est une interface série à haute vitesse qui peut également alimenter les périphériques qui y sont connectés. Cela réduit le coût en raison de l’alimentation supplémentaire pour les petites applications.
  • Plug and play, connexion simple.
  • Un bus USB prend en charge jusqu’à 127 périphériques (limité par le champ d’adresse à 7 bits, notez que l’adresse 0 n’est pas utilisée car elle a une fonction particulière: 27 -1 = 127) connectée via un câble série à 4 fils (2 lignes de données et 2 lignes de source d’énergie). La distance peut aller jusqu’à trois ou même cinq mètres de longueur.
  • De nombreux périphériques USB peuvent être connectés au même bus avec des concentrateurs USB.
  • Interface facile à l’ordinateur et autres appareils.
  • Haute vitesse: USB 1.0 Faible vitesse 1,5 Mbit / sec et pleine vitesse 12 Mbit / sec.
    USB 2.0 haute vitesse 480 Mbit /sec a été introduit et récemment, USB 3.0 Super vitesse 5 Gbit / sec. Le microcontrôleur PIC18F4550 contient une interface USB compatible à pleine vitesse et basse vitesse (USB 1.0) qui permet une communication rapide entre un ordinateur hôte et le microcontrôleur.

Paramètres et configurations d’horloge

Un câble USB utilise quatre fils:
Données +: Fil vert
Données -: Fil blanc
+ 5V: Fil rouge et
Masse: fil noir.

La famille PIC18F2455/2550/4455/4550 intègre un oscillateur et un système d’horloge à microcontrôleur différents de ceux des précédents dispositifs PIC18F grâce au module USB. Le module USB nécessite une source d’horloge stable et doit être compatible avec les spécifications USB basse vitesse et pleine vitesse.

Pour répondre à ces exigences, le PIC18F2455/ 2550/4455/4550 inclut une nouvelle branche d’horloge pour fournir une horloge à 48 MHz pour un fonctionnement USB à pleine vitesse. Comme il est entraîné à partir de la source d’horloge primaire, un système additionnel de préscalers et de postscalers a été ajouté pour accommoder une large gamme de fréquences d’oscillateur.

Si l’horloge est à 6MHz, alors nous travaillons à basse vitesse, si c’est 48MHz alors nous travaillons à haute vitesse. Une boucle à verrouillage de phase intégrée (PLL: Phase Locked Loop) à l’intérieur du module d’oscillateur nous permet d’augmenter la fréquence à 48MHz à partir d’une fréquence basse de 4MHz, 8MHz et ainsi de suite.

Oscillator Block diagramFigure 2: Diagramme de l’oscillateur

Comme on peut le voir sur la figure 2 ci-dessus, en réalité cette PLL convertit une horloge à 4 MHz en horloge à 96 MHz, et ensuite vous pouvez la diviser par 2 pour obtenir votre 48MHz.

Plus d’informations peuvent être trouvées sur la fiche technique du PIC18F4550.

Afin de régler la fréquence d’horloge de 48MHz dans mikroC Pro, démarrez simplement un nouveau projet, puis ouvrez le menu Projet, puis cliquez sur Edit Project pour ouvrir la fenêtre Edit Project.
Sélectionnez les valeurs appropriées surlignées en rouge sur la figure 3 ci-dessous:

Edit ProjectFigure 3: Modifier le projet

  • Comme le montre la figure 3 ci-dessus, le circuit PLL devrait prendre une horloge de 4MHz, si nous utilisons un cristal 4MHz, alors nous n’avons pas besoin de diviser quoi que ce soit. Si notre cristal est à 8 MHz comme dans ce cas, dans la sélection Prescaler, sélectionnez diviser par 2 (8/2 = 4MHz) comme indiqué sur la figure 3 ci-dessus.
    Si l’horloge est à 20 MHz, divisez par 5 (20/5 = 4 MHz) et ainsi de suite.
  • Comme la sortie du circuit PLL génère un 96 MHz, nous devons le diviser par 2 pour obtenir 48 MHz. Dans la sélection de l’horloge du système, sélectionnez 96MHz PLL Src: / 2.
  • Dans la sélection de l’horloge USB, sélectionnez la source d’horloge USB qui provient de la division PLL de 96 MHz par 2.
  • Assurez-vous que la fréquence de votre oscillateur est de 8 MHz et modifiez votre sélection d’oscillateur pour qu’elle soit oscillateur HS (HS).
  • Assurez-vous que votre régulateur de tension USB est activé. Cela activera le régulateur de tension USB 3.3V intégré et il est très important pour votre communication USB. Vous devez donc permettre à votre PIC de générer le 3.3V ou de le fournir par vous-même mais attention, une fois que vous avez activé votre PIC pour générer 3.3V, vous devez connecter un condensateur à la broche Vusb et à la masse (cette valeur de condensateur est de 200nF à 470nF: C3 sur la figure 1)

Classes de périphériques USB

La fonctionnalité des périphériques USB est définie par des codes de classe. Les classes de périphériques permettent d’utiliser le même pilote de périphérique pour plusieurs périphériques ayant des fonctionnalités similaires, ce qui permet à l’hôte USB de charger le pilote logiciel approprié pour chaque périphérique connecté. Cela permet l’adaptabilité et l’indépendance de l’hôte par rapport à l’appareil pour prendre en charge de nouveaux périphériques de différents fabricants.

Les classes USB les plus courantes sont données dans le tableau 1 ci-dessous:

Classe de périphérique La description Exemple
0x00 Réservé
0x01 Périphérique audio USB Carte son. haut-parleur, microphone
0x02 Périphérique de communication USB Modem, fax, adaptateur ethernet
0x03 Dispositif d’interface utilisateur USB (HID) Clavier, souris, joystick
0x06 Périphérique d’image USB Scanner
0x07 Périphérique d’imprimante USB Imprimante
0x08 périphérique de stockage de masse USB Carte mémoire, lecteur flash, disque dur externe, appareil photo numérique
0x09 Périphérique de concentrateur USB Hubs
0x0B Lecteur de carte à puce USB Lecteur de carte à puce
0x0D Sécurité du contenu USB lecteur d’empreintes digitales
0x0E Périphérique vidéo USB Webcam
0xE0 Périphérique sans fil USB Bluetooth

                     Table 1: Les classes USB les plus courantes

Pour plus de détails sur la spécification USB, voir www.usb.org
Les classes USB qui nous intéressent actuellement sont:

Dans les prochains articles, nous allons apprendre à utiliser ces classes de périphériques USB avec MPLAB XC8, Flowcode et MikroC Pro pour PIC:

MikroC Pro pour PIC

Flowcode