PulseGenerator : Developpement cote PIC

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Aller à la navigationAller à la recherche



Introduction

Afin de développer la partie IHM du projet, le choix d'un microcontrôleur (MCU) 32 bits, c'est vite imposé, pas tant pour la puissance de calcul, mais plutôt pour les possibilités d'évolution du système. En effet, un des buts du projet étant basé sur la veille technologique, et même si dans un premier temps les fonctions avancées ne seront pas abordées, nous pourront en fonction des attentes, motivations et implications de chacun, faire évoluer notre IHM par un apprentissage progressif des interfaces du MCU.

Documents réalisés dans le cadre de ce projet

Cartes PIC32 :

Les cartes de développement en cours d'essais pour l'implémentation du firmware sont:


Communication avec le PC

La communication avec le PC se fait à l'aide du protocole descriptif SCPI, formé par des chaînes de caractères ASCII.

La liaison avec le PC passe par la puce FTDI et tout se passe sous la forme d'une connexion série, configuration à 9600 N 8 1.

Protocole SCPI

Les commandes disponibles depuis un terminal série sont:

  • "*IDN?\r\n" ..... : demande de lecture du firmware
  • "SPIx1 xxx\r\n"  : écriture d'un octet (0 < "xxx" < 255) sur la liaison SPI
  • "SPIx6 xxx\r\n"  : écriture de 6 octets (0 < "xxx" < 255) sur la liaison SPI
  • "ERROR?\r\n"  : demande de retour de l'état du status du Firmware
  • "ERROR CLR\r\n" : demande d'effacement du status "REPORT_AN_ERROR" du Firmware
 "*IDN?" TODO --> instruction qui demande à la carte PIC de renvoyer sa chaîne d'identification,
   Retour typique: la réponse du PIC au PC est alors "RdE,Pulse Generator,PG01,V.01.00"
   La chaîne d'identification contient des champs séparés par des virgules:
   . champ 1: nom du fabricant → ici "RdE"
   . champ 2: numéro du modèle → ici "Pulse Generator"
   . champ 3: numéro de série → ici "PG01"
   . champ 4: version → ici "V.01.00"


Firmware USB Host

Celui-ci a été choisi parmi les démos de la libraire MLA de Microchip pour ça fonctionnalité, et c'est greffé dessus les autres fonctions dont nous avions besoin pour cette partie du développement.

USB Device CDC vs UART

Validation du choix du type de firmware à implémenter, voir la gestion du projet.

La mise en oeuvre de l'USB Device CDC comme firmware du microcontrôleur semble marquer des points en terme de performance, mais il y a une chose que nous n'avons pas encore aborder pour ce projet, c'est le souhait d'avoir un firmware USB de type Host afin de pouvoir lire et écrire sur une clef USB.

Comme nous ne pouvons pas implémenter simultanément le mode Host et le mode Device, nous choisirons le premier pour conserver cette option dans notre proto, ce qui implique que l'interface avec le PC se fera par l'intermédiaire de la puce FTDI.

Tout est une question de compromis et comme la communication entre l'interface PC et le Pulse Generator ne servira que pour la configuration et le monitoring de ce dernier, la vitesse de transmission n'est ici pas critique. Nous aurons donc deux USB, l'un "Device" via la puce FTDI pour échanger avec le PC et l'autre "Host" pour le stockage sur clef amovible permettant à plusieurs utilisateurs d'utiliser l'instrument avec une configuration simplifiée et personnalisée.

Pour aller plus loin: "Donner un sens au standard USB"

Fichier de configuration XML

Afin de pouvoir transportez le fichier de configuration de l'instrument "PulseGenerator" pouvant être généré par exemple par une application PC, voir un simple traitement de texte, soit un fichier stocké sur une clef USB et pouvant être interprété par le firmware du microcontrôleur, nous avons du choisir entre plusieurs formats de fichier.

Le choix du format XML pour le fichier de config c'est justifié par :

Il existe de nombreuses solutions permettant le développement de fichiers XML. Vous pouvez par exemple utiliser "Editix", dont il existe une version gratuite limitée en fonctionnalités mais néanmoins déjà très complète, voir Editix Lite.

Exemple de fichier de configuration

<?xml version="1.0" encoding="UTF-8"?>
ou
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!-- Fichier de configuration du Pulse Generator -->
<pulsegenerator>
    <channels>
        <author>A. Biganzoli</author>
        <datetime>23/05/2014 09:30</datetime>
        <channel number="1">
            <name>Output 1</name>
            <trigger>
                <mode>single</mode>
                <source>external</source>
                <level>rising</level>
            </trigger>
            <delay unit="us">10</delay>
            <pulse unit="us">100</pulse>
        </channel>
    </channels>
</pulsegenerator>


Celui-ci devra être sauvegardé avec le nom suivant PG{aaaammqq}T{hhmi}.xml, ex: PG20140523T0930.xml (réf: représentation numérique de la date et de l'heure

TODO: définir l'ensemble des balises (exemple de possibilité Triggering)

TODO: faire un fichier (interne) de définition DTD


Communication SPI avec le CPLD

La communication avec le CPLD se fait à l'aide d'une liaison SPI 8 bits, dont le PIC est le maître.

Les signaux SPI sont câblés de la façon suivante, Module SPI1 du PIC32 sur le connecteur Pmod JD :

Signaux SPI PIC32 Signal Name Connecteur Pmod
SS SS1/IC2/RD9 JD-01
MOSI SDO1/OC1/INT0/RD0 JD-02
MISO T5CK/SDI1/RC4 JD-03
SCLK SCK1/IC3/PMCS2/PMA15/RD10 JD-04


Explorer le projet PIC avec MPLAB® X IDE

Ouverture du projet :

Une fois l'environnement MPLAB® X ouvert, cliquez sur l'icône "Open Project"

Visualiser les tâches a faire ou en cours :

Pour afficher les tâches, allez dans le menu Window > Tasks [Ctrl+6]

Voir "Tasks Tab" et "Tasks List" sur le Wiki de Microchip

Visualiser et parcourir les fonctions du projet :

MPLAB® X vous permet de naviguer à travers les fonctions de manière graphique, pour cela vous devez par exemple faire un clic droit sur le nom d'une fonction, ici le "main", et choisir dans le menu contextuel "Show Call Graph"