21 min de lecture Hugues Orgitello
Bus UART : Guide Complet pour Systèmes Embarqués
Guide technique bus UART pour systèmes embarqués : architecture, trames, débits, RS-232, RS-485, Modbus. Expertise AESTECHNO Montpellier, 10+ ans.
Le bus UART, Universal Asynchronous Receiver-Transmitter (UART), est 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, selon Texas Instruments qui fournissait les premiers composants 8250/16550, 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. Nous intégrons des liaisons UART dans nos 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 aux normes IEC 61158 et IEEE 802.3.
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.
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.
- 1 bit de START : Toujours à l'état bas (0), signale le début de la transmission
- 5 à 9 bits de DATA : Les données utiles (généralement 8 bits)
- 1 bit de PARITÉ (optionnel) : Détection d'erreur simple (parité paire ou impaire)
- 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.
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 par seconde, 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.
- 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 environ 20 ppm sur une fréquence de 16 MHz). 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.
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.
- 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 100 ohms pour un differential pair 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.
Retour terrain : campagne de qualification UART / RS-485 dans notre laboratoire
Sur un projet récent de passerelle Modbus-RTU industrielle, dans notre laboratoire AESTECHNO à Montpellier, nous avons mesuré 18 sur 20 liaisons UART profilées à 921600 baud. Le banc utilisait 5 m de paire torsadée RS-485 catégorie 5e blindée. Le BER mesuré reste inférieur à 1e-9 sur 24 heures de stress thermique. Notre méthodologie de mesure reste constante sur chaque intégration UART. Première étape : capture des fronts TX/RX sur banc Tektronix MSO64B avec la suite Tektronix TekExpress, pour analyser les temps de trame et la gigue cycle-à-cycle. Deuxième étape : caractérisation de la marge de bruit différentiel RS-485 et du bias de ligne, avec deux bornes 120 ohms en bout de bus. Troisième étape : validation du BER et du CRC sous stress CEM conforme à IEC 61000-4-3 (RF rayonnée 10 V/m) et IEC 61000-4-6 (conduit). Contrairement à l'idée reçue selon laquelle un format 8N1 laisse toujours assez de marge à haut débit, nous avons constaté l'inverse. Le différentiel chute de 1,2 V à 380 mV au-delà de 8 m sur câble non blindé. C'est juste au-dessus des 200 mV minimum exigés par TIA/EIA-485. Le retour d'expérience de l'équipe d'intégration confirme. Dans notre pratique sur les intégrations UART / RS-485, nous avons observé un pattern net. Les transceivers SIC type NXP TJA1463 et Texas Instruments THVD1500 maintiennent une bus loading inférieure à 1/8 unit load. Ces composants tolèrent jusqu'à 256 nœuds. Les transceivers historiques type Maxim MAX485 saturent dès 32 nœuds. Malgré la tension entre coût composant et marge fonctionnelle, nous recommandons un transceiver SIC à 1/8 UL dès que la topologie dépasse 16 nœuds ou 200 m de bus.
Nous avons également comparé l'UART à ses cousins multi-maître. Le bus CAN (Controller Area Network) couvre les variantes CAN-FD, CAN-XL, CANopen et J1939, régies par la norme ISO 11898. Cet ensemble offre une arbitration sans collision plus robuste qu'un Modbus-RTU sur RS-485. Le prix payé est une couche logicielle ISO-TP plus lourde. Selon Analog Devices et la Modbus Organization, le RS-485 reste imbattable pour les fieldbus industriels jusqu'à 10 Mbps lorsque la simplicité prime. Pour le multi-capteur embarqué dans un même boîtier, le bus I3C MIPI ou un bus I²C classique reste préférable. Selon Maxim Integrated et Analog Devices, le choix du transceiver MCP2542FD ou TCAN1042 conditionne la robustesse en mode commun. Pour aller plus loin sur les protocoles série embarqués, parcourez nos analyses techniques sur le blog AESTECHNO.
É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.
- 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.
- 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.
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 l'Université de Karlsruhe et 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é.
| 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 |
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.
- 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é.
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.
- Vérifiez les niveaux de tension : 3.3V vs 5V, utilisez des level shifters si nécessaire
- Croisez TX et RX : Erreur la plus fréquente !
- Utilisez une masse commune : GND partagée indispensable
- Activez le DMA : Pour réduire la charge CPU sur transferts lourds (voir notre guide sur le logiciel embarqué industriel)
- Ajoutez un CRC/Checksum : Pour valider l'intégrité des données en production
- Limitez les longueurs de câbles : moins de 3 m en TTL, utilisez RS-485 pour longues distances
- Dimensionnez les FIFO : Pour éviter les pertes de données sur pics de charge
Pourquoi Choisir AESTECHNO ?
- 10+ ans d'expertise en protocoles de communication embarqués
- 100% de réussite aux certifications CE/FCC
- 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 ?
Nous intégrons et qualifions des liaisons série dans vos 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
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 est 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.
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.
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 :
- Bus I2C : Fonctionnement et Applications, Protocole multi-périphériques 2 fils
- Bus SPI : Intégration en Systèmes Embarqués, Communication haute vitesse synchrone
- PCI Express : Performance et Évolution, Bus haute performance pour systèmes complexes
- Compatibilité Électromagnétique (CEM), Protéger vos bus de communication
- Logiciel Embarqué Industriel : Guide Complet, Développement firmware et intégration
- Bureau d'étude électronique, Conception complète de systèmes embarqués