Guide complet du module USB sur microcontrôleur PIC18F4550

Envoyé par Javi et classé dans Électronique

Écrit le en français avec une taille de 26 KB

Caractéristiques du module USB

Taux de transfert : Peut être à faible vitesse (1,5 Mb/s) ou haute vitesse (12 Mb/s).

  • Interruptions : Chaque transmission ou réception de données sur le bus génère une interruption vers le PIC. La routine de service doit gérer les aspects de bas niveau de la spécification USB, rendant le protocole de manipulation transparent pour l'application de base.
  • Points de terminaison (Endpoints) : Permet d'utiliser jusqu'à 32 points de terminaison (16 bidirectionnels), bien que seuls trois soient généralement utilisés (0, 1 et 2). Un point de terminaison est une mémoire tampon stockant les données. Chaque point possède un identifiant unique et une direction de flux (IN/OUT). Le point 0 est obligatoire pour la configuration.

Gestion de la mémoire

Le module dispose d'une mémoire RAM à double accès de 1 Kbyte. Lorsque le module USB est désactivé, ces banques sont utilisées comme mémoire de données générale. Lorsqu'il est activé, cette mémoire est allouée comme tampon pour le mode USB, partagée entre le cœur du microcontrôleur et le moteur d'interface série (SIE).

SIE (Serial Interface Engine)

Le SIE est responsable de la génération du CRC, de la synchronisation des signaux D+ et D-, et de la communication entre le module et le PIC. Il peut être relié directement à l'USB via l'émetteur-récepteur interne ou via un transmetteur externe.

Configuration du module

USBEN : Ce bit (situé dans le registre UCON<3>) active ou désactive le module USB. Il contrôle également le régulateur de tension interne et les résistances de pull-up.

Réglage de la fréquence d'horloge

Pour la communication USB, la configuration de la fréquence est cruciale. Selon le mode (basse ou haute vitesse), le module nécessite 6 ou 48 MHz. Pour une configuration USB 2.0 avec un cristal de 4 MHz, le système utilise le Prescaler PLL et le diviseur PLLDIV pour atteindre les 48 MHz requis.

Z

Le système permet d'utiliser divers cristaux (4, 8, 12, 16, 20, 24, 40 ou 48 MHz). Il est possible d'avoir une fréquence USB à 48 MHz tout en faisant fonctionner le programme du PIC à une fréquence différente (ex: 12 MHz).

Transmetteur et régulateur

  • Émetteur interne : Contrôlé par le bit UTRDIS (UCFG<3>), activé par défaut.
  • Émetteur externe : Utilisé lorsque les conditions physiques imposent un éloignement du SIE. Activé via UTRDIS = 1.
  • Régulateur interne : Le PIC18F4550 intègre un régulateur 3,3 V pour l'émetteur. Il nécessite un condensateur externe de 220 nF (± 20%).

Vitesse du bus et résistances

Le mode de vitesse est géré par le registre UCFG. Le bit FSEN (UCFG<2>) permet de basculer entre le mode pleine vitesse (48 MHz, pull-up sur D+) et basse vitesse (6 MHz, pull-up sur D-).

Interruptions USB

Le PIC18F4550 gère les interruptions via plusieurs registres :

  • PIR2 : Contient le drapeau d'interruption (USBIF).
  • PIE2 : Contient l'autorisation d'interruption (USBI).
  • IPR2 : Définit la priorité (USBIP).

Note : Une fois qu'une interruption est déclenchée, le drapeau doit être effacé par logiciel en écrivant '0'.

Contrôle des points de terminaison

Les échanges entre l'hôte et le périphérique se font via des pipes (tubes). Chaque point de terminaison possède un registre de contrôle UEPn :

  • EPHSHK (UEPn<4>) : Active le protocole d'échange (handshake).
  • EPCONDIS (UEPn<3>) : Active/désactive les opérations de contrôle (SETUP).
  • EPINE (UEPn<1>) et EPOUTEN (UEPn<2>) : Autorisent les transactions d'entrée et de sortie.

Entrées associées :