Aller au contenu
AESTECHNO
Mis à jour le  28 min de lecture Hugues Orgitello

Bus UART : Guide Complet pour Systèmes Embarqués

Guide technique du bus UART pour systèmes embarqués : architecture, trames, débits, RS-232, RS-485, Modbus. Expertise AESTECHNO Montpellier, 10+ ans d'embarqué.
Diagramme oeil sur oscilloscope : analyse d'intégrité d'un signal série type UART.

Sur un bus UART neuf, le symptôme le plus courant n'est pas le silence, c'est le caractère faux : une liaison à 115 200 bauds sur horloge interne peut échouer alors que la même carte fonctionne à 9 600. Ce bus, Universal Asynchronous Receiver-Transmitter (UART), est pourtant l'un des protocoles de communication série les plus utilisés en électronique embarquée. Simple, économique et universel, il reste incontournable pour le débogage, la communication inter-composants et les applications industrielles, en particulier encapsulé dans du RS-485 (TIA/EIA-485) ou du RS-232 (TIA/EIA-232) selon les spécifications historiques ratifiées par la TIA/IEEE. Le support UART Linux est documenté sur kernel.org.

L'UART, dont les premiers composants intégrés 8250/16550 ont été conçus par National Semiconductor, doit sa longévité à sa simplicité matérielle et son intégration native dans les RTOS modernes (FreeRTOS, Zephyr) comme dans les HAL de Yocto BSP Linux embarqué. D'après FTDI, éditeur des ponts USB-UART FT232 les plus diffusés, et selon Silicon Labs (famille CP2102N), l'UART reste la couche physique privilégiée des bus industriels Modbus-RTU. Selon NXP Semiconductors, également fournisseur de transceivers RS-485, les contraintes de compatibilité se traitent au niveau driver plutôt que logique. Notre équipe intègre des liaisons UART dans des systèmes embarqués depuis plus de 10 ans, sur STM32 (Cortex-M0, Cortex-M4 et Cortex-M7), nRF52, ESP32 et Raspberry Pi, que ce soit pour des consoles de débogage, des protocoles Modbus ou des communications RS-485 longue distance conformes à la norme IEC 61158.

En résumé (TL;DR)

UART est un bus série asynchrone point à point sur 4 broches (VCC, TX, RX, GND). La trame 8N1 combine 1 bit de start, 8 bits de données LSB-first et 1 bit de stop, typiquement à 115200 baud. RS-232 atteint 15 m, RS-485 différentiel monte à 1200 m en multi-drop 32 nœuds selon TIA/EIA-485.

Une carte avec des liaisons série à concevoir ? Chez AESTECHNO, bureau d'études électronique à Montpellier, nous concevons des cartes industrielles et leurs interfaces, avec la pré-conformité CEM dès le schéma. Découvrir notre expertise hardware ou réserver un audit gratuit de 30 min.

Qu'est-ce que le bus UART ?

Le bus UART est une liaison série asynchrone permettant l'émission et la réception de données entre composants électroniques. Contrairement aux bus synchrones comme SPI ou I2C, l'UART ne nécessite pas de signal d'horloge partagé, ce qui simplifie le câblage et réduit le nombre de connexions nécessaires entre les périphériques.

Le bus UART repose sur deux lignes de données, TX pour l'émission et RX pour la réception, plus une masse commune et en général une alimentation. Chaque octet circule dans une trame qui commence par un bit de start et se termine par un ou deux bits de stop, à un débit convenu à l'avance des deux côtés. Nous détaillons ci-dessous l'architecture matérielle de l'UART, puis les niveaux de tension courants, de 1,8 V jusqu'à ±12 V en RS-232.

Architecture matérielle de l'UART

Le bus Universal Asynchronous Receiver Transmitter (UART) standard est un bus série point à point, Point To Point (PTP), généralement composé de 4 broches de signal :

  • VCC : Alimentation (typiquement +3.3V ou +5V)
  • TX (Transmit) : Ligne d'émission
  • RX (Receive) : Ligne de réception
  • GND : Masse commune

Erreur classique à éviter : lors du câblage, il faut croiser TX et RX. Le TX de l'émetteur doit être connecté au RX du récepteur, et inversement. Dans notre pratique, cette erreur de câblage est la première cause de dysfonctionnement lors de la mise en service de liaisons série, notamment entre un STM32 et un module Bluetooth ou ESP32 externe.

Niveaux de tension courants

Les tensions d'alimentation les plus courantes pour l'UART sont :

  • +3.3V : Standard moderne (microcontrôleurs récents, IoT)
  • +5V : Standard historique (Arduino, anciens MCU)
  • +2.5V / +1.8V : Applications basse consommation
  • ±12V (RS-232) : Standard ancien pour longues distances

Il est essentiel de vérifier la compatibilité des niveaux logiques entre émetteur et récepteur pour éviter d'endommager les composants.

Format de trame UART

