UART (Universal Asynchronous Transmitter Receiver), c’est le protocole le plus courant utilisé pour la communication série en duplex intégral. Il s’agit d’une seule puce LSI (intégration à grande échelle) conçue pour effectuer une communication asynchrone. Ce périphérique envoie et reçoit des données d’un système à un autre système.
Dans ce tutoriel, vous apprendrez les bases de la communication UART, et le fonctionnement de l’UART.
Qu’est-ce que l’UART ?
« UART » signifie Universal Asynchronous receiver-transmitter. C’est un périphérique matériel qui est présent à l’intérieur d’un microcontrôleur. La fonction de l’UART est de convertir les données entrantes et sortantes en flux binaire série. Les données série de 8 bits reçues du périphérique sont converties en parallèle à l’aide d’une conversion série-parallèle et les données parallèles reçues de l’unité centrale sont converties à l’aide d’une conversion série-parallèle. Ces données sont présentes sous forme de modulation et sont transmises à un débit en bauds défini.
Pourquoi utiliser l’UART ?
Des protocoles comme SPI (interface périphérique série) et USB (Universal Serial Bus) sont utilisés pour une communication rapide. Lorsque le transfert de données à grande vitesse n’est pas nécessaire, on utilise UART. C’est un dispositif de communication bon marché avec un seul émetteur/récepteur. Il nécessite un seul fil pour transmettre les données et un autre fil pour les recevoir.
Interface UART
Il peut être interfacé avec un PC (ordinateur personnel) à l’aide d’un convertisseur RS232-TTL ou USB-TTL. Le point commun entre RS232 et UART est qu’ils ne nécessitent pas d’horloge pour transmettre et recevoir des données. La trame Uart est constituée d’un bit de départ, de 1 ou 2 bits d’arrêt et d’un bit de parité pour le transfert de données en série.
Schéma fonctionnel
L’UART est constitué des composants de base suivants. Il s’agit de l’émetteur et du récepteur. L’émetteur se compose du registre de maintien d’émission, du registre à décalage d’émission et de la logique de contrôle. De même, le récepteur se compose d’un registre de maintien de réception, d’un registre à décalage de réception et d’une logique de contrôle. En commun, l’émetteur et le récepteur sont dotés d’un générateur de vitesse de transmission.
Diagramme de bloc UART
Le générateur de vitesse de transmission génère la vitesse à laquelle l’émetteur et le récepteur doivent envoyer/recevoir les données. Le registre de maintien d’émission contient l’octet de données à transmettre. Le registre à décalage d’émission et le registre à décalage de réception décalent les bits vers la gauche ou la droite jusqu’à ce qu’un octet de données soit envoyé/reçu.
En plus de ceux-ci, une logique de contrôle de lecture ou d’écriture est fournie pour dire quand lire/écrire. Le générateur de débit en bauds génère des vitesses allant de 110 bps (bits par seconde) à 230400. La plupart du temps, les microcontrôleurs proposent des vitesses de transmission plus élevées, telles que 115200 et 57600, pour un transfert de données plus rapide. Des appareils comme le GPS et le GSM utilisent des vitesses de transmission plus lentes en 4800 et 9600.
Comment fonctionne l’UART ?
Pour connaître le fonctionnement de l’UART, vous devez comprendre la fonctionnalité de base de la communication série. En bref, l’émetteur et le récepteur utilisent le bit de départ, le bit d’arrêt et les paramètres de synchronisation pour se synchroniser l’un avec l’autre. Les données d’origine sont sous forme parallèle. Par exemple, nous avons des données de 4 bits, pour les convertir en forme série, nous avons besoin d’un convertisseur parallèle-série. Généralement, on utilise des bascules D ou des latches pour concevoir les convertisseurs.
Fonctionnement de la bascule D
Basic D Flip-Flop
La bascule D également connue sous le nom de Data flip-flop décale un bit du côté entrée vers le côté sortie si et seulement, lorsque l’horloge change la transition d’un état haut à un état bas ou d’un état bas à un état haut. De même, si vous voulez transférer quatre bits de données, vous avez besoin de 4 bascules.
Note : Ici,
‘D’ représente les données d’entrée.
‘CLK’ indique les impulsions d’horloge.
‘Q’ désigne les données de sortie. Maintenant, concevons un convertisseur parallèle-série et série-parallèle.
Conversion parallèle-série
Conversion parallèle-série
Connexion en cascade – Parallèle à Série
Étape#1 :
Prendre 4 flip-flops. Le nombre de flip-flops est équivalent au nombre de bits à transmettre. De même, mettez des multiplexeurs devant chaque bascule, mais en excluant la première. Un multiplexeur est placé pour combiner les données et les convertir en bits série. Il a deux entrées, une donnée de bit parallèle et une autre provenant de la bascule précédente.
Etape#2:
Maintenant, chargez les données à la fois dans les bascules D. Il va tirer les données parallèles et déplace le dernier bit de la dernière bascule (quatre), puis le troisième bit, le deuxième bit, et enfin le premier bit. Maintenant, pour reconvertir les données parallèles en forme série, on utilise un convertisseur série/parallèle.
Conversion série/parallèle
Conversion série/parallèle
Connexion en cascade – Conversion série/parallèle
Étape#1 :
Prendre 4 flip-flops. Le nombre de flip-flops est le même que le nombre de bits à transmettre.
Etape#2:
Initialement, désactivez le bus parallèle. Ne l’activez pas avant que tous les bits soient chargés. Stockez les données à l’entrée de la première flip-flop. Maintenant, faites l’horloge haute, cela va décaler le bit le moins significatif à l’entrée de la deuxième bascule et à la sortie de la première. De la même manière, décalez tous les bits un par un en mettant l’horloge à l’état haut. Le convertisseur est dans l’état de maintien jusqu’à ce que tous les bits soient transférés à la sortie.
Etape#3:
Maintenant, chaque bascule contient un bit de données série. Erstwhile tous les bits sont transférés à la sortie de la bascule, activez le bus. Cela permettra au convertisseur d’envoyer tous les bits à la fois.
Format du protocole
L’UART commence la communication avec un bit de départ ‘0’. Le bit de départ initie le transfert de données série et le bit d’arrêt termine la transaction de données.
Format du protocole
Il est également pourvu d’un bit de parité (pair ou impair). Le bit de parité pair est représenté par ‘0’ (nombre pair de 1) et le bit de parité impair est représenté par ‘1’ (nombre impair de 1).
Transmission
La transmission des données se fait par une seule ligne de transmission (TxD). Ici, ‘0’ est considéré comme un espace et ‘1’ est connu comme un état de marque.
Transmission Frame
L’émetteur envoie un seul bit à la fois. Après avoir envoyé un bit, le bit suivant est envoyé. De cette façon, tous les bits de données sont envoyés au récepteur avec un débit en bauds prédéfini. Il y aura un certain délai dans la transmission de chaque bit. Par exemple, pour envoyer un octet de données à une vitesse de 9600 bauds, chaque bit est envoyé avec un retard de 108 µsec. Les données sont additionnées d’un bit de parité. Ainsi, 10 bits de données sont nécessaires pour envoyer 7 bits de données.
Note : Lors de la transmission, le LSB (Least Significant Bit) est toujours envoyé en premier.
Réception
Lors de la réception, la ligne RxD (Receiver) est utilisée pour recevoir les données.
Receive Frame
Exemple d’interfaçage UART
Cet exemple démontre l’interfaçage de l’UART de l’ESP8266 avec le MAX232. Mais, avant de sauter dans les détails de l’interfaçage, laissez-moi partager les détails des broches du pilote Max232.
Pinout MAX232
Le CI MAX232 est alimenté par une alimentation de 5V qui comprend un générateur de tension capacitif pour piloter les tensions de niveau 232. Il est livré avec deux émetteurs également appelés le pilote (TIN, TOUT) et les récepteurs (RIN et ROUT).
Ici, j’ai utilisé ESP8266 (microcontrôleur 32 bits) qui a intégré UART. La communication peut être faite avec l’ESP8266 en utilisant des commandes AT via un convertisseur de niveau RS232 vers TTL (MAX232). La figure ci-dessous montre la connexion de l’ESP8266 avec le PC (ordinateur personnel).
ESP8266 en interface avec l’UART
En demandant des commandes AT valides via le PC, la puce Wi-Fi répondra avec un accusé de réception. Je ne veux pas aller en profondeur sur ESP8266 et il sera expliqué dans les futurs tutoriels.
Voici les étapes pour mettre en œuvre la communication série avec le PC.
- Connecter l’émetteur (TX) de l’ESP8266 au récepteur (TX) du convertisseur de niveau RS232 vers TTL (MAX232) et au RX du PC.
- Connecter le récepteur (RX) de l’ESP8266 au TX du PC et au RX du convertisseur TTL.
Commandes de l’ESP8266
Commande AT (envoyée par le PC) | Réponse de l’ESP8266 (reçue par le PC) |
---|---|
AT<CR><LF> | OK<CR><LF> |
AT+CIPMUX=1 | OK<CR><LF> | AT+CIPSERVER=1,23<CR><LF> | OK<CR><LF> |
La capture d’écran ci-dessous montre la réponse donnée par le module ESP8266.
Commandes ESP8266 – Programme Docklight
UART vs USART
L’USART est la forme de base de l’UART. Techniquement, ce ne sont pas les mêmes. Mais, la définition est la même pour les deux. Ce sont des périphériques de microcontrôleur qui convertissent les données parallèles en bits sériels et vice versa.
La principale différence entre UART et USART est que UART ne prend en charge que la communication asynchrone, alors que USART prend en charge la communication synchrone ainsi qu’asynchrone. Pour faciliter la compréhension, voici la comparaison entre USART et UART.
UART | USART |
---|---|
L’horloge est générée en interne par le microcontrôleur. | Le dispositif d’envoi générera l’horloge. |
Le débit de données est lent. | Le débit de données est plus élevé en raison de l’horloge externe. |
Le protocole Standalone | Porte plusieurs protocoles comme LIN, RS-485, IrDA, Smart Card, etc. |
Le débit en bauds doit être connu avant la transmission. | Nul besoin de connaître le débit en bauds plus tôt. |
Convient aux communications à faible vitesse | Convient aux communications à grande vitesse. |
Réduction de l’empreinte énergétique. | Gère la communication série lors d’une forte consommation d’énergie |
RS232 et UART
Les niveaux logiques représentent les niveaux de tension de fonctionnement qu’un appareil peut supporter pour fonctionner dans une zone sûre. Voici les niveaux de tension pour RS232 et TTL.
Logique RS232 :
Niveaux de tension RS232
Niveau logique | Plage de tension |
---|---|
Sortie logique haute ou basse | -5V à -15V | Sortie logique basse ou ON | +5V à +15V | Sortie logique haute ou OFF | -3V à -15V | Logic Low ou ON input | +3V à +15V |
Dans la plupart des cas, les niveaux RS232 vont de -12V à +12V. Par exemple, une valeur ASCII pour un caractère ‘A’ en RS232 est de 65 et 41 en hexadécimal. Donc, dans un format binaire de 8 bits, c’est 0100 0001. Voici la représentation des niveaux logiques RS232 pour l’ASCII ‘A’.
Signal RS232 pour la lettre ASCII A
Logique TTL/CMOS:
L’UART fonctionne sur une logique TTL.
Signal CMOS TTL pour la lettre ASCI A
- Initialement, la ligne série est dans l’état de repos communément appelé état de marque (Logique 1). Maintenant, la transmission de données commence par un bit de départ (logique 0).
- En outre, huit bits de données sont envoyés sur la ligne série l’un après l’autre avec le LSB (Least significant bit) en premier.
- Après que toute la transmission soit terminée, un bit d’arrêt (logique 1) est rencontré.
Avantages
L’avantage de l’UART est, il supporte la communication full-duplex en utilisant deux fils. Aussi, il ne nécessite pas d’horloge externe pour la communication des données. Il prend en charge le contrôle des erreurs en utilisant un bit de parité et la longueur des données peut être modifiée facilement.
Inconvénients
Le principal inconvénient de l’UART est, qu’il ne prend pas en charge la configuration multi-esclave ou multi-maître. Et, la taille du paquet de données est limitée à 9 bits. L’UART n’est pas adapté à la communication série lourde pendant la consommation d’énergie élevée.
Applications
- Le port de débogage série utilise le pilote UART pour imprimer les données provenant du monde extérieur.
- On peut l’utiliser pour envoyer et recevoir des commandes vers et depuis les dispositifs embarqués.
- La communication dans les GPS, modem GSM/GPRS, puces Wi-Fi, etc fonctionne avec UART.
- Utilisé dans l’accès Mainframe pour connecter différents ordinateurs.