Microchip Harmony : Demo USB CDC

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Révision datée du 1 décembre 2016 à 03:43 par Arnauld.biganzoli (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Universal Serial Bus (USB)

Le microcontrôleur P32MX695F512L sur la carte chipKIT WF32 contient un contrôleur USB 2.0, Full Speed et On-The-Go (OTG). Ce contrôleur offre les fonctionnalités suivantes:

  • Prise en charge de l'hôte et du périphérique USB à pleine vitesse.
  • Support d'hôte à faible vitesse.
  • Prise en charge USB OTG.
  • Mise en mémoire tampon de point final n'importe où dans la RAM système.
  • DMA intégré pour accéder à la RAM du système et à la mémoire Flash.

Introduction à l'USB


Démo d'une liaison série par USB (CDC) sur la carte chipKIT™ WF32™

Configuration du matériel

Modifier la configuration du jumper "VU SELECT" (J15- Power Select Jumper) afin d'alimenter la carte depuis le connecteur micro USB (ce dernier est placer sous le connecteur USB A à droite de la carte), placez le cavalier sur la position "USB".

Ouvrir le projet Harmony

C:\microchip\harmony\v2_01b\apps\usb\device\cdc_com_port_single\firmware

--> ne pas oublier de sélectionner la carte "chipkit_wf32" depuis la liste "Set Project Configuration"

Tester le programme

Une fois la carte connecté au PC via un câble USB micro USB et le projet chargé sur la carte :

  • le firmware se comportera de manière identique à ce que nous avions réalisé précédemment
  • et une action sur le bouton "BTN3" enverra sur le terminal le message "\r\nPUSH BUTTON PRESSED"


Vous pouvez également utiliser la fonction printf() dans votre programme. Pour cela il vous faut associer l'UART à la sortie standard STDOUT de la librairie stdio.h, voir (XC32) How do I instruct printf to output to UART1 or other UART channels instead of UART2?


Partir d'un projet existant pour réaliser son propre projet

Voir "Migrating a Harmony Project to New Hardware Platform".

Afin de visualiser une courbe sur le moniteur série en Python, nous vous proposons d'implémenter la génération d'un signal en dans de scie à partir du Timer 2.

La période du Timer sera dans un premier temps de 100 ms (la fréquence du microcontrôleur est de 80 MHz pour FSYS et PBCLK) et les données transmises au PC seront comprise entre 0 et 1023.

Chaque nombre, composé de plusieurs chiffres codés en ASCII, se terminera par un caractère '\n' afin de séparer chaque valeur numérique.

Exemple : ..., "1022\n", "1023\n", "0\n", "1\n", ...

Py traceur serie.png


Avant de modifier un projet existant dans les exemples fournit, il est préférable de travailler sur une copie de celui-ci sans modifier l'emplacement du dossier dans l'arborescence.


Mchp mhc cdc com port single waveform 01.png
Mchp mhc cdc com port single waveform 02.png
Mchp mhc cdc com port single waveform 03.png
Mchp mhc cdc com port single waveform 04.png
Mchp mhc cdc com port single waveform 05.png
Mchp mhc cdc com port single waveform 06.png
Mchp mhc cdc com port single waveform 07.png
Mchp mhc cdc com port single waveform 08.png
Mchp mhc cdc com port single waveform 09.png
Mchp mhc cdc com port single waveform 10.png
Mchp mhc cdc com port single waveform 11.png
Mchp mhc cdc com port single waveform 12.png


Copier le nom de la fonction "DRV_TMR0_Start" :

Mchp mhc cdc com port single waveform 13.png

Puis coller celui-ci dans le fichier "app.c" ;

Mchp mhc cdc com port single waveform 14.png
Mchp mhc cdc com port single waveform 15.png
Mchp mhc cdc com port single waveform 16.png
Mchp mhc cdc com port single waveform 17.png
Mchp mhc cdc com port single waveform 18.png
Mchp mhc cdc com port single waveform 19.png
Mchp mhc cdc com port single waveform 20.png


Numéro de série pour votre périphérique USB CDC

Ajouter un identifiant dans les propriétés du pilote USB à votre carte électronique afin qu'elle soit toujours reconnu sous le même numéro de port COM.

Voir "Formation PIC -annexe- Serial Number for USB CDC".

Mchp mhc cdc com port single waveform 21.png
Mchp mhc cdc com port single waveform 22.png