La trame UART est l'unité fondamentale de communication série asynchrone : elle définit la structure précise des bits transmis entre un émetteur et un récepteur, incluant les bits de start, de données, de parité optionnelle et de stop, selon une convention préétablie entre les deux parties.

Une trame UART se compose d'un bit de start à l'état bas, de 5 à 9 bits de données (généralement 8), d'un bit de parité optionnel et d'un ou deux bits de stop à l'état haut. La configuration la plus répandue est le format 8N1 : 8 bits de données, aucune parité, 1 bit de stop. Les deux extrémités doivent partager exactement ce format, sinon le périphérique signale des erreurs de parité ou de framing.

  1. 1 bit de START : Toujours à l'état bas (0), signale le début de la transmission
  2. 5 à 9 bits de DATA : Les données utiles (généralement 8 bits)
  3. 1 bit de PARITÉ (optionnel) : Détection d'erreur simple (parité paire ou impaire)
  4. 1 ou 2 bits de STOP : Toujours à l'état haut (1), marquent la fin de la trame

Si la ligne reste à l'état bas pendant plus d'un temps de caractère, c'est une condition de BREAK, utilisée pour réinitialiser la communication ou signaler une erreur.

Anatomie d'une trame UART 8N1 transmettant l'octet 0x55 Trame UART standard 8N1 : ligne idle au niveau haut, bit de start à zéro, huit bits de données émis LSB en premier (octet 0x55 alterne 1 0 1 0 1 0 1 0), bit de stop au niveau haut, retour à l'état idle. Trame UART 8N1 - octet 0x55 (LSB en premier) 1 start + 8 data + 0 parity + 1 stop = 10 bits par caractère VOH VOL idle START 0 D0 1 D1 0 D2 1 D3 0 D4 1 D5 0 D6 1 D7 0 STOP 1 idle 8 bits de données - LSB transmis en premier (0x55 = 0101 0101) Tbit = 1/baud (à 115200 baud, Tbit = 8,68 us)
Figure 2. Anatomie d'une trame UART 8N1 transmettant l'octet 0x55. La ligne au repos est haute, le bit de start force un front descendant qui déclenche le receveur, puis huit bits LSB-first portent les données, et le bit de stop ramène la ligne au niveau haut avant la trame suivante.

Les valeurs de référence de la trame UART 8N1 :

Paramètre (UART 8N1) Valeur
Structure de trame1 start + 8 données + 0 parité + 1 stop = 10 bits par caractère
Temps bit à 115200 baudsTbit = 1/baud = 8,68 µs
Temps caractère à 115200 bauds10 bits x 8,68 µs = 86,8 µs
Suréchantillonnage récepteur16x, échantillon au centre du bit

Débits de transmission (Baud rate)

Le baud rate détermine la vitesse de transmission des bits sur une liaison UART. Ce paramètre, exprimé en bauds, doit être identique côté émetteur et côté récepteur pour garantir une communication fiable, car l'UART ne transmet aucun signal d'horloge.

Les débits les plus courants vont de 9600 bauds, standard historique très fiable, à 115200 bauds, le plus utilisé aujourd'hui pour le débogage et les consoles, et jusqu'à 24 Mbauds sur des MCU modernes comme les STM32. Plus le débit monte, plus la précision des horloges compte : nous recommandons un quartz externe dès que le débit dépasse 115200 bauds, pour éviter toute dérive entre émetteur et récepteur. La liste ci-dessous résume ces valeurs de référence.

  • 9600 baud/s : Standard historique, très fiable
  • 115200 baud/s : Le plus utilisé aujourd'hui (débogage, consoles)
  • Jusqu'à 24 Mbaud/s : Sur MCU modernes (ex. STM32)

Le signal UART étant asynchrone, l'horloge de l'émetteur et du récepteur doivent être suffisamment précises (tolérance de 2 %, soit 20 000 ppm). Les horloges RC internes des anciens MCU posaient souvent problème, mais les MCU modernes comme les STM32 utilisent du sur-échantillonnage (typiquement 16x) pour réduire considérablement les erreurs de synchronisation. En pratique, une liaison à 115200 bps avec horloge RC présente une marge d'erreur de 3 % environ ; un quartz externe de 8 MHz ou 16 MHz garantit une stabilité inférieure à 100 ppm. Nous recommandons un quartz externe dès que le baud rate dépasse 115200 baud/s pour éviter toute dérive. La consommation typique d'un transceiver UART est de l'ordre de 5 mA à 3.3V, montant à 50 mA en émission RS-485.

