Important: Veuillez noter que cette page a été traduite avec la traduction automatique de notre article en anglais. Nous nous excusons pour la qualité de la traduction. Vous êtes invités à contribuer avec des corrections.
Merci.

Regardez le tutoriel vidéo

  Introduction 

Figure 1: PIC18F26K20 Connecté à un PC via MAX232

Une interface de port série peut être utilisé pour la communication de données en série (envoi et réception) où les données sont envoyées ou reçues d’un bit à la fois entre un ordinateur personnel (PC) et divers dispositifs supportant ce type de protocole comme les microcontrôleurs PIC, GPS, GSM modem, etc. Alors que d’autres interfaces comme Ethernet, FireWire et USB tous envoient des données en tant que flux de série, le terme « port série » identifie généralement le matériel plus ou moins conforme à la norme RS-232, destiné à l’interface avec un modem ou d’un dispositif de communication similaire. RS232 communication série est encore largement utilisé dans les applications industrielles et de nombreux appareils électroniques tels que les modems, mais il est remplacé par le USB dans les appareils portables.

Le contrôleur Universal Asynchronous Receiver / Transmitter (UART) est l’élément clé des communications en série entre un dispositif et un PC ou entre les appareils.
UART est également une caractéristique commune intégrée dans la plupart des micro – contrôleurs aujourd’hui qui est utile pour communiquer des données série (texte, numéros, etc.) sur votre PC.
La plupart des microcontrôleurs PIC ont un UART interne à une broches spécifiques des micro – contrôleurs , mais cette fonction peut également être mis en œuvre avec une broche avec le logiciel dans la plupart des compilateurs comme MPLAB XC8.
Le dispositif modifie l’ information parallèle entrant (dans le micro – contrôleur / PC) de données série qui peut être envoyé sur une ligne de communication.
A la destination, une deuxième UART re-assemble les bits en octets complets. transmission série d’informations numériques (bits) par l’intermédiaire d’un fil unique ou un autre support est beaucoup plus économique que la transmission parallèle qui nécessite de multiples fils. La communication peut être « full duplex » (à la fois envoyer et recevoir en même temps) ou « semi-duplex » (appareils à tour de rôle la transmission et la réception).

Le protocole UART

Transmission asynchrone permet aux données d’être transmises sans que l’expéditeur ayant pour envoyer un signal d’horloge du récepteur. Dans ce cas, l’émetteur et le récepteur doivent se mettre d’ accord sur les paramètres de synchronisation (Baud Rate) avant transmission et les bits spéciaux sont ajoutés à chaque mot pour synchroniser les unités d’ émission et de réception.
Dans la transmission asynchrone, l’émetteur envoie un bit de départ, 5 à 8 bits de données (bit le moins significatif en premier), un bit de parité en option, puis 1, 1,5 ou 2 bits d’ arrêt. Si l’émetteur et le récepteur ne sont pas configurés les mêmes (ces paramètres de synchronisation), la communication ne sera pas fait efficacement.

Le bit de départ  informe le récepteur qu’un mot de données est surd’être envoyé, est de dire le récepteur de synchroniser son horloge avec l’horloge de l’émetteur. La fréquence est très important ici aussi, c’est pourquoi l’émetteur et le récepteur doivent avoirvitesse de transmission identique.
Après le bitdébut, maintenant chaque  bits individuels de données  sont envoyées partir bit le moins significatif (LSB).
Lorsque le mot de données complet a été envoyé, l’émetteur peut ajouter un  bit de parité  que l’émetteur génère. Le bit de parité peut être utilisée par le récepteur pour effectuer vérification d’erreur simple.
Puis enfin  un bit d’ arrêt  est envoyé par l’émetteur pour indiquer la fin de transmission.
Lorsque le récepteur a reçu tous les bits du mot de données, il peut vérifier les bits de parité (l’expéditeur et le destinataire doivent se mettre d’ accord si un bit de parité doit être utilisé), puis le récepteur recherche pour un bit d’ arrêt.
Si le bit d’ arrêt ne semble pas quand il est censé, l’UART considère le mot entier à brouillées et signaler une erreur de cadrage au processeur hôte lorsque le mot de données est lu. Raison commune pour l’apparition d’erreur Le cadrage est que les horloges émetteur et récepteur ne sont pas en cours d’ exécution à la même vitesse, ou que le signal a été interrompu.
Le format typique pour les ports série utilisés avec un PC connecté à des modems est 1 bit de départ, 8 bits de données, pas de parité et 1 bit d’ arrêt. Le format typique pour les ports série utilisés avec un PC connecté à des modems est 1 bit de départ, 8 bits de données, pas de parité et 1 bit d’ arrêt.

