Partie 7 Communication série UART Universal Asynchronous

Cours/TD d’informatique embarquée
Utilisation d’un microcontrôleur MBED
Partie 7
Communication série UART
Universal Asynchronous Receiver Transmitter
Plan du cours
7.1. Introduction
7.2. Liaison 3 fils
7.3. Horloge et débit
7.4. Trame
7.5. Utilisation de la liaison série avec mbed
CV
C/TD INFO2 - Partie 7
page 1
7.1. Introduction
Pour communiquer entre composants (envoyer et recevoir des données) on utilise couramment des
_________________________________________
La communication de base est la ________________________________
__________________________
(norme ____________).
Cette communication est l'ancêtre
ncêtre de l’USB sur les PCs.
PCs
Elle est encore
ncore utilisée dans l’industrie et de nombreuses applications : Systèmes automatisés,
commandee de machine outils, GPS, modem...
Le terme "Asynchrone" signifie qu’il n’y a pas ____________________________________________.
____________________________________________
Le transfert
ransfert des données dans les deux sens : on parle de communication _______________
La liaison physique possède 3 fils
• _____________________________ (sortie)
• _____________________________
_______________________ (entrée)
• Masse (0V)
Un UART est un circuit émetteur-récepteur
émetteur
asynchrone universel.
Universal Asynchronous Receiver Transmitter
Un UART est composé d'une unité
nité de _______________ et d'une unité ______________.
______________
Ces deux unités sont connectés sur le __________________________________.
__________________________________ Ils possèdent une
entrée d'horloge et un Enable
nable qui permet de les activer ou de les désactiver.
CV
C/TD INFO2 - Partie 7
page 2
7.2 Liaison 3 fils
L'émission de l'un des composants est reçue par l'autre. la sortie de l’un correspond à l’entrée de
l’autre... donc entre deux composants on ________________________.
Ces trois fils suffisent pour réaliser une communication série. Il est possible (mais pas obligatoire)
d'ajouter des fils pour contrôler le transfert des informations :
- « prêt à émettre » (RTS) et « prêt à recevoir » (CTS)
On parle de ________________________________ (hardware flux control).
7.3 Horloge et débit
La communication série n'utilise pas de synchronisation ____________________________________.
=> Les horloges doivent être ___________________________ (configurable sur chaque composant)
On parle de débit en ____________ ( ________ ou bps).
Débits possibles :
• 1 200 bauds
• 2 400 bauds
• 4 800 bauds
• 9 600 bauds
• 19 200 bauds
• 38 400 bauds
• 57 600 bauds
• 115 200 bauds
Pour que la communication puisse se faire correctement, 2 bits sont ajoutés en début et en fin de
transmission :
• _____________________ (on décroche le téléphone)
• _____________________ (on raccroche)
Cela permet au récepteur de rester ____________________ (à chaque bit de start le récepteur se
resynchronise).
CV
C/TD INFO2 - Partie 7
page 3
7.4 Trame
Au repos, le bus est à ________________.
________________. (lorsque personne ne parle le bus reste à ____)
1. Le passage à _____ débute la communication
communicati : ____________
2. On transmet généralement 7 ou 8 bits de données
+ éventuellement un bit de parité (qui permet de vérifier si il ya eu une erreur lors de
la transmission)
Le premier bit est le __________________ (d0) : LSB first
3. On termine la communication en passant à ____ : ____________
Le bit de stop peut durer ____________________ périodes d’horloge.
Exemple : signal relevé à l'oscilloscope lors de la transmission
CV
C/TD INFO2 - Partie 7
page 4
Exercice 1 :
Déterminer les caractères transmis pour ces
identifier le bit de Start et le bit de Stop.
deux
chronogrammes,
Exercice 2 :
Trouver le code ascii des caractères 'M' et 'Z' en binaire, décimal
et hexadécimal.
Dessiner le chronogramme de la transmission de ces deux caractères.
CV
C/TD INFO2 - Partie 7
page 5
7.5 Utilisation des liaisons séries avec mbed
La communication entre le PC (tera term) et le
microcontrôleur est une ________________________.
Le câble USB supporte une liaison série entre le PC et le
µC (port série virtuel).
En plus de l’USB le LPC 1768 possède ______________.
Ils sont disponibles sur les broches (Tx/Rx) :
• p9 / p10
• p13 / p14
• p28 / p27
Comme le µC possède plusieurs UARTs il est possible de faire plusieurs communications séries
simultanément.
Les méthodes associées au type Serial sont dans le tableau ci-dessous :
Serial
Serial
baud
putc
getc
printf
scanf
readable
writeable
attach
format
Utilisation/méthode
Permet de créer un port série, associé à deux broches spécifiques pour la transmission
Tx et la réception Rx
Permet de fixer la vitesse de transmission du port série
Permet d’envoyer un caractère sur le port série
Permet de lire un caractère sur le port série
Permet d’envoyer une succession de caractères
Permet de lire une succession de caractères
Détermine si un caractère est disponible à la lecture
Permet de savoir si le bus est disponible pour l'écriture
Associe une fonction à exécuter lorsqu’une interruption survient sur le port série
Fixe le nombre de bits de donnée, la parité et la durée du bit de stop
Exemple d’utilisation : tunnel entre le PC et un UART du µC
#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx - Liaison série 1
Serial device(p9, p10); // tx, rx - Liaison série 2
int main() {
while(1) {
if(pc.readable()) {
device.putc(pc.getc());
}
if(device.readable()) {
pc.putc(device.getc());
}
}
}
CV
C/TD INFO2 - Partie 7
page 6
Exercice 3 :
Réaliser et tester le programme précédent. Relever à l'oscilloscope
le signal issu de la broche Tx. Combien de temps dure la
transmission d'un caractère ?
Exemple : définition de la vitesse de transmission
Serial device(p9, p10); // tx, rx
int main() {
device.baud(19200);
device.printf("Hello World\n");
}
Exercice 4 :
Modifier le programme de l'exercice 3 pour fixer la vitesse de
communication à 19200 bauds (modifier la vitesse de transmission sur
tera term). Combien de temps dure la transmission d'un caractère ?
Exercice 5 :
Connectez votre microcontrôleur à celui de votre voisin et envoyez
vous des message via tera term.
Exemple : routine liée à une interruption sur le port série
DigitalOut led1(LED1);
DigitalOut led2(LED2);
Serial pc(USBTX, USBRX);
void callback();
int main() {
pc.attach(&callback);
while (1) {
led1.write(!led1.read());
wait(0.5);
}
}
void callback() {
printf("%c\n", pc.getc());
led2.write(!led2.read());
}
Exercice 6 :
1) Réaliser et tester le programme précédent.
2) Faites changer l'état de la LED2 de votre voisin en lui envoyant
des caractères.
CV
C/TD INFO2 - Partie 7
page 7
Questions de cours :
Q1) Que signifie UART ?
Q2) Combien de fils possède le bus de données ?
Q3) Quel est l'état de repos du bus ?
Q4) Quelle méthode permet de savoir si un caractère est disponible à
la lecture ?
Q5) Est-il possible
liaison série ?
de
connecter
plus
de
2
UARTs
sur
une
même
Q6) Après le Start, quel est le 1er bit transmis (nom en anglais)?
Q7) Peut-on déclencher
série, si oui comment ?
une
routine
d'interruption
avec
un
port
Q8) Que signifie "baud" ? Quelles sont les valeurs possibles ?
Q9) Comment est réalisé le bit de Start ?
Q10) Comment est réalisé le bit de Stop ?
Q11) Comment
récepteur ?
CV
faut-il
configurer
les
débits
C/TD INFO2 - Partie 7
de
l'émetteur
et
du
page 8