Favorit 88
UARTs
Das letzte Stück des seriellen Puzzles besteht darin, etwas zu finden, das sowohl die seriellen Pakete erzeugt als auch diese physischen Hardwareleitungen steuert. Hier kommt der UART ins Spiel.
Ein universeller asynchroner Empfänger/Sender (UART) ist ein Schaltkreisblock, der für die Implementierung der seriellen Kommunikation zuständig ist. Im Wesentlichen fungiert der UART als Vermittler zwischen parallelen und seriellen Schnittstellen. An einem Ende des UART befindet sich ein Bus mit etwa acht Datenleitungen (plus einige Steuerpins), am anderen Ende die beiden seriellen Leitungen – RX und TX.
UARTs gibt es als eigenständige ICs, aber sie sind häufiger in Mikrocontrollern zu finden. Sie müssen im Datenblatt Ihres Mikrocontrollers nachsehen, ob er über UARTs verfügt. Manche haben keinen, manche haben einen, manche haben viele. Zum Beispiel hat der Arduino Uno – basierend auf dem „altbewährten“ ATmega328 – nur einen einzigen UART, während der Arduino Mega – basierend auf einem ATmega2560 – satte vier UARTs hat.
Wie das R und T in der Abkürzung vorgeben, sind UARTs für das Senden und Empfangen von seriellen Daten zuständig. Auf der Sendeseite muss ein UART das Datenpaket erstellen – unter Anfügung von Sync- und Paritätsbits – und dieses Paket mit präzisem Timing (entsprechend der eingestellten Baudrate) über die TX-Leitung senden. Auf der Empfangsseite muss der UART die RX-Leitung entsprechend der erwarteten Baudrate abtasten, die Sync-Bits heraussuchen und die Daten ausspucken.
Mehr fortgeschrittene UARTs können ihre empfangenen Daten in einen Puffer werfen, wo sie bleiben können, bis der Mikrocontroller kommt, um sie abzuholen. UARTs geben ihre gepufferten Daten normalerweise auf einer First-in-First-out (FIFO)-Basis frei. Puffer können so klein wie ein paar Bits oder so groß wie Tausende von Bytes sein.
Software-UARTs
Wenn ein Mikrocontroller keinen UART hat (oder nicht genug), kann die serielle Schnittstelle bit-banged sein – direkt vom Prozessor gesteuert. Dies ist der Ansatz, den Arduino-Bibliotheken wie SoftwareSerial verfolgen. Bit-Banging ist prozessorintensiv und in der Regel nicht so präzise wie ein UART, aber es funktioniert in der Not!