Grundlagen der UART-Kommunikation

Erinnern Sie sich noch, als Drucker, Mäuse und Modems dicke Kabel mit diesen riesigen klobigen Steckern hatten? Diejenigen, die buchstäblich in Ihren Computer geschraubt werden mussten? Diese Geräte benutzten wahrscheinlich UARTs, um mit Ihrem Computer zu kommunizieren. Während USB diese alten Kabel und Stecker fast vollständig ersetzt hat, gehören UARTs definitiv noch nicht der Vergangenheit an. Sie finden UARTs in vielen DIY-Elektronikprojekten, um GPS-Module, Bluetooth-Module und RFID-Kartenlesemodule mit Ihrem Raspberry Pi, Arduino oder anderen Mikrocontrollern zu verbinden.

PCBWay Ad

UART steht für Universal Asynchronous Receiver/Transmitter. Es handelt sich dabei nicht um ein Kommunikationsprotokoll wie SPI und I2C, sondern um eine physikalische Schaltung in einem Mikrocontroller oder einem Stand-alone-IC. Der Hauptzweck eines UARTs ist das Senden und Empfangen von seriellen Daten.

Eines der besten Dinge an UART ist, dass es nur zwei Drähte verwendet, um Daten zwischen Geräten zu übertragen. Die Prinzipien hinter UART sind leicht zu verstehen, aber wenn Sie den ersten Teil dieser Serie, Grundlagen des SPI-Kommunikationsprotokolls, noch nicht gelesen haben, wäre das ein guter Anfang.

Einführung in die UART-Kommunikation

Bei der UART-Kommunikation kommunizieren zwei UARTs direkt miteinander. Der sendende UART wandelt parallele Daten von einem steuernden Gerät wie einer CPU in serielle Form um, überträgt sie seriell an den empfangenden UART, der dann die seriellen Daten wieder in parallele Daten für das empfangende Gerät umwandelt. Für die Übertragung von Daten zwischen zwei UARTs werden nur zwei Drähte benötigt. Die Daten fließen vom Tx-Pin des sendenden UARTs zum Rx-Pin des empfangenden UARTs:

Einführung in UART - Grundlegendes Anschlussschema

UARTs übertragen Daten asynchron, d.h. es gibt kein Taktsignal, um die Ausgabe von Bits vom sendenden UART mit dem Abtasten von Bits durch den empfangenden UART zu synchronisieren. Anstelle eines Taktsignals fügt der sendende UART dem zu übertragenden Datenpaket Start- und Stoppbits hinzu. Diese Bits definieren den Anfang und das Ende des Datenpakets, so dass der empfangende UART weiß, wann er mit dem Lesen der Bits beginnen muss.

Wenn der empfangende UART ein Startbit erkennt, beginnt er, die eingehenden Bits mit einer bestimmten Frequenz, der Baudrate, zu lesen. Die Baudrate ist ein Maß für die Geschwindigkeit der Datenübertragung, ausgedrückt in Bits pro Sekunde (bps). Beide UARTs müssen mit etwa der gleichen Baudrate arbeiten. Die Baudrate zwischen dem sendenden und dem empfangenden UART darf sich nur um etwa 10 % unterscheiden, bevor das Timing der Bits zu weit abweicht.

Beide UARTs müssen außerdem so konfiguriert sein, dass sie die gleiche Datenpaketstruktur senden und empfangen.

Grundlagen der UART-Kommunikation - Spezifikationstabelle

Wie UART funktioniert

Der UART, der Daten senden soll, erhält die Daten von einem Datenbus. Der Datenbus wird verwendet, um Daten von einem anderen Gerät wie einer CPU, einem Speicher oder einem Mikrocontroller an den UART zu senden. Die Daten werden vom Datenbus zum sendenden UART in paralleler Form übertragen. Nachdem der sendende UART die parallelen Daten vom Datenbus erhalten hat, fügt er ein Startbit, ein Paritätsbit und ein Stoppbit hinzu, wodurch das Datenpaket entsteht. Anschließend wird das Datenpaket seriell, Bit für Bit, am Tx-Pin ausgegeben. Der empfangende UART liest das Datenpaket Bit für Bit an seinem Rx-Pin. Der empfangende UART wandelt dann die Daten wieder in die parallele Form um und entfernt das Startbit, das Paritätsbit und die Stoppbits. Schließlich überträgt der empfangende UART das Datenpaket parallel zum Datenbus auf der Empfangsseite:

Einführung in UART - Datenübertragungsdiagramm

Die von UART übertragenen Daten sind in Paketen organisiert. Jedes Paket enthält 1 Startbit, 5 bis 9 Datenbits (je nach UART), ein optionales Paritätsbit und 1 oder 2 Stoppbits:

Einführung in UART - Paket, Rahmen und Bits

Startbit