Ceci est essentiellement en bref le protocole logiciel du UART. Que diriez – vous des normes de la couche physique qui définit réellement le niveau des tensions et ainsi de suite?
Il y a un certain nombre de normes différentes qui utilise le protocole similaire. Pour les instances, niveau TTL UART, RS-232, RS-422, RS-485 et etc.

Le TTL UART

La plupart des microcontrôleurs avec UART TTL utilise le niveau (Logic transistor-transistor) UART. Il est la forme la plus simple de UART.
Logique 1 est représenté par 5 V et 0 V par la logique 0.
Logique                                                tension 
basse 0V
haute 5V

Niveau de tension pour le niveau TTL UART

Le niveau TTL UART est couramment utilisé dans les communications entre les microcontrôleurs et les circuits intégrés. Seuls deux fils sont nécessaires pour les communications en duplex intégral comme illustré dans l’image ci-dessous sur la figure 1.

Figure 2: Communication série entre 2 appareils

Le RS-232

Le RS-232 est une norme de signaux de données binaires série de connexion entre un équipement terminal de données (DTE) et un équipement de communication de données (DCE).
L’ une des différences significatives entre le niveau UART TTL et RS-232 est le niveau de tension. Signaux valides en RS-232 sont ± 3 à – ± 15V, et les signaux près de 0V est pas un niveau RS-232 valide.
 Logique                                              tension 
faible +3 à + 15V
Haut -3 à 15V

Niveau de tension pour RS-232

En plus de niveau de tension, le RS-232 a également quelques broches supplémentaires spécialement conçues pour la communication entre le PC et le modem. Les broches de la DB-9 et leurs fonctions sont indiqués ci-dessous dans le tableau 1.

Broche signal abreviation Nom du signal DTE (PC)
1 DCD Data Carrier Detect Dans
2 RXD Recevoir des données Dans
3 TXD transmission de données En dehors
4 DTR Data Terminal Ready en dehors
5 GND signal de masse
6 DSR Données prêt dans
7 RTS Demande d’envoi en dehors
8 CTS Effacer pour envoyer Dans
9 RI Indicateur de sonnerie Dans

Tableau 1: brochage et le schéma du connecteur DE9 (connecteur DB9), couramment utilisés pour les ports série (RS-232).

Le DTE (PC) comporte le connecteur mâle (ci – dessous), et le DCE (périphérique) présente la femelle.
La longueur maximale du câble RS-232 est d’ environ 15 m (50 pieds), mais en pratique dépend de la vitesse de transmission, la capacité spécifique du câble et du bruit ambiant. Le tableau ci – dessous contient quelques règles-de-pouce pour les distances recommandées.

Vitesse de transmission Longueur maximale du câble
56000 2.6m (8.5ft)
38400 3,7 m (12ft)
19200 7,6 m (25ft)
9600 15 m (50 pieds)
4800 30 m (98ft)
2400 60m (196ft)

Tableau 2: Distances recommandées Interfacing entre le niveau UART TTL et RS-232
 

Les discussions ci – dessus, nous savons que les microcontrôleurs utilisent UART niveau TTL (5 V pour la logique 1 et 0V pour la logique 0) tandis que le port série du PC utilise RS-232. Étant donné que les normes utilise le protocole logiciel similaire, les deux sont en mesure de communiquer via UART. Cependant, en raison des différences de niveau de tension et la polarité, nous aurons besoin d’ un décalage de niveau pour interfacer le niveau TTL UART avec le RS-232. De nos jours, cela peut être fait facilement avec le circuit intégré couramment disponibles tels que le  MAX2322  de  Maxim .
Le diagramme ci – dessous sur la figure 3 illustre la façon dont le MAX232 IC peut être connecté à l’UART d’un microcontrôleur (TX de PIC relié à la broche T1IN MAX232 et RX à R1OUT de MAX232) et un ordinateur personnel avec connecteur DB9.

Figure 3: L’utilisation de MAX232 IC pour convertir des niveaux TTL de microcontrôleur à niveau RS232

EUSART Configuration avec MPLAB Code Configurator

MPLAB élimine progressivement la bibliothèque périphérique PIC18F qui ne figure plus dans XC8 v1.35. Dans cette version, vous devez les télécharger et les installer séparément dans votre compilateur et ils sont maintenant appelés hérités des bibliothèques périphériques .

