Ordinateurs

Comment envoyer et recevoir des données de l’UART dans dspic30f et dspic33f

L’auteur a terminé son projet d’ingénierie de dernière année avec les microcontrôleurs dsPic, acquérant ainsi une connaissance approfondie de ces dispositifs.

Suivez ce didacticiel pour apprendre à établir la communication entre votre microcontrôleur et votre PC.

Suivez ce didacticiel pour apprendre à établir la communication entre votre microcontrôleur et votre PC.

UART est le protocole de communication le plus couramment utilisé dans les microcontrôleurs en raison de sa simplicité, de sa mise en œuvre facile et de sa configuration matérielle minimale.

Ce didacticiel et cet exemple d’implémentation de code vous guideront tout au long du processus d’établissement d’une communication UART réussie entre un microcontrôleur dspic et un PC.

Module convertisseur USB vers TTL PL2302.

Module convertisseur USB vers TTL PL2302.

Choses nécessaires pour la communication UART

La première étape devrait être de rassembler toutes les choses nécessaires à la communication UART. La liste ci-dessous résume ces exigences matérielles et logicielles :

1. Logiciel de communication UART pour PC

  • Option 1: Je préférerais l’IDE Arduino à cet effet. L’IDE Arduino dispose d’un moniteur série qui peut être utilisé pour surveiller les données envoyées par le microcontrôleur. Il dispose également d’un excellent moniteur graphique pour tracer les données reçues. Le même IDE peut également être utilisé pour envoyer des données série.
  • Option 2: L’outil PicKit™ dispose également d’un moniteur série pour envoyer et recevoir des données, mais il n’a pas de traceur série. Il ne prend pas non plus en charge les débits en bauds élevés jusqu’à 115 000 que l’IDE Arduino peut prendre en charge.

2. Convertisseur/émetteur-récepteur USB vers série

  • Option 1: Le convertisseur PL2302 USB vers TTL peut être très facilement utilisé comme émetteur-récepteur entre le port série USB du PC et les broches uart TX/RX du microcontrôleur. Il est très bon marché et facilement disponible sur Internet et dans les magasins d’électronique locaux (du moins dans ma région).
  • Option 2: L’outil de programmation des microcontrôleurs Pic, le PicKit™ dispose également d’un émetteur-récepteur UART intégré. L’avantage de l’utiliser est que vous n’aurez pas besoin d’acheter de matériel supplémentaire car PicKit fera le travail. (En supposant que vous l’ayez déjà puisque vous programmez les Pics.) L’inconvénient est que vous ne pouvez pas mettre le PicKit dans vos projets finis car vous pourriez en avoir besoin pour une utilisation ultérieure. Dans ce cas, le convertisseur USB vers ttl est une meilleure option.
  • Option 3 : Un circuit de conversion UART vers RS232 peut être fabriqué à l’aide de CI MAX232 et d’un câble RS232. Les circuits intégrés sont généralement bon marché, mais cela vous coûtera plus de temps pour fabriquer le circuit. C’était la solution héritée avant l’avènement des modules de conversion usb vers ttl.
A lire aussi :  4 meilleurs bureaux pour adultes

3. Microcontrôleur dsPic et son programmeur

Un appareil photo et son programmateur pour charger le code.

4. Quelques fils de connexion

Pour effectuer les connexions requises entre les broches TX/RX du microcontrôleur et le convertisseur USB vers TTL

5. Câble d’extension USB (facultatif)

Au cas où vous auriez besoin de câbler le convertisseur usb vers ttl loin de votre PC lorsque vous assemblez enfin votre projet.

Après avoir parcouru la liste des éléments requis, vous pouvez passer aux étapes 1 à 4 ci-dessous.

1. Installez le logiciel et les pilotes requis

Installez le moniteur série de votre choix sur votre PC ; comme je l’ai dit plus tôt, je préfère l’IDE Arduino.

Si vous utilisez un convertisseur USB vers TTL :

Vous devrez télécharger son pilote et l’installer avant de pouvoir faire fonctionner le module. Les pilotes sont disponibles sur le site Web de Prolific Systems et ailleurs sur Internet. Assurez-vous que les pilotes que vous téléchargez sont compatibles avec Windows 7, sinon cela ne fonctionnera pas. Recherchez un tutoriel séparé pour l’installation du pilote si vous rencontrez des problèmes.

Après avoir installé le pilote, vous devez tester le convertisseur TTL pour vous assurer qu’il fonctionne correctement. Il est recommandé de ne pas continuer avant de tester le convertisseur.

Pour tester le convertisseur :

Faites défiler pour continuer

  1. Installez d’abord le pilote requis et redémarrez le système.
  2. Branchez le module convertisseur et le PC devrait remarquer une nouvelle connexion de périphérique.
  3. Court-circuitez les broches TX et RX sur le convertisseur TTl à l’aide d’un cavalier.
  4. Ouvrez l’IDE Arduino et sélectionnez le port série correct auquel le convertisseur est connecté.
  5. Envoyez toutes les données sur le moniteur série.
  6. Si vous recevez les mêmes données envoyées dans le moniteur série, le module fonctionne correctement.
A lire aussi :  Un guide pour débutants sur les conteneurs et Docker

Si vous utilisez PicKit :

Téléchargez simplement le programme Pickit et connectez l’appareil PicKit à votre PC.

Court-circuitez les broches TX et RX avec un cavalier ou un fil pour tester le module.

