Serielle Schnittstelle (UART)

Aus eLAB Wiki
Wechseln zu: Navigation, Suche

Mikrocontroller verfügen über eine Reihe von Standard-Schnittstellen, über die sich Kommunikationswege zu anderen Geräten aufbauen lassen. Die UART- oder serielle Schnittstelle ist dabei die bekannteste und am meisten verwendete.

Beim UART (Universal-Asynchron-Receiver-Transmitter), der auch als serielle Schnittstelle bezeichnet wird, handelt es sich um eine asynchrone serielle Punkt-zu-Punkt-Verbindung zwischen zwei Geräten. Asynchron deshalb, weil kein Taktsignal übertragen wird. Der Empfänger muss die Übertragungsrate des Senders kennen und sich anhand des Startbits und der empfangenen Datenbits mit dem Sender synchronisieren.

Anbindung an einen Controller

Zum Verbindung zweier Mikrocontroller über den UART werden mindestens drei Leitungen benötigt. RX (Receiver, Empfänger), TX (Transmitter, Sender) und GND (Masseverbindung). Zu beachten ist, dass die RX- und TX-Leitungen gekreuzt verdrahtet werden. Eine Verbindung über die serielle Schnittstelle kann zusätzlich noch diverse Steuerleitungen umfassen, wie RTS (Ready to Send), CTS (Clear to Send), DTR (Data Terminal Ready) und DTS (Data Set Ready), die wir hier der Einfachheit halber weglassen. Diese Steuerleitungen stammen noch aus Zeiten der Modem-Ära und haben inzwischen an Bedeutung verloren. Allerdings wird beim Arduino eine Steuerleitung (DTR oder RTS) verwendet, um auf dem Board einen Reset auszulösen, damit der Bootloader angesprungen wird und ein neues Programm hochgeladen werden kann.

UART-Verbindung

Datensignale

Die Übertragungsrate für die serielle Schnittstelle, Bits pro Sekunde (Bit/s), Baud oder Baudrate genannt, kann zwischen 300 und 115200 Baud liegen, manchmal auch darüber. Eine gängige Baudrate ist z.B. 9600 Baud. Das bedeutet, es können 9600 Bit/Sekunde übertragen werden. Das ist bei den heutigen Technologien wie DSL/VDSL/LAN sehr +++, sehr wenig. VDSL erreicht inzwischen Übertragungsraten von bis zu 100 MBit/s (100*10^6 Bits/s) bei LAN ist 1 Gbit/s (10^9 Bits/s) Standard. Trotzdem reicht diese niedrige Übertragungsrate für kleinere Nachrichten durchaus aus und der Hardware-Aufwand ist natürlich im Gegensatz zu LAN oder DSL minimal. Die UART-Datenübertragung erfolgt in einem fest vorgegebenen Rahmen. Begonnen wird mit dem Startbit, gefolgt von 7-9 Datenbits (data LSB first, niedrigstes Bit zuerst), einem optionalen Paritätsbit parity für eine Fehlererkennung und schließlich 1-2 Stoppbits stop für das Paketende. In Kurzform finden sich Bezeichnungen wie +9600,n,8,1+. Das bedeutet 9600 Baud, no parity, 8 data, 1 stop bit. Diese Einstellungen müssen beim Sender und Empfänger übereinstimmen, damit eine erfolgreiche Datenübertragung stattfinden kann. Auch der Spannungspegel spielt eine wichtige Rolle. War hier früher in der PC-Technik die RS232-Schnittstelle von großer Bedeutung, die mit Pegel von +/-12V arbeitete, so wird heute eher der TTL-Pegel (0 bis 5V) verwendet. Heutige PCs besitzen kaum noch RS232-Schnittstellen, dafür gibt es aber eine Reihe von USB-UART-Seriell-Wandler, die direkt an die UART- Schnittstelle eines Mikrocontrollers angeschlossen werden können.

Der UART dient zum Anschluss serieller Geräte wie GPS-Empfänger oder Bluetooth-Module. Auch für den Anschluss an den PC (über USB-Seriell-Wandler) oder für die Kommunikation zwischen zwei Boards (Arduino und Raspberry Pi) wird die serielle Schnittstelle verwendet.

UART-Signale