Tolérance d'horloge UART et sur-échantillonnage 16x Le receveur sur-échantillonne chaque bit à 16x pour aligner sa fenêtre d'échantillonnage au centre du bit. Avec +-2 pourcent d'écart, l'échantillon reste dans la zone valide. À +-3,5 pourcent l'accumulation sur 10 bits décale l'échantillon hors de la zone valide et le stop bit est manque. Sur-échantillonnage 16x et Tolérance d'horloge Le receveur échantillonne au milieu de chaque bit (positions 8/9 sur 16) Émetteur START D0 D1 D2 D3 D4 D5 D6 D7 STOP Receveur +-2% (OK) Échantillon centré dans la fenêtre valide à chaque bit Receveur +-3,5% (FAIL) dérive cumulée 27% L'échantillon sort de la fenêtre du STOP : framing error, octet rejeté Conclusion : Tolérance pratique +-2% (quartz externe), le RC interne (+-3 à 5%) ne tient pas à 115200 baud
Figure 3. Le sur-échantillonnage 16x du récepteur place chaque échantillon au centre du bit. Avec une dérive d'horloge inférieure à +-2 %, la marge reste suffisante sur les dix bits d'une trame ; au-delà de +-3 %, l'erreur cumulée fait sortir l'échantillon du bit STOP et provoque un framing error.

Débogage UART au bring-up : caractères illisibles et tolérance de débit

Le symptôme le plus courant sur une liaison UART neuve n'est pas le silence, c'est le caractère faux. Des octets arrivent, ils sont juste incorrects, et cela pointe presque toujours vers le même endroit : l'horloge, pas le câblage.

Face à une liaison UART qui produit des caractères illisibles, nous suivons toujours la même démarche : comprendre pourquoi le débit tolère si peu d'écart, passer en revue les causes par ordre de fréquence (écart de débit, format de trame, niveaux physiques, débordement de réception, contrôle de flux), puis les distinguer avec les drapeaux du périphérique et une mesure de largeur de bit à l'oscilloscope. Un test simple à 9 600 bauds tranche souvent la question avant tout changement de matériel ou de câblage.

Pourquoi le débit tolère si peu d'écart

L'UART est asynchrone : aucune horloge n'est transmise. Le récepteur se synchronise sur le front descendant du bit de start, puis compte le temps pour échantillonner chaque bit en son milieu, en général avec un sur-échantillonnage par 16. À partir de là, toute différence de fréquence entre les deux extrémités s'accumule bit après bit.

Le budget est donc fixé par la fin de trame, pas par le début. Sur une trame classique de dix bits, start plus huit données plus stop, le dernier bit est échantillonné après dix périodes et demie. Pour que le point de mesure reste dans le bon bit, l'écart cumulé doit rester inférieur à une demi-période, soit environ 4,7 % en théorie. En pratique il faut partager ce budget entre l'émetteur et le récepteur, et garder de la marge pour la température : au-delà de 2 % d'écart total, la liaison devient fragile.

C'est ce qui condamne certaines combinaisons parfaitement raisonnables sur le papier. Un oscillateur RC interne annoncé à plus ou moins 1 % à 25 °C dérive souvent au-delà de 2 % sur la plage industrielle. Ajoutez l'erreur d'arrondi du diviseur de débit, qui grandit à mesure que le débit monte, et une liaison à 115 200 bauds sur horloge interne peut échouer alors que la même carte fonctionne à 9 600.

Les causes, par ordre de fréquence

  • Écart de débit. Caractères faux mais réguliers, souvent les mêmes substitutions. Calculez le diviseur réel de chaque côté, pas le débit demandé : c'est l'arrondi entier qui crée l'erreur.
  • Format de trame différent. Parité, nombre de bits de stop ou longueur de mot qui ne correspondent pas. Le symptôme se distingue du précédent : une erreur de parité ou de framing est signalée par le périphérique, alors qu'un écart de débit modéré passe souvent sans drapeau.
  • Niveaux physiques incompatibles. Une sortie TTL 3,3 V reliée directement à un port RS-232 : les niveaux RS-232 sont inversés et bipolaires. Rien ne brûle forcément, mais rien ne se décode.
  • Débordement de réception. Le logiciel ne vide pas le registre assez vite et perd des octets au milieu d'une trame. Le drapeau overrun le dit explicitement.
  • Absence de contrôle de flux. Sur les transferts continus, le récepteur sature. Le symptôme est une perte par blocs, pas par caractères isolés.

Les distinguer avec ce que vous avez déjà

Lisez d'abord les drapeaux du périphérique : framing, parité et overrun sont exposés séparément et désignent directement trois des cinq causes. Un flot d'octets faux sans aucun drapeau levé oriente au contraire vers un écart de débit, parce qu'un décalage modéré produit des bits faux mais un bit de stop encore valide.

Une mesure suffit à confirmer : à l'oscilloscope ou à l'analyseur logique, mesurez la largeur d'un bit isolé, en général le bit de start. L'inverse de cette durée est le débit réel de l'émetteur. Comparez-le au débit configuré côté récepteur, et l'écart en pourcentage se lit directement.

Un test utile quand rien ne fonctionne : descendez les deux extrémités à 9 600 bauds. Si la liaison devient propre, le problème est un écart de débit ou une marge d'horloge, pas un câblage ni un format.

Ce que coûte l'erreur, et quand appeler