Court-circuitez les broches TX et RX avec un cavalier ou un fil pour tester le module.

2. Câblez les connexions

Pour le convertisseur TTL :

Comment connecter le convertisseur USB vers TTL PL2303 avec le microcontrôleur dspic

Nom de broche sur le convertisseur Nom de broche correspondant sur le microcontrôleur

TX

RX

RX

TX

Terre

Terre, VSS

5V (facultatif)

Vdd, Vcc

  • Les noms des broches sont imprimés au dos du convertisseur.
  • Les numéros de broches exacts correspondant à leurs noms de broches doivent être trouvés dans la fiche technique à mesure qu’ils changent d’un appareil à l’autre.
  • Une alimentation 5 V ou 3,3 V du convertisseur peut éventuellement être utilisée pour alimenter le microcontrôleur.
  • Il est obligatoire de rendre la masse du contrôleur et du convertisseur commune.

Pour PicKit :

Le PicKit a un connecteur à 6 broches avec la broche numéro 1 marquée d’une flèche blanche sur l’appareil.

Numéro de broche sur l’en-tête à 6 broches Nom de broche correspondant sur le MCU

2

Vcc, Vdd

3

Terre, VSS

4

TX

5

RX

  • De plus, le schéma de câblage est également affiché dans un encart à l’intérieur de l’outil UART du PicKit.

3. Envoyer des données de dspic via UART

Après avoir câblé les connexions et testé le module TTL Converter pour vous assurer qu’il a commencé à fonctionner, téléchargez le code pour envoyer des données via UART.

  • Le texte peut être envoyé à l’aide de la fonction printf() dans la bibliothèque stdio.h.
  • Les variables peuvent être envoyées en les convertissant d’abord en tableau, puis en utilisant printf() pour les imprimer.

Exemple de code pour envoyer des données via UART

#define FCY 30000000

#include 
#include 
#include 
#include 
#include 
#include 


_FOSC(CSW_FSCM_OFF & FRC_PLL16);  // Fosc=16x7.5MHz, i.e. 30 MIPS
_FWDT(WDT_OFF);                  // Watchdog timer off
_FBORPOR(MCLR_DIS);

void UART_Init ( void )
{
    _TRISF3 = 0;           //Look for the exact TX/RX pins of your pic device
    _TRISF2 = 1;           //TX pin must be set as output port and RX input
    
    
    U1BRG = 7;             // 115000 baud rate @ 30 MIPS
    U1MODEbits.UARTEN = 1; // Enable UART
}

int main( void )
{
    UART_Init();

    while( 1 )
    {
         //To print a variable
         sprintf(array,"%d",variable);
         printf(array);
         printf("\r\n");

         //To print text
         printf("Greetings from Pakistan\r\n");

         __delay_ms(1000);
    }
}

4. Recevoir des données via UART dans dspic

Pour recevoir des données de l’UART, vous devrez utiliser une interruption de réception UART qui se déclenchera chaque fois qu’un paquet de données est reçu dans les registres de réception UART (U1RXREG). Ces données sont transférées vers une autre variable et le tampon de réception est effacé s’il est plein. Vous pouvez utiliser l’exemple de code suivant.

  • Pour s’assurer que l’interruption se déclenche réellement, une LED a été connectée au port D0 qui clignote une fois lorsque l’interruption est déclenchée.
  • Si le voyant clignote immédiatement après l’envoi de données depuis le moniteur série, supposez que le code fonctionne correctement.
  • La valeur de la variable ‘data’ peut également être vérifiée en mode débogage.

Exemple de code pour recevoir des données de l’UART

#define FCY 30000000

#include 
#include 
#include 
#include 
#include 
#include 
 
// Configuration settings
_FOSC(CSW_FSCM_OFF & FRC_PLL16); // Fosc=16x7.5MHz, Fcy=30MHz
_FWDT(WDT_OFF);                  // Watchdog timer off
_FBORPOR(MCLR_DIS);              // Disable reset pin

 char data;

void Interrupt_Init( void )
{
    IEC0bits.U1RXIE = 1;
}

void __attribute__((interrupt, auto_psv)) _U1RXInterrupt( void )               
{
    _LATD0 = 1;
    __delay_ms(500);
    _LATD0 = 0;
        
    data = U1RXREG;
    
    if ( U1STAbits.OERR = 1 )
    {
        U1STAbits.OERR = 0;
    }
    IFS0bits.U1RXIF = 0;
}

int main()
{
     // Set all port D pins as outputs
    _TRISD0 = 0;
 
    // Setup UART - most default options are fine
    UART_Init();  
    Interrupt_Init();
 
    while(1)
    {
        __delay_ms(1000);
       
    }
 
    return 0;
}

Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.

© 2017 StormsHalted

StormsHalted (auteur) de Pullman, Washington, États-Unis le 02 janvier 2018 :

@Jeremy

Veuillez consulter le tableau dans l’article qui montre les noms de broches du module UART et leurs noms de broches correspondants sur le PIC.

Les numéros de broches réels doivent varier en fonction du modèle et de la série de PIC utilisés, mais les noms de broches fonctionneront toujours.

Jérémy le 01 janvier 2018 :

C’est un contenu fantastique !

Pensez-vous que vous pourriez s’il vous plaît télécharger un schéma de circuit de la façon dont vous avez connecté votre dsPIC33F et Arduino ?

Merci

Bouton retour en haut de la page