Favorisé Favorite 88
UARTs
La dernière pièce de ce puzzle série est de trouver quelque chose pour à la fois créer les paquets série et contrôler ces lignes matérielles physiques. Entrez dans l’UART.
Un récepteur/émetteur asynchrone universel (UART) est un bloc de circuit responsable de la mise en œuvre de la communication série. Essentiellement, l’UART agit comme un intermédiaire entre les interfaces parallèles et série. À une extrémité de l’UART se trouve un bus d’environ huit lignes de données (plus quelques broches de contrôle), à l’autre se trouvent les deux fils série – RX et TX.
Les UART existent en tant que circuits intégrés autonomes, mais on les trouve plus souvent à l’intérieur des microcontrôleurs. Vous devrez vérifier la fiche technique de votre microcontrôleur pour voir s’il possède des UART. Certains n’en ont pas, d’autres en ont un, d’autres encore en ont plusieurs. Par exemple, l’Arduino Uno – basé sur le « vieux fidèle » ATmega328 – n’a qu’un seul UART, tandis que l’Arduino Mega – construit sur un ATmega2560 – a un énorme quatre UART.
Comme le R et le T de l’acronyme l’indiquent, les UART sont responsables à la fois de l’émission et de la réception des données série. Du côté de la transmission, un UART doit créer le paquet de données – en y ajoutant des bits de synchronisation et de parité – et envoyer ce paquet sur la ligne TX avec un timing précis (selon le débit en bauds défini). Du côté de la réception, l’UART doit échantillonner la ligne RX à des cadences conformes au débit en bauds prévu, prélever les bits de synchronisation et recracher les données.
Les UART plus avancés peuvent jeter leurs données reçues dans un tampon, où elles peuvent rester jusqu’à ce que le microcontrôleur vienne les chercher. Les UART libèrent généralement leurs données tamponnées sur la base du principe du premier entré, premier sorti (FIFO). Les tampons peuvent être aussi petits que quelques bits, ou aussi grands que des milliers d’octets.
Les UART logiciels
Si un microcontrôleur n’a pas d’UART (ou n’en a pas assez), l’interface série peut être bit-bangée – directement contrôlée par le processeur. C’est l’approche adoptée par les bibliothèques Arduino comme SoftwareSerial. Le bit-banging est gourmand en processeur, et n’est généralement pas aussi précis qu’un UART, mais il fonctionne à la rigueur !
.