Une marge de débit insuffisante est un défaut qui dépend de la température et de la dispersion des composants. Il passe la validation sur les prototypes, puis apparaît sur une fraction des cartes de série ou en fonctionnement prolongé. Le coût réel n'est pas le débogage, c'est le tri en production.

Tout ce qui précède se fait sans nous. Ce qui justifie un appui, c'est le choix d'architecture d'horloge en amont, quand il faut décider si un quartz est nécessaire, et les liaisons longues ou en environnement perturbé où le format électrique compte autant que le protocole. Voir notre méthode de bureau d'études.

Gestion des erreurs et fiabilité

La gestion des erreurs en UART repose sur des mécanismes de vérification intégrés au niveau matériel et protocolaire. Les techniques de CRC, parité et timeouts permettent de détecter les corruptions de données, les pertes de synchronisation et les dysfonctionnements de la liaison série en environnement réel.

Trois niveaux de protection se complètent : le bit de parité, qui détecte au maximum un bit altéré, le CRC, qui valide l'intégrité d'un paquet complet, et les protocoles applicatifs comme Modbus ou les commandes AT, qui ajoutent des accusés de réception. Le bit de parité seul ne suffit pas en milieu industriel perturbé : en production, nous recommandons systématiquement un contrôle d'intégrité au niveau protocolaire, avec un CRC sur chaque paquet transmis.

  • Bit de parité : Détection d'erreur simple (1 bit altéré maximum)
  • Cyclic Redundancy Check (CRC) : Code de Redondance Cyclique (CRC) pour valider l'intégrité des paquets
  • Protocoles applicatifs : Modbus, AT commands, protocoles propriétaires avec accusés de réception

En production industrielle, nous recommandons systématiquement l'ajout de mécanismes de vérification d'intégrité au niveau protocolaire. Le routage PCB doit respecter un stackup contrôlé avec impédance adaptée (typiquement 120 ohms pour une paire différentielle RS-485), des traces isolées selon les règles IPC-2221 et IPC-2251, et une stratégie EMC conforme aux émissions IEC 61000 et EN 55011. Dans notre pratique, l'absence de CRC sur une liaison série en milieu industriel entraîne systématiquement des problèmes de fiabilité à moyen terme, notamment en présence de perturbations électromagnétiques conformes à IEC 61000-4-4 (burst) et IEC 61000-4-6 (conducted RF). Cette approche s'intègre parfaitement dans une stratégie globale de gestion des risques en projet électronique.

Évolution technologique : FIFO, DMA et interruptions intelligentes

Les périphériques UART modernes intègrent des fonctionnalités avancées qui améliorent considérablement les performances et l'efficacité par rapport aux implémentations historiques. Le DMA, les FIFO matériels et les interruptions configurables permettent de gérer des flux de données importants sans surcharger le processeur principal.

Trois mécanismes se combinent : les FIFO matériels, qui mettent les octets en tampon pour réduire la charge CPU, le DMA, qui transfère les données vers la mémoire sans intervention du processeur, et les interruptions configurables, déclenchées sur une adresse, une fin de transmission ou un buffer plein. Sur un microcontrôleur qui gère des flux importants, ces trois briques évitent les pertes d'octets par débordement de réception et libèrent le processeur pour le reste de l'application.

  • FIFO (First In First Out) : Buffers matériels pour réduire la charge CPU
  • DMA (Direct Memory Access) : Transferts automatiques sans intervention du CPU, idéal pour grandes quantités de données
  • Interruptions configurables : Déclenchement sur adresses spécifiques, fin de transmission, buffer plein, etc.

Les améliorations DMA et interruptions permettent d'envoyer ou recevoir des volumes importants de données sans monopoliser les ressources de calcul.

Applications : consoles de débogage et caractères ASCII

L'UART est le protocole de référence pour les consoles de débogage en systèmes embarqués. Accessible, universel et lisible directement en texte ASCII, il permet aux développeurs et aux équipes de support d'observer en temps réel le comportement interne d'un système sans instrumentation complexe.

Une console UART se résume à un convertisseur USB-UART côté PC et à un terminal série configuré au même débit et au même format que la carte, par exemple 115200 bauds en 8N1. Les terminaux les plus utilisés sont Tera Term sous Windows, PuTTY sous Windows et Linux, picocom ou minicom sous Linux, et screen ou cu sous macOS et Linux. Le choix du terminal importe peu : tous affichent les mêmes caractères ASCII.

  • Tera Term (Windows)
  • PuTTY (Windows/Linux)
  • picocom / minicom (Linux)
  • screen / cu (macOS/Linux)

Les messages sont transmis en caractères ASCII, permettant une lecture directe des logs, erreurs et états du système. C'est l'outil indispensable pour diagnostiquer un système embarqué.

Protocoles basés sur UART

De nombreux protocoles de communication s'appuient sur la couche physique UART pour transmettre des données structurées. Ces protocoles applicatifs ajoutent des règles de formatage, d'adressage et de vérification d'intégrité au-dessus de la liaison série de base, adaptées à des cas d'usage spécifiques.

