L’UART (Universal Asynchronous Receiver-Transmitter) est un bus de communication asynchrone : deux composants échangent des données sur deux fils, TX (émission) et RX (réception), croisés l’un vers l’autre. Sans horloge commune, les deux côtés doivent s’accorder à l’avance sur un même débit (le baud).
Comment ça marche ?
Chaque octet est encadré par un bit de start et un ou plusieurs bits de stop : c’est cette trame qui permet au récepteur de se caler sur le flux sans horloge partagée. La liaison est point-à-point, soit deux équipements et pas plus, par construction : un seul couple de composants par lien, sans adressage. Cette simplicité se paie en extensibilité. Pour parler à plusieurs périphériques, il faut autant de liaisons UART, ou un autre bus.
Sur le fil
La ligne est au repos à l’état haut. Le start (un bit bas) prévient le récepteur, qui se met à compter : chaque bit durant exactement 1 ÷ débit, il échantillonne la ligne au milieu de chaque intervalle pour lire les 8 bits de données (poids faible en premier), puis vérifie le stop. Tout repose sur ce comptage : c’est pourquoi un débit mal accordé produit des caractères illisibles.
C’est le bus de la console de mise au point (souvent via une passerelle USB-série vers le PC) et de nombreux modules autonomes : GPS, Bluetooth, modules radio. La mise en œuvre est traitée dans arduino-uart côté Arduino, esp32-uart côté ESP32 et micropython-uart côté MicroPython.
Pièges
Câbler TX sur TX. Le classique du premier branchement : relier émission à émission et réception à réception. Rien ne grille, rien ne circule, et on cherche longtemps. TX parle, RX écoute : les fils se croisent.
Débit mal accordé. Si les deux côtés ne sont pas réglés au même baud, les caractères reçus sont illisibles. Le débit se fixe identique des deux côtés avant tout échange.
Oublier la masse commune. Comme pour toute liaison, TX et RX n’ont de sens que si les deux composants partagent la même référence de masse (GND).
Voir aussi
- Bus de communication — hub : situer l’UART face à l’I2C et au SPI
- UART sur Arduino · UART sur ESP32 · UART en MicroPython — la mise en œuvre par famille
- I2C — alternative synchrone à plusieurs composants
- SPI — alternative synchrone rapide
- Niveaux de tension — TX/RX à adapter entre un composant 3,3 V et un 5 V