UART einfach erklärt: Datenübertragung, Parity-Bit und Fehlererkennung

Wie funktioniert UART?

Das ist ein vollwertiger Auszug aus dem Buch Elektronik und Heimautomation DIY.

UART steht für Universal Asynchronous Receiver and Transmitter. Für die Kommunikation werden lediglich zwei Datenleitungen benötigt: TX (Transmit) zum Senden und RX (Receive) zum Empfangen. UART verwendet keine Taktsignale (Clock) wie andere Protokolle, sondern arbeitet mit Start- und Stop-Bits, um die Übertragung zu koordinieren.

Wenn der Empfänger ein Start-Bit (LOW) erkennt, beginnt er mit dem Lesen der folgenden Datenbits, bis das Stop-Bit(HIGH) das Ende des Datenpakets signalisiert. Die Geschwindigkeit der Datenübertragung wird durch die sogenannte Baudrate definiert. Diese gibt an, wie viele Symbole (Bits) pro Sekunde übertragen werden, und die Baudrate beider Geräte darf maximal um 10 % voneinander abweichen. Zum Beispiel bedeutet eine Baudrate von 9600 Baud, dass jedes Bit in einem Abstand von 104 μs (1/9600) gesendet wird.

UART kann immer nur zwischen zwei Teilnehmern direkt kommunizieren. Ein typisches Datenpaket bei UART besteht aus:

  • 1 Start-Bit (LOW),
  • 8 Datenbits, einschließlich optional einem Parity-Bit zur Fehlerprüfung,
  • und 1 oder 2 Stop-Bits (HIGH).

Das Parity-Bit wird verwendet, um eine grundlegende Fehlererkennung zu ermöglichen. Es prüft, ob die Anzahl der HIGH-Bits im Datenpaket gerade (even) oder ungerade (odd) ist.

  • Ist das Parity-Bit auf 0 (Odd Parity), muss die Anzahl der HIGH-Bits ungerade sein.
  • Ist das Parity-Bit auf 1 (Even Parity), muss die Anzahl der HIGH-Bits gerade sein.

Beispiel einer 8 bit UART Datenübertragung

UART Beispiel mit 8 bit

Erklärung des Datenpakets in der Grafik:

  • Idle-Zustand:
    Vor dem Start-Bit befindet sich die Leitung im Idle-Zustand (HIGH). Dies signalisiert, dass aktuell keine Daten übertragen werden.

  • Start-Bit:
    Die Übertragung beginnt mit einem Start-Bit (LOW), das dem Empfänger signalisiert, dass ein neues Datenpaket gesendet wird.

  • Datenbits (bit0 bis bit6):
    Die nächsten 7 Bits repräsentieren die Nutzdaten. In diesem Beispiel:

    • 1, 1, 0, 0, 1, 0, 1.
  • Parity-Bit (bit7):
    Das Parity-Bit dient zur Fehlererkennung. In diesem Fall handelt es sich um Even Parity (gerade Parität):

    • Die Anzahl der HIGH-Bits (1) in den 7 Datenbits beträgt 4 (gerade Anzahl).
    • Das Parity-Bit wird daher auf 0 gesetzt, da die Anzahl der HIGH-Bits bereits gerade ist.
  • Stop-Bits:
    Nach den Daten folgt das/die Stop-Bit(s), um das Ende des Datenpakets zu signalisieren. In der Grafik werden 2 Stop-Bits verwendet, die den Zustand HIGH einnehmen.

  • Idle-Zustand:
    Nach den Stop-Bits geht die Leitung zurück in den Idle-Zustand (HIGH), bis ein neues Start-Bit gesendet wird.

Gängige Baud Raten:
  • 4800 bps
  • 9600 bps
  • 19200 bps
  • 57600 bps
  • 115200 bps
UART mit zwei Teilnehmer

Fehlererkennung bei UART: LSB-Übertragung und Parity-Prüfung

UART überträgt die Daten beginnend mit dem LSB (Least Significant Bit), also dem niedrigstwertigen Bit. In unserem Datensatz ist das LSB das Bit 0, welches sich auf der rechten Seite des Bit-Musters befindet. Zum Beispiel bei dem Datensatz 1010011 ist das Bit ganz rechts (1) das LSB, während das Bit ganz links das MSB (Most Significant Bit) ist.

Sollte die Prüfung durch das Parity-Bit fehlschlagen, informiert der Empfänger den Sender über die Fehlerhaftigkeit der Daten. Der Sender wird daraufhin aufgefordert, das gesamte Datenpaket erneut zu senden.

Diese Rückmeldung zwischen Sender und Empfänger sorgt dafür, dass Übertragungsfehler erkannt und korrigiert werden können, auch wenn UART keine vollständige Fehlerkorrektur unterstützt. Dadurch bleibt die Kommunikation robust, selbst bei leichten Störungen in der Datenübertragung.

Least significant bit
Most significant bit

★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★

oder über

Vielen Dank im Voraus, Euer Edi.