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 de l USB sur les PCs. Elle est encore utilisée dans l industrie et de nombreuses applications : Systèmes automatisés, commande de machine outils, GPS, modem... Le terme "Asynchrone" signifie qu il n y a pas. Le transfert 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 asynchrone universel. Universal Asynchronous Receiver Transmitter Un UART est composé d'une unité 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 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 : 1200 bauds 2400 bauds 4800 bauds 9600 bauds 19200 bauds 38400 bauds 57600 bauds 115200 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 : 2. On transmet généralement 7 ou 8 bits de données + éventuellemen 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 deux chronogrammes, identifier le bit de Start et le bit de Stop. 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 de connecter plus de 2 UARTs sur une même liaison série? Q6) Après le Start, quel est le 1er bit transmis (nom en anglais)? Q7) Peut-on déclencher une routine d'interruption avec un port série, si oui comment? 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 faut-il configurer les débits de l'émetteur et du récepteur? CV C/TD INFO2 - Partie 7 page 8