Die UART-Datenübertragungsleitung wird normalerweise auf einem hohen Spannungspegel gehalten, wenn sie keine Daten überträgt. Um die Übertragung von Daten zu starten, zieht der sendende UART die Übertragungsleitung für einen Taktzyklus von High auf Low. Wenn der empfangende UART den Übergang von High zu Low erkennt, beginnt er, die Bits im Datenrahmen mit der Frequenz der Baudrate zu lesen.

Datenrahmen

Der Datenrahmen enthält die tatsächlich übertragenen Daten. Er kann 5 Bit bis zu 8 Bit lang sein, wenn ein Paritätsbit verwendet wird. Wenn kein Paritätsbit verwendet wird, kann der Datenrahmen 9 Bit lang sein. In den meisten Fällen werden die Daten mit dem niederwertigsten Bit zuerst gesendet.

Parität

Parität beschreibt die Geradzahligkeit oder Ungeradzahligkeit einer Zahl. Das Paritätsbit ist eine Möglichkeit für den empfangenden UART zu erkennen, ob sich die Daten während der Übertragung geändert haben. Bits können durch elektromagnetische Strahlung, nicht angepasste Baudraten oder Datenübertragungen über große Entfernungen verändert werden. Nachdem der empfangende UART den Datenrahmen gelesen hat, zählt er die Anzahl der Bits mit einem Wert von 1 und prüft, ob die Summe eine gerade oder ungerade Zahl ist. Wenn das Paritätsbit eine 0 ist (gerade Parität), sollte die Summe der 1-Bits im Datenrahmen eine gerade Zahl ergeben. Wenn das Paritätsbit eine 1 ist (ungerade Parität), sollte die Summe der 1-Bits im Datenrahmen eine ungerade Zahl ergeben. Wenn das Paritätsbit mit den Daten übereinstimmt, weiß der UART, dass die Übertragung frei von Fehlern war. Aber wenn das Paritätsbit eine 0 ist und die Summe ungerade ist; oder das Paritätsbit eine 1 ist und die Summe gerade ist, weiß der UART, dass sich Bits im Datenrahmen geändert haben.

Stop Bits

Um das Ende des Datenpakets zu signalisieren, treibt der sendende UART die Datenübertragungsleitung von einer niedrigen Spannung zu einer hohen Spannung für mindestens zwei Bitdauern.

Schritte der UART-Übertragung

1. Der sendende UART empfängt parallel Daten vom Datenbus:

Einführung in UART - Datenübertragungsdiagramm UART holt Byte vom Datenbus

2. Der sendende UART fügt das Startbit, das Paritätsbit und das/die Stoppbit(s) zum Datenrahmen hinzu:

Einführung in UART - Datenübertragungsdiagramm UART fügt Start-, Paritäts- und Stoppbits hinzu

3. Das gesamte Paket wird seriell vom sendenden UART zum empfangenden UART gesendet. Der empfangende UART tastet die Datenleitung mit der vorkonfigurierten Baudrate ab:

Einführung in UART - Datenübertragungsdiagramm Sendender UART sendet Datenpaket seriell zum empfangenden UART

4. Der empfangende UART verwirft das Startbit, Paritätsbit und Stoppbit aus dem Datenrahmen:

Einführung in UART - Datenübertragungsdiagramm UART entfernt Start-, Paritäts- und Stoppbits

5. Der empfangende UART wandelt die seriellen Daten wieder in parallele um und überträgt sie an den Datenbus auf der Empfangsseite:

Einführung in UART - Datenübertragungsdiagramm Empfangender UART sendet Byte an Datenbus

Vorteile und Nachteile von UARTs

Kein Kommunikationsprotokoll ist perfekt, aber UARTs sind ziemlich gut in dem, was sie tun. Hier sind einige Vor- und Nachteile, die Ihnen bei der Entscheidung helfen, ob sie für Ihr Projekt geeignet sind oder nicht:

Vorteile

  • Benutzt nur zwei Drähte
  • Ein Taktsignal ist nicht notwendig
  • Hat ein Paritätsbit, um eine Fehlerprüfung zu ermöglichen
  • Die Struktur des Datenpakets kann geändert werden, solange beide Seiten dafür eingerichtet sind
  • Gut dokumentierte und weit verbreitete Methode

Nachteile

  • Die Größe des Datenrahmens ist auf maximal 9 Bit begrenzt
  • Unterstützt keine Multiple Slave- oder Multiple Master-Systeme
  • Die Baudraten der einzelnen UARTs müssen innerhalb von 10 % voneinander liegen

Weiter geht es mit Teil drei dieser Serie, Grundlagen des I2C-Kommunikationsprotokolls, um mehr über eine andere Art der Kommunikation elektronischer Geräte zu erfahren. Oder, wenn Sie es noch nicht getan haben, lesen Sie Teil 1, Grundlagen des SPI-Kommunikationsprotokolls.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.