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
© Copyright 2024