Trois familles dominent : le protocole AT, né pour piloter les modems et toujours utilisé par les modules GSM/LTE, Wi-Fi et Bluetooth ; Modbus RTU, protocole industriel historique qui s'appuie souvent sur une couche physique RS-485 ; et le bus CAN, développé par Bosch pour l'automobile, avec sa couche physique différentielle robuste. Nous présentons chacun ci-dessous avec ses cas d'usage typiques, ses points forts et le support physique qu'il utilise le plus souvent.

Protocole AT Commands

Le protocole AT (initialement "Attention") a été développé pour piloter des modems (Hayes Smartmodem 300). Aujourd'hui, il reste très utilisé pour :

  • Modules GSM/LTE (envoi de SMS, appels, données mobiles)
  • Modules Wi-Fi et Bluetooth (ESP32, ESP8266)
  • Modems IoT (configuration, connexion réseau)

Modbus RTU (RS-485)

Le Modbus est un protocole industriel historique, encore largement déployé dans les systèmes de maintenance prédictive IoT. Il utilise souvent du RS-485 comme support physique, permettant :

  • Longues distances (jusqu'à 1200 mètres)
  • Environnements bruités (industrie, usines)
  • Multi-drop (jusqu'à 32 ou 256 nœuds selon le standard)

Le Modbus n'est pas optimisé pour les gros débits, mais excelle pour connecter des automates, capteurs et actionneurs industriels.

CAN Bus

Le CAN (Controller Area Network) a été développé par Bosch pour l'automobile. Il s'agit d'un bus série avec une couche physique différentielle robuste, conçu pour :

  • Applications temps réel
  • Réduction du câblage automobile
  • Fiabilité élevée (détection et correction d'erreurs)

Standards physiques : RS-232, RS-485, TTL

Les standards physiques définissent les niveaux de tension, les distances maximales et les topologies de connexion pour les liaisons série. Le choix du standard physique conditionne directement la robustesse, la portée et l'immunité au bruit de la communication UART dans un environnement donné.

Trois standards couvrent l'essentiel des besoins : le TTL UART, en 0/3,3 V ou 0/5 V, limité aux liaisons courtes sur PCB ; le RS-232, de ±3 V à ±15 V, jusqu'à 15 m en point à point ; et le RS-485, différentiel, jusqu'à 1200 m en multi-drop sur 32 nœuds. Le tableau ci-dessous compare niveaux logiques, distance, topologie, immunité au bruit et cas d'usage. Pour toute liaison série qui dépasse quelques mètres en milieu industriel, nous privilégions le RS-485.

Caractéristique UART (TTL) RS-232 RS-485
Niveaux logiques 0/3.3V ou 0/5V ±3V à ±15V Différentiel ±1.5V à ±6V
Distance max <1 m (PCB) 15 m 1200 m
Topologie Point-à-point Point-à-point Multi-drop (jusqu'à 32 nœuds)
Immunité bruit Faible Moyenne Élevée (différentiel)
Cas d'usage Debug, inter-MCU Équipement legacy, modems Industrie, automates, Modbus
Niveaux électriques et topologies TTL UART vs RS-232 vs RS-485 TTL UART utilise des niveaux 0V/3,3V single-ended sur quelques mètres point à point. RS-232 utilise +-3 à +-15V single-ended jusqu'à 15 mètres. RS-485 utilise une paire différentielle +-1,5 à +-6V détectée à partir de 200 mV de différence, jusqu'à 1200 mètres en multi-drop sur 32 noeuds. TTL UART vs RS-232 vs RS-485 - niveaux et topologie TTL UART single-ended, < 3 m 3,3V 0V VOH = 3,3 V VOL = 0 V MCU A MCU B point à point - GND commune RS-232 single-ended, jusqu'à 15 m +12V 0V -12V '1' = -3 à -15 V '0' = +3 à +15 V DTE 1 DTE 2 DB9 - blindage 360 deg recommandé RS-485 différentiel, jusqu'à 1200 m A B VA - VB > +200 mV = '1' VA - VB < -200 mV = '0' Master N1 N2 N32 multi-drop - jusqu'à 32 noeuds terminaisons 120 ohms aux extrémités
Figure 4. Trois standards physiques pour la même couche logique UART. Le TTL reste cantonné aux liaisons courtes sur PCB ; le RS-232 étend la portée en gardant un signal single-ended à forte amplitude ; le RS-485, différentiel et multi-drop, monte à 1200 mètres en milieu industriel grâce à une détection à +-200 mV qui rejette le bruit de mode commun.

RS-232

Le RS-232 est l'ancien standard de port série (DB-9 ou DB-25), ratifié initialement par la Electronic Industries Alliance (EIA) puis repris par la TIA. Il utilise des niveaux de tension ±12V pour améliorer la résistance au bruit et permettre des câbles plus longs (jusqu'à 15 mètres). Progressivement remplacé par l'USB, il subsiste encore dans certaines applications industrielles grâce à son blindage 360° et sa robustesse.

RS-485

Le RS-485, également appelé TIA-485 selon TIA/EIA-485-A, est un standard différentiel multi-point permettant :

  • Longues distances (jusqu'à 1200 m)
  • Haute immunité au bruit
  • Multi-drop (jusqu'à 32 nœuds sans répéteur)

Très utilisé en industrie avec Modbus, DMX512, Profibus, etc. Dans notre pratique, nous privilégions systématiquement le RS-485 pour toute liaison série dépassant quelques mètres en environnement industriel.

TTL UART

Le TTL UART (0V/3.3V ou 0V/5V) est le standard direct des microcontrôleurs STM32, nRF52 et ESP32. Simple et économique, mais limité en distance (quelques mètres maximum) et sensible aux perturbations électromagnétiques.

Convertisseurs USB vers UART

Les convertisseurs USB-UART sont des composants essentiels qui permettent de relier un microcontrôleur disposant d'une interface UART à un ordinateur via un port USB. Ils émulent un port série virtuel et sont indispensables pour le débogage, la programmation et la communication avec des systèmes embarqués.

Les trois références les plus répandues sont le FTDI FT232, le plus populaire et très fiable, le Silabs CP2102, économique et performant, et le CH340, très bon marché mais exposé aux contrefaçons. Chacun intègre un microcontrôleur USB qui retransmet les données en UART, si bien que, pour l'utilisateur sur un terminal, un convertisseur USB-UART se comporte comme un port RS-232 natif. Le choix dépend surtout du budget et de l'exigence de fiabilité de l'outil de mise en service.

  • FTDI FT232 : Le plus populaire, très fiable
  • Silabs CP2102 : Économique et performant
  • CH340 : Très bon marché (attention aux contrefaçons)

Ces composants intègrent un microcontrôleur USB qui retransmet les données en UART. Pour l'utilisateur final sur un terminal, il n'y a aucune différence entre un RS-232 natif et un convertisseur USB-UART.

Avantages et limitations de l'UART

Comme tout protocole de communication, l'UART présente un ensemble d'avantages et de contraintes qu'il convient d'évaluer selon le contexte du projet. L'analyse comparative permet aux concepteurs de déterminer si l'UART est le choix optimal ou si un autre bus serait plus adapté.

Côté avantages, l'UART coûte très peu puisqu'il est présent dans tous les microcontrôleurs, se contente de deux fils plus la masse, reste un standard ouvert et se lit directement en ASCII sur un terminal. Côté limitations, il reste point à point (sauf en RS-485 multi-drop), exige des horloges précises faute de signal d'horloge, offre un débit inférieur à SPI, USB ou PCI Express et ne fournit aucun accusé de réception sans protocole applicatif. Les deux listes ci-dessous détaillent chaque point.

Avantages

  • Coût très faible : Présent dans tous les microcontrôleurs
  • Simplicité : Seulement 2 fils (TX/RX) + GND
  • Universel : Standard ouvert, compatible partout
  • Débogage facile : Lecture ASCII directe sur terminal

Limitations

  • Point à point : Un émetteur, un récepteur (sauf RS-485 multi-drop)
  • Pas d'horloge : Nécessite synchronisation précise des horloges
  • Débit limité : Moins rapide que SPI, USB ou PCI Express
  • Pas d'accusé de réception : Nécessite un protocole applicatif pour garantir la fiabilité

Bonnes pratiques pour intégrer l'UART dans vos projets

L'intégration réussie d'une liaison UART dans un système embarqué repose sur le respect de règles fondamentales de conception. Les bonnes pratiques AESTECHNO, issues de notre expérience terrain, couvrent le câblage, la configuration logicielle et la validation en conditions réelles pour garantir une communication fiable.

Ces règles tiennent en sept points : vérifier les niveaux de tension, croiser TX et RX, partager une masse commune, activer le DMA, ajouter un CRC, limiter les longueurs de câble en TTL et dimensionner les FIFO. Les trois premières concernent la mise en service et le câblage, là où se produit l'erreur la plus fréquente ; les quatre suivantes conditionnent la fiabilité en production, sur des transferts lourds, des pics de charge ou des liaisons longues.

  1. Vérifiez les niveaux de tension : 3.3V vs 5V, utilisez des level shifters si nécessaire
  2. Croisez TX et RX : Erreur la plus fréquente !
  3. Utilisez une masse commune : GND partagée indispensable
  4. Activez le DMA : Pour réduire la charge CPU sur transferts lourds (voir notre guide sur le logiciel embarqué industriel)
  5. Ajoutez un CRC/Checksum : Pour valider l'intégrité des données en production
  6. Limitez les longueurs de câbles : moins de 3 m en TTL, utilisez RS-485 pour longues distances
  7. Dimensionnez les FIFO : Pour éviter les pertes de données sur pics de charge
Erreurs de câblage UART courantes vs câblage correct Quatre erreurs typiques de mise en service UART : TX/RX non croisés, masse non commune, niveaux 5V et 3,3V mélangés sans level shifter, baud rate mal accordé. Le câblage correct croise TX/RX, partage la masse, utilise un level shifter et configure le même baud rate des deux côtés. Quatre erreurs UART courantes - et comment les éviter A NE PAS FAIRE MCU A MCU B TX RX TX RX TX-TX RX-RX 1. TX/RX non croisés Aucune trame ne passe. Cause No1 d'échec à la mise en service. A NE PAS FAIRE 3,3V 5V 2. Niveaux 3,3V et 5V mélangés VIH 5V exige > 3,5 V : un signal 3,3V peut être lu '0' aléatoirement. Risque de retro-alimentation 5V vers 3,3V. A FAIRE MCU A TX RX GND MCU B TX RX GND TX-RX croisés + GND commune Trois fils minimum pour toute liaison TTL, vérifiés à l'ohmmètre avant la 1re mise sous tension. La masse partagée est non négociable. A FAIRE 3,3V Level shifter TXS0108 / BSS138 5V Adaptation 3,3V / 5V via level shifter Bidirectionnel auto-direction (TXS0108) ou MOSFET BSS138 + pull-ups, obligatoire pour ESP32 (3,3V) avec Arduino UNO (5V).
Figure 5. Les deux causes les plus fréquentes d'échec d'une liaison UART en mise en service : un câblage TX/RX non croisé, et un mélange 3,3 V / 5 V sans level shifter. Le bon schéma croise TX et RX, partage explicitement la masse, et inclut un adaptateur de niveau bidirectionnel dès que les deux MCU n'ont pas la même tension d'alimentation.

Pourquoi Choisir AESTECHNO ?

  • 10+ ans d'expertise en protocoles de communication embarqués
  • 100% de réussite aux certifications CE/FCC, sur des dizaines de campagnes menées en plus de 10 ans de pratique
  • 65 projets réalisés depuis 2022
  • Bureau d'études français basé à Montpellier

Article rédigé par Hugues Orgitello, ingénieur en conception électronique et fondateur d'AESTECHNO. Profil LinkedIn.

Projet avec Communication UART/RS-485 ?

Notre équipe intègre et qualifie des liaisons série dans des systèmes embarqués depuis plus de 10 ans.

Audit Gratuit 30 min :

  • Analyse de vos besoins en protocoles série (UART, RS-485, Modbus)
  • Recommandations sur les débits, la robustesse et les distances
  • Conseils sur les tests CEM et la certification industrielle

Réserver un créneau

Ressource gratuite : notre modèle de cahier des charges électronique

Contact direct : contact@aestechno.com

En résumé

Le bus UART est la liaison série asynchrone la plus répandue en électronique embarquée, utilisée aussi bien pour le débogage d'un STM32 ou d'un ESP32 que pour des bus Modbus-RTU sur RS-485 à 1200 mètres. Sa maîtrise industrielle consiste à encadrer trois variables, tension, débit et distance, via un transceiver adapté (TTL, RS-485, RS-232) et un protocole applicatif avec CRC conforme à IEC 61158 pour les fieldbus industriels.

Points clés à retenir :

  • TTL pour liaisons < 3 m, RS-232 pour legacy, RS-485 pour environnements industriels jusqu'à 1200 m.
  • Baud rates standards : 9600, 115200, jusqu'à 24 Mbaud/s sur STM32H7, quartz externe obligatoire au-delà de 115200.
  • CRC16/CRC32 obligatoire en milieu industriel perturbé (IEC 61000-4-4 burst, IEC 61000-4-6 RF).
  • DMA + FIFO indispensables dès que le flux dépasse quelques kB/s pour libérer le CPU.
  • Convertisseurs USB-UART FTDI FT232, Silabs CP2102, WCH CH340 selon budget et fiabilité.

Conclusion : L'UART reste incontournable en 2026

Le bus UART reste indispensable en 2026 malgré l'émergence de protocoles plus modernes (USB, Ethernet, Wi-Fi) grâce à sa simplicité, son universalité et son coût négligeable. Sa fiabilité éprouvée sur des millions de produits, sa maîtrise par tous les développeurs embarqués et son intégration native dans chaque microcontrôleur en font le choix pragmatique pour les consoles, le débogage et les communications industrielles.

Nous intégrons des liaisons UART dans tous nos projets embarqués, que ce soit pour du débogage, des communications industrielles Modbus/RS-485 ou des protocoles propriétaires optimisés. Notre expertise couvre l'ensemble du cycle, de la spécification technique initiale jusqu'à la certification CE/FCC finale.

UART dans votre stratégie produit : simplicité et fiabilité

L'UART est une brique stratégique dont la présence dans une architecture produit conditionne la maintenabilité, les coûts de support et le cycle de vie. Pour les décideurs techniques, sa rusticité constitue justement un atout durable face aux protocoles modernes.

Trois raisons justifient sa place dans chaque produit : l'UART reste pertinent en 2026 grâce à sa simplicité universelle, il sert d'outil de fabrication pour automatiser les tests fonctionnels et programmer les paramètres usine, et il garantit la maintenabilité en offrant un canal de diagnostic lisible en ASCII pendant toute la vie du produit. Le coût d'intégration reste minime, deux broches et quelques lignes de code, au regard du temps de diagnostic économisé sur le terrain.

Pourquoi l'UART reste pertinent en 2026

Malgré l'évolution vers des bus plus rapides comme le SPI, l'I2C ou le PCI Express, l'UART conserve un avantage unique : sa simplicité universelle. Dans notre pratique, tout système embarqué qui ne dispose pas d'un port UART de débogage finit par coûter plus cher en maintenance et en diagnostic terrain. C'est un investissement minime (deux broches, quelques lignes de code) qui réduit considérablement le temps de résolution des problèmes en production.

L'UART comme outil de fabrication et de diagnostic

En phase de fabrication, l'UART permet d'automatiser les tests fonctionnels, de programmer les paramètres usine et de valider chaque carte avant expédition. Cette étape s'inscrit dans notre méthodologie DFM (Design for Manufacturing) pour optimiser les coûts de production. Sur le terrain, un port UART accessible permet aux équipes de support de diagnostiquer rapidement un dysfonctionnement sans équipement spécialisé. Nous recommandons systématiquement d'intégrer une interface UART dans le logiciel embarqué de chaque produit, même si ce n'est pas la liaison de communication principale.

Impact sur la maintenabilité du produit

Un produit connecté déployé sur le terrain pendant plusieurs années nécessitera inévitablement des diagnostics, des mises à jour firmware ou des investigations suite à des retours clients. L'UART offre un canal direct, lisible en ASCII, qui ne dépend d'aucun stack logiciel complexe. Nous concevons nos architectures pour que chaque produit dispose d'un accès UART documenté, garantissant une maintenabilité long terme et des coûts de support après-vente maîtrisés. Cette approche s'intègre dans notre process de passage du prototype au produit série.

FAQ : Bus UART en Systèmes Embarqués

Quelle est la différence entre UART et USART ?
UART signifie Universal Asynchronous Receiver-Transmitter (asynchrone uniquement). USART ajoute le "S" pour Synchronous, permettant d'utiliser une horloge partagée comme en SPI. En mode synchrone, l'USART génère un signal d'horloge (SCK) éliminant les problèmes de dérive d'horloge. Les STM32 et la plupart des MCU modernes intègrent des USART (modes asynchrone et synchrone), mais 99% des applications n'utilisent que le mode asynchrone classique.

Pourquoi mes communications UART sont-elles instables ou présentent-elles des erreurs ?
Les causes fréquentes sont : désaccord de baud rate (vérifiez que émetteur et récepteur utilisent la même vitesse), horloges imprécises (les oscillateurs RC internes peuvent dériver de 5-10%, utilisez un quartz externe pour débits >115200), câbles trop longs (>3m en TTL 3.3V augmente le bruit), niveaux de tension incompatibles (3.3V vs 5V, nécessite un level shifter), ou masse non commune (GND partagée obligatoire).

Comment choisir entre UART, SPI et I2C pour mon projet ?
Choisissez I2C pour connecter plusieurs périphériques avec peu de broches (capteurs multiples). Choisissez SPI pour débits élevés et communication full-duplex (écrans, cartes SD, mémoires Flash). Choisissez UART pour point-à-point simple, débogage, longues distances avec RS-485, ou compatibilité avec équipements série existants. UART est aussi le seul facilement lisible en ASCII sur terminal série.

Qu'est-ce que le DMA et pourquoi l'utiliser avec UART ?
Le DMA (Direct Memory Access) permet au périphérique UART de transférer automatiquement les données depuis/vers la mémoire RAM sans intervention du CPU. Avantages : CPU libéré pour autres tâches pendant transferts, aucune interruption par byte (interruption uniquement en fin de transfert), débits soutenus sans perte de données. Indispensable pour : logs volumineux, protocoles binaires haute vitesse, systèmes temps réel où chaque cycle CPU compte.

Comment sécuriser les communications UART en production industrielle ?
Pour garantir fiabilité et sécurité : implémentez un CRC16 ou CRC32 pour valider l'intégrité des paquets, ajoutez des numéros de séquence pour détecter paquets perdus ou dupliqués, utilisez des timeouts pour détecter équipements déconnectés, optez pour RS-485 en environnement bruité (immunité EMI), chiffrez les données sensibles (AES au niveau applicatif), et testez en conditions réelles (température, vibrations, perturbations CEM). AESTECHNO qualifie systématiquement les liaisons série en environnement industriel sévère.

Articles Connexes

Approfondissez vos connaissances en protocoles de communication embarqués :