Die UART Schnittstelle

UART steht für Universal Asynchronous Receiver Transmitter. Es ist eine serielle Schnittstelle, wobei die Datenübertragung asynchron (also ohne eigenes Taktsignal) erfolgt. Zwei Systeme können über UART im full-duplex Betrieb Daten austauschen. Auf den meisten Mikrocontrollern ist ein UART als Hardware als TTL-UART integriert. UART ist die Grundlage für die RS232 oder RS485 Schnittstelle.

Die UART-Schnittstelle wird, beispielsweise auch in der Arduino IDE, oft als Serielle Schnittstelle bezeichnet.

Aufbau der UART Schnittstelle

UART Interface

TTL-UART Interface Aufbau

Eine UART Schnittstelle besitzt zwei Anschlüsse: TxD und RxD (oft auch als Tx und Rx bezeichnet)

Wichtig ist aber auch ein gemeinsamer Masseanschluss! Dies wird in vielen Beschreibungen nicht erwähnt. Liegen die Kommunikationspartner auf unterschiedlichen Masse-Potenzialen kann dies im schlimmsten Fall zur Zerstörung des Mikrocontrollers führen.

Findet die Kommunikation ohne Pegelwandlung auf TTL oder CMOS-Pegel statt (wie in der Abbildung), so spricht man auch von einem TTL-UART.

TxD

TxD steht für Transmit Data. Von hier aus werden Daten an den Kommunikationspartner gesendet. Der TxD-Pin fungiert also als Ausgangs-Pin.

RxD

RxD steht für Receive Data. Hier aus werden Daten vom Kommunikationspartner empfangen. Der RxD-Pin fungiert also als Eingangs-Pin.

Verbindung der Systeme

Die Verbindung der Anschlüsse der Kommunikationspartner erfolgt über Kreuz, d.h. der TxD Ausgang des ersten Systems wird mit dem RxD Eingang des zweiten Systems verbunden und umgekehrt.

Dadurch entsteht ein bidirektionaler Bus, der eine full-duplex-Kommunikation zulässt. Die Kommunikationspartner können also gleichzeitig Daten senden und empfangen.

Mittels UART können immer nur zwei Partner miteinander verbunden werden. Manche Mikrocontroller haben daher mehrere UART-Blöcke als Hardwarekomponente eingebaut, damit eine Kommunikation mit mehreren Systemen möglich ist.
Da das UART-Protokoll sehr einfach aufgebaut ist, besteht auch die Möglichkeit einen UART-Block softwaremäßig zu emulieren (z.B. die SoftwareSerial() Library in der Arduino IDE).

Das UART-Protokoll

UART

UART Frame Aufbau am Beispiel eines 8N1-Frames

Das UART-Protokoll ist einfach aufgebaut. Für eine Kommunikation über längere Strecken wird das TTL-UART Protokoll in ein RS232 Signal codiert. Die UART-Schnittstelle dient häufig auch zur Kommunikation zwischen Mikrocontroller und PC. Da moderne PCs keine RS232 Schnittstelle mehr besitzen, erfolgt vorher eine Übersetzung von RS232 Signalen zum USB-Standard.

Baudrate

Beim UART Datenübertragung handelt es sich um eine asynchrone Datenübertragung. Es existiert also kein Taktsignal, mit dem sich Sender und Empfänger synchronisieren können. Da es sich beim UART-Protokoll um ein binäres Basisbandsignal handelt, ist die Bitrate gleich der Baudrate (Symbolrate). Die Baudrate (Übertragungsgeschwindigkeit) muss bei beiden Kommunikationspartnern identisch eingestellt werden.

UART-Frame

Die Datenübertragung per UART erfolgt mit einem festen Datenrahmen (UART-Frame). Dieser muss beiden Kommunikationspartnern bekannt sein.
Ein UART-Frame besteht aus:

  • Einem Start-Bit
  • 5-9 Datenbits
  • Einem optionalen Paritätsbit
  • Einem oder zwei Stop-Bits

Startbit

Das Startbit im UART Protokoll wird benötigt, damit sich die Kommunikationspartner synchronisieren können. Im Idle-Zustand ist der UART-Bus auf logisch 1. Das Startbit ist logisch 0 und signalisiert den Start eines UART Frames.

Datenbits

Dem Startbit folgen 5 bis 9 Datenbits. Diese werden im Little-Endian Format versendet, d.h. das LSB (least significant Bit) zuerst.

Paritätsbit

Das Paritätsbit ist optional. Es dient der Fehlererkennung. Es können drei Paritäts-Arten eingestellt werden:

  • Odd-Parity (O): Das Paritätsbit ist logisch 0, wenn die Anzahl der logisch 1-Bits ungerade ist.
  • Stop-Bits
  • Even-Parity (E): Das Paritätsbit ist logisch 0, wenn die Anzahl der logisch 1-Bits gerade ist.
  • No Parity (N): Das Paritätsbit wird nicht benutzt.

Stop-Bits

Der UART-Frame wird durch ein oder zwei Stop-Bits abgeschlossen. Manchmal wird auch ein verlängertes Stop-Bit (1,5 Stop-Bits) verwendet. Stop-Bits haben den Zustand logisch 1.

Frame Format

Für das Format von UART-Frames existiert eine abgekürzte Schreibweise:

8N1 bedeutet: 8 Datenbits, kein Paritätsbit, 1 Stop-Bit.

Das 8N1-Format wird bei der Datenübertragung von Mikrocontroller zu PC häufig verwendet, beispielsweise in der Arduino IDE.