Souvenez-vous quand les imprimantes, les souris et les modems avaient des câbles épais avec ces énormes connecteurs encombrants ? Ceux qui devaient littéralement être vissés dans votre ordinateur ? Ces périphériques utilisaient probablement des UART pour communiquer avec votre ordinateur. Bien que l’USB ait presque entièrement remplacé ces vieux câbles et connecteurs, les UART ne font définitivement pas partie du passé. Vous trouverez des UART utilisés dans de nombreux projets électroniques de bricolage pour connecter des modules GPS, des modules Bluetooth et des modules de lecture de cartes RFID à votre Raspberry Pi, Arduino ou d’autres microcontrôleurs.
UART est l’abréviation de Universal Asynchronous Receiver/Transmitter. Ce n’est pas un protocole de communication comme SPI et I2C, mais un circuit physique dans un microcontrôleur, ou un circuit intégré autonome. L’objectif principal d’un UART est de transmettre et de recevoir des données en série.
L’une des meilleures choses à propos de l’UART est qu’il n’utilise que deux fils pour transmettre des données entre les périphériques. Les principes derrière UART sont faciles à comprendre, mais si vous n’avez pas lu la première partie de cette série, Les bases du protocole de communication SPI, cela pourrait être un bon endroit pour commencer.
Introduction à la communication UART
Dans la communication UART, deux UART communiquent directement entre eux. L’UART émetteur convertit les données parallèles d’un dispositif de contrôle tel qu’une unité centrale en forme série, les transmet en série à l’UART récepteur, qui reconvertit ensuite les données série en données parallèles pour le dispositif récepteur. Seuls deux fils sont nécessaires pour transmettre des données entre deux UART. Les données circulent de la broche Tx de l’UART émetteur à la broche Rx de l’UART récepteur:
Les UART transmettent les données de manière asynchrone, ce qui signifie qu’il n’y a pas de signal d’horloge pour synchroniser la sortie des bits de l’UART émetteur à l’échantillonnage des bits par l’UART récepteur. Au lieu d’un signal d’horloge, l’UART émetteur ajoute des bits de début et de fin au paquet de données transféré. Ces bits définissent le début et la fin du paquet de données afin que l’UART de réception sache quand commencer à lire les bits.
Lorsque l’UART de réception détecte un bit de départ, il commence à lire les bits entrants à une fréquence spécifique appelée débit en bauds. Le débit en bauds est une mesure de la vitesse de transfert des données, exprimée en bits par seconde (bps). Les deux UART doivent fonctionner à peu près à la même vitesse de transmission. Le débit en bauds entre les UART d’émission et de réception ne peut différer que d’environ 10 % avant que la synchronisation des bits ne soit trop éloignée.
Les deux UART doivent également être configurés pour transmettre et recevoir la même structure de paquets de données.
Comment fonctionne l’UART
L’UART qui va transmettre des données reçoit les données d’un bus de données. Le bus de données est utilisé pour envoyer des données à l’UART par un autre dispositif comme une unité centrale, une mémoire ou un microcontrôleur. Les données sont transférées du bus de données à l’UART de transmission sous forme parallèle. Après que l’UART de transmission ait reçu les données parallèles du bus de données, il ajoute un bit de départ, un bit de parité et un bit d’arrêt, créant ainsi le paquet de données. Ensuite, le paquet de données est émis en série, bit par bit, sur la broche Tx. L’UART de réception lit le paquet de données bit par bit sur sa broche Rx. L’UART de réception reconvertit ensuite les données en parallèle et supprime le bit de départ, le bit de parité et les bits d’arrêt. Enfin, l’UART de réception transfère le paquet de données en parallèle sur le bus de données à l’extrémité de réception :
Les données transmises par l’UART sont organisées en paquets. Chaque paquet contient 1 bit de départ, 5 à 9 bits de données (selon l’UART), un bit de parité facultatif et 1 ou 2 bits d’arrêt :
Bit de départ
La ligne de transmission de données UART est normalement maintenue à un niveau de tension élevé lorsqu’elle ne transmet pas de données. Pour commencer le transfert de données, l’UART émetteur tire la ligne de transmission de haut en bas pendant un cycle d’horloge. Lorsque l’UART de réception détecte la transition de tension haute à basse, il commence à lire les bits de la trame de données à la fréquence du débit en bauds.
Trame de données
La trame de données contient les données réelles transférées. Elle peut avoir une longueur de 5 bits jusqu’à 8 bits si un bit de parité est utilisé. Si aucun bit de parité n’est utilisé, la trame de données peut avoir une longueur de 9 bits. Dans la plupart des cas, les données sont envoyées avec le bit le moins significatif en premier.
Parité
La parité décrit le caractère pair ou impair d’un nombre. Le bit de parité est un moyen pour l’UART récepteur de savoir si des données ont changé pendant la transmission. Les bits peuvent être modifiés par des radiations électromagnétiques, des vitesses de transmission non concordantes ou des transferts de données sur de longues distances. Après que l’UART de réception a lu la trame de données, il compte le nombre de bits avec une valeur de 1 et vérifie si le total est un nombre pair ou impair. Si le bit de parité est un 0 (parité paire), le total des bits 1 dans la trame de données devrait être un nombre pair. Si le bit de parité est un 1 (parité impaire), le total des bits 1 de la trame de données doit être un nombre impair. Lorsque le bit de parité correspond aux données, l’UART sait que la transmission est exempte d’erreurs. Mais si le bit de parité est un 0, et que le total est impair ; ou si le bit de parité est un 1, et que le total est pair, l’UART sait que des bits de la trame de données ont changé.
Bits d’arrêt
Pour signaler la fin du paquet de données, l’UART émetteur fait passer la ligne de transmission de données d’une basse tension à une haute tension pendant au moins deux durées de bit.
Étapes de la transmission UART
1. L’UART d’émission reçoit des données en parallèle du bus de données :
2. L’UART émetteur ajoute le bit de départ, le bit de parité et le(s) bit(s) d’arrêt à la trame de données :
3. L’ensemble du paquet est envoyé en série de l’UART émetteur à l’UART récepteur. L’UART de réception échantillonne la ligne de données à la vitesse de transmission préconfigurée :
4. L’UART de réception élimine le bit de départ, le bit de parité et le bit d’arrêt de la trame de données :
5. L’UART de réception reconvertit les données série en parallèle et les transfère sur le bus de données de l’extrémité de réception :
Avantages et inconvénients des UART
Aucun protocole de communication n’est parfait, mais les UART sont plutôt bons dans ce qu’ils font. Voici quelques avantages et inconvénients pour vous aider à décider s’ils répondent ou non aux besoins de votre projet :
Avantages
- N’utilise que deux fils
- Aucun signal d’horloge n’est nécessaire
- Possède un bit de parité pour permettre le contrôle des erreurs
- La structure du paquet de données peut être modifiée tant que les deux côtés sont configurés pour cela
- Méthode bien documentée et largement utilisée
.
Inconvénients
- La taille de la trame de données est limitée à un maximum de 9 bits
- Ne prend pas en charge les systèmes à esclaves multiples ou à maîtres multiples
- Les vitesses de transmission de chaque UART doivent se situer dans une fourchette de 10 % l’une de l’autre
Continuez à la troisième partie de cette série, Les bases du protocole de communication I2C, pour découvrir une autre façon de communiquer des appareils électroniques. Ou, si ce n’est pas déjà fait, consultez la première partie, Les bases du protocole de communication SPI.
Continuez à lire la première partie, Les bases du protocole de communication SPI.