Le code MPLAB® Configurator (MCC) est un outil convivial interface utilisateur graphique (GUI) outil plug-in pour MPLAB® X IDE qui génère facile à comprendre le code C qui est inséré dans un projet MPLAB® X, en fonction des paramètres périphériques configurations et les sélections effectuées dans l’interface utilisateur graphique (GUI). L’avantage du MCC, il peut générer des codes non seulement pour PIC18F mais pour une large gamme de PICs, y compris PIC16F et de la série PIC24.

Pour en savoir plus, lire l’article:

 MPLAB® code Configurator

Ci-dessous, la configuration du module EUSART pour l’exemple ci-dessus (schéma de circuit sur la figure 1). Dans cet exemple, nous utilisons un modèle plus récent PIC, le PIC18F26K20. Le E du EUSART signifie Enhanced USART, son fondamentalement la même chose avec le USART mais avec quelques fonctionnalités supplémentaires comme le sommeil / réveil sur réception. Dans cet exemple, le PIC18F26K20 est connecté à un PC via un convertisseur de tension MAX232. Trois voyants sont connectés à PORTB, LED rouge sur RB0, LED jaune sur RB1 et RB2 LED verte sur. Si 1 reçu du PC, le PIC se met en marche la LED rouge, si 2 la LED jaune est sous tension et si 3 interrupteurs sur la LED verte.

Regardez le tutoriel vidéo

Ci-dessous le fichier Main.c:

Fonctions USART avec PIC18F Bibliothèque périphérique

XC8 versions du compilateur 1.34 et ci – dessous fournit une bibliothèque périphérique PIC18F Aide document trouvé à l’ intérieur du répertoire d’installation du compilateur dans: ..Program Files (x86) / Microchip / XC8 / 1.34 / docs / MPLAB_XC8_Peripheral_Libraries.pdf ( en supposant que votre compilateur installé dans le répertoire Program Files (x86). 1.34 est la version de votre compilateur, il est peut – être différent si vous utilisez un autre compilateur).
Recherchez le PIC que vous allez utiliser, cliquez sur: « CLIQUEZ ICI pour la bibliothèque périphérique Détails des pour cet appareil » Pour une famille de 18F2620, les fonctions de USART sont de la page 1251 dans le pdf). dans XC8 v1.35. Dans cette version, vous devez les télécharger et les installer séparément dans votre compilateur et ils sont maintenant appelés hérités des bibliothèques périphériques .
Le tableau 3 ci – dessous présente un résumé des fonctions USART. Dans les microcontrôleurs avec plus d’un USART un numéro est ajouté à la fin de ces fonctions pour identifier le module USART utilisé.
Notes:  Pour Microcontrôleurs PIC qui ne disposent pas d’ un module USART ou si une entrée / sortie soit que les broches du matériel par défaut sont nécessaires, les fonctions USART du logiciel peut être utilisé et certains PIC Microcontrôleurs ont plus de 1 modules USART, dans ce cas, vous devez spécifier le USART vous faites référence à (openUSART ou open2USART) Tableau 3: Fonctions USART

OpenUSART 
Cette fonction configure le USART. Deux arguments sont nécessaires: un argument de configuration appelé config et un entier appelé spbrg, qui spécifie la valeur à écrire dans le registre du générateur de vitesse de transmission pour déterminer la vitesse de transmission. 
config: 
Interrompre surtransmission: USART_TX_INT_ON: Transmissioninterruption sur 
                                      USART_TX_INT_OFF: Transmission interruption OFF
Interruptionla réception: USART_RX_INT_ON: interruptionréception ON 
                                       USART_RX_INT_OFF: interruptionréception OFF 
Mode USART: USART_ASYNCH_MODE: Mode asynchrone 
                                       USART_SYNCH_MODE: Mode synchrone 
Largeur de transmission: `USART_EIGHT_BIT: transmettre 8 bits / réception 
                                       USART_NINE_BIT: émission de 9 bits / réception
sélectionner esclave / maître: USART_SYNC_SLAVE: mode esclave synchrone
                                        USART_SYNCH_MASTER: Mode maître synchrone
Mode de réception: USART_SINGLE_RX: réception à l’ unité 
                                        USART_CONT_RX: la réception en continu 
Débit: USART_BRGH_HIGH : haute vitesse de transmission 
                                        USART_BRGH_LOW: vitesse de transmission faible
adresse Détecte Activer: USART_ADDEN_ON: Active la détection adresse
                                        USART_ADDEN_OFF: désactive la détection d’adresse
spbrg:  Ceci est la valeur qui est écrite à la vitesse de transmission registre de générateur qui détermine la transmission  vitesse à laquelle le USART fonctionne.

Les formules pour la vitesse de transmission sont:  
pour la grande vitesse (USART_BRGH_HIGH), Baud = FOSC / [16 * (spbrg + 1)]  ou spbrg = FOSC / (16 * bauds) – 1 et 
pour la basse vitesse (USART_BRGH_LOW), Baud = FOSC / [16 * (spbrg + 1)]  ou spbrg = FOSC / (64 * bauds) -1,  où FOSC est la fréquence d’horloge du microcontrôleur.

Exemple:
fréquence de 8 MHz, en utilisant la vitesse, le mode asynchrone est utilisé avec 9600 bauds et 8 bits de données.
spbrg = FOSC / (16 * bauds) – 1 = 8000000 / (16 x 9600) – 1 = 51 fonction OpenUSART devient:

BusyUSART
Cette fonction retourne un « 1 » si l’émetteur USART est occupétransmettre un caractère.
Cette fonction doit être vérifié avantenvoyer un nouvel octet à USART.
La fonction retourne un « 0 » si l’émetteur est inactif USART.

CloseUSART
Cette fonction désactive le USART.

DataRdyUSART
Cette fonction retourne un « 1 » sidonnées sont disponibles dans le USART tamponlecture et un « 0 » indique quedonnées ne sont pas disponibles dans la mémoire tampon de lecture.

getcUSART = ReadUSART
Cette fonction lit un octet (un caractère) de la mémoire tampon USART.
Exemple:  les données unsigned char;
data = getcUSART ();

getsUSART
Cette fonction lit une chaîne de caractères de la USART.
Cette fonction attend et lit un certain nombre de caractères. Il n’y a pasdélai et le programme attendra indéfiniment si le nombre spécifié de caractères ne sont pas reçus.
Exemple:  char buffer [20];
getsUSART (buffer, 10);    // Attendre pour recevoir 10 caractères

putcUSART = WriteUSART
Cette fonction envoie un octet (un caractère) à USART.

putsUSART
Cette fonction envoie une chaîne de caractères à Usart de la mémoire de données.
Exemple:  putsUSART ( « Bonjour tout le monde … »);

putrsUSART
Cette fonction envoie une chaîne de caractères à Usart de la mémoire du programme.

baudUSART
Cette fonction définit les bits de configuration devitesse de transmission pourfonctionnement USART amélioré.
Les arguments valides peuvent être forméspartirbits AND des définitions suivantes:
Horloge état de repos:  BAUD_IDLE_CLK_HIGH horloge étatrepos esthaut niveau
BAUD_IDLE_CLK_LOW horloge étatrepos est faible
génération de vitesse de transmission:  BAUD_16_BIT_RATE 16 bits génération de vitesse de transmission
BAUD_8_BIT_RATE 8 bits génération de débit en bauds
surveillance de la broche RX:  BAUD_WAKEUP_ON broche RX contrôlée
BAUD_WAKEUP_OFF broche Rx pas surveillé
mesure de la fréquence de transmission:  mesure defréquence BAUD_AUTO_ON Autobaud activé
mesure defréquence BAUD_AUTO_OFF Autobaud désactivé

Laissez-nous créer un projet simple comme le montre la figure 3, il se compose d’un PIC18F2620 connecté à un PC via un convertisseur de tension MAX232. 3 LED sont connectées à PORTB, LED rouge sur RB0, RB1 à DEL jaune et vert LED sur RB2. Si 1 reçu du PC, les commutateurs PIC sur la LED rouge, 2 la LED jaune est allumé et 3 interrupteurs sur la LED verte.

Vous pouvez télécharger les fichiers de projet complet (code source MPLAB XC8 et Proteus conception schématique) ci – dessous ici. Tous les fichiers sont compressés, vous aurez besoin de les dézipper ( Télécharger une version gratuite de l’utilitaire Winzip pour décompresser les fichiers ).

Télécharger Project MPLAB avec PIC18F Library:  USART MPLAB Projet XC8

Télécharger Proteus Schéma avec PIC18F2620:  USART Proteus Schematic Project

Télécharger MPLAB projet avec code Configurator:  EUSART MPLAB Projet XC8

Télécharger Proteus Schéma avec PIC18F26K20:  EUSART Proteus Schematic Project