UART meistern: Der Universal Asynchronous Receiver/Transmitter erklärt
Der UART (Universal Asynchronous Receiver-Transmitter) bleibt das am weitesten verbreitete Hardware-Protokoll für Punkt-zu-Punkt-Kommunikation. Dieser Guide führt Sie durch Konfiguration eines UART, Verständnis seines Paketformats und Implementierung sicherer Frame-Protokolle, die während der Produktentwicklung essenziell sind.
Korrekt konfiguriert kann ein UART eine Vielzahl serieller Datenströme unterstützen, während er nur zwei Drähte benötigt. Diese minimalistische Verdrahtung reduziert Kosten und Komplexität, was UART ideal für Embedded Systems, Mikrocontroller und PCs macht.
Wir decken UART-Grundlagen ab – Paketübertragung, Standard-Frame-Format und angepasste Frames, die Sicherheit und Compliance-Wert hinzufügen. Der Artikel bietet auch praktische Schritte für das Interpretieren von Datenblättern und Konfigurieren von UART-Peripherie.
Am Ende werden Sie ein solides Verständnis von UART-Standards haben und wie Sie diese nutzen können, um neue Produktfähigkeiten zu verbessern.
„Das größte einzelne Problem in der Kommunikation ist die Illusion, dass sie stattgefunden hat.“
—George Bernard Shaw
Kommunikationsprotokolle strukturieren die Interaktion zwischen Geräten. Sie definieren eine gemeinsame Sprache, die sicherstellt, dass Daten zuverlässig ausgetauscht werden. In der Embedded-Welt ist UART der de-facto-Standard für Device-to-Device-Hardware-Kommunikation.
Im Gegensatz zu busbasierten Protokollen benötigt UART nur eine Transmit (Tx) und Receive (Rx) Linie, was Board-Design vereinfacht und Stromverbrauch senkt.
Trotz seiner Popularität übersehen viele Implementierungen proper Frame Design, was Performance und Sicherheit kompromittieren kann. Ein wohl-definiertes Frame-Protokoll ist der Schlüssel zu fehlerfreiem und geschütztem Datenaustausch.
Asynchrone serielle Kommunikation bedeutet keine geteilte Clock-Leitung; stattdessen verlassen sich Transmitter und Receiver auf ein matchendes Baud-Rate, um in Sync zu bleiben.
Interface
Abbildung 1. Zwei UARTs direkt kommunizierend.
Jeder UART exponiert zwei dedizierte Pins:
- Transmitter (Tx)
- Receiver (Rx)
Abbildung 2. UART an einen Data Bus interfaced.
In dieser Anordnung konvertiert der transmitierende UART parallele Daten vom Bus in einen seriellen Bitstream auf seiner Tx-Leitung. Der empfangende UART sampelt diesen Stream und setzt die Bits zu parallelen Daten für den lokalen Bus zusammen.
Beide Seiten müssen mit derselben Baud-Rate operieren – der Geschwindigkeit in Bits pro Sekunde. Ein Mismatch kann Framing-Fehler verursachen; typische UARTs tolerieren bis zu 10 % Baud-Rate-Abweichung.
Tabelle 1 fasst wichtige UART-Attribute zusammen.
Tabelle 1. UART Zusammenfassung
| Drähte | 2 |
|---|---|
| Unterstützte Baud Rates | 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1 000 000, 1 500 000 |
| Übertragungsmethode | Asynchron |
| Maximale Masters | 1 |
| Maximale Slaves | 1 |
Da UART asynchron ist, treibt der Transmitter einen Bitstream basierend auf seinem eigenen Clock, während der Receiver eingehende Bits mit seinem internen Clock sampelt. Startbit, Data Frame, optionales Parity Bit und Stop Bits definieren gemeinsam das Paket.
Datenübertragung
Jedes UART-Paket enthält:
- Start Bit: Ein Übergang von High zu Low, der den Frame-Start signalisiert.
- Data Frame: 5–8 Bits Payload, LSB first. Wenn Parity genutzt wird, kann der Frame 9 Bits sein.
- Parity Bit (optional): Even oder Odd Parity zur Detektion von Single-Bit-Fehlern.
- Stop Bits: Ein bis zwei High-Level-Bits, die das Frame-Ende markieren.
Abbildung 3. UART Paketstruktur.
Abbildung 4. Start Bit Illustration.
Abbildung 5. Data Frame Beispiel.
Abbildung 6. Parity Bit Nutzung.
Abbildung 7. Stop Bit Illustration.
Übertragungsablauf
1. Parallel Input: Der Transmitter empfängt parallele Daten vom Bus.
Abbildung 8. Data Bus feeding den Transmitter.
2. Frame Assembly: Der Transmitter prepended das Start Bit, appended Parity und Stop Bits, formend ein komplettes Paket.
Abbildung 9. UART Paket am Transmitter.
3. Serial Transmission: Das Paket wird Bit-für-Bit bei konfigurierter Baud-Rate gesendet.
Abbildung 10. Kontinuierliche UART Übertragung.
4. Reception: Der Receiver verwirft Framing Bits und rekonstruiert die Originaldaten.
Abbildung 11. Paket am Receiver.
5. Parallel Output: Der Receiver konvertiert die seriellen Daten zurück zu parallel und leitet sie an den lokalen Bus weiter.
Abbildung 12. Datenfluss zum empfangenden Bus.
Custom Frame Protokolle
Während der Standard UART Frame für viele Use Cases ausreicht, erhöht ein Custom Frame Layer Sicherheit und stellt sicher, dass nur intendierte Geräte kommunizieren.
Durch Einbetten einzigartiger Header, Trailer und CRC kann jedes Gerät validieren, dass ein Paket von einer vertrauenswürdigen Quelle stammt. Dies ist besonders wertvoll in sicherheitskritischen oder sicheren Umgebungen.
Abbildung 13 zeigt ein typisches Custom Frame:
Abbildung 13. Beispiel UART Frame Protokoll.
Der Frame enthält typischerweise:
- Header 1 (0xAB) und Header 2 (0xCD) – einzigartige Identifikatoren.
- Command (CMD) – spezifiziert die Aktion.
- Data Length (DL) – Anzahl Payload Bytes.
- Payload (Data n) – die eigentlichen Daten.
- Trailer 1 (0xE1) und Trailer 2 (0xE2) – schließende Marker.
- CRC – Error-Checking Wert, beidseitig berechnet.
Beide Seiten müssen identische Framing-Regeln nutzen; andernfalls werden Pakete rejected.
UART Konfigurationsschritte
1. Datasheet prüfen um UART Interface und Pin-Zuordnungen zu verstehen.
Abbildung 14. Mikrocontroller Datasheet Auszug.
2. Memory Map prüfen für UART Register und Adressen.
Abbildung 15. Mikrocontroller Memory Map.
3. UART Port Parameter definieren – Data Bits, Parity, Stop Bits, Operating Mode. Beispielbeschreibung:
• 5–8 Data Bits
• 1, 1½, oder 2 Stop Bits
• None, Even, oder Odd Parity
• Full-Duplex, DMA-enabled, asynchroner Transfer
4. Baud Rate berechnen mittels Peripheral Clock (PCLK) und der MCUs Oversampling- und Divider-Register. Die generelle Formel lautet:
Baud Rate = PCLK / ((M + N/2048) × 2OSR + 2 × DIV)
wo:
OSR – Oversample Rate (0–3)
DIV – Baud-Rate Divider (1–65535)
M – Fractional Divider MSB (1–3)
N – Fractional Divider LSB (0–2047)
Beispieltabellen unten illustrieren Baud-Rate Settings für 26 MHz und 16 MHz PCLKs.
Tabelle 2. Baud Rate Beispiel basierend auf 26 MHz PCLK
| Baud Rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 24 | 3 | 1078 |
| 115200 | 3 | 4 | 1 | 1563 |
Tabelle 3. Baud Rate Beispiel basierend auf 16 MHz PCLK
| Baud Rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 17 | 3 | 1078 |
| 115200 | 3 | 2 | 2 | 348 |
5. UART Register konfigurieren per Datasheet. Wichtige Register umfassen:
Tabelle 4. UART Register Beschreibungen
| Name | Beschreibung |
|---|---|
| UART_DIV | Baud-Rate Divider |
| UART_FIBR | Fractional Baud-Rate Control |
| UART_LCR2 | Line Control Register (OSR, Stop Bits, Parity) |
Sobald die Register programmiert sind, kann der UART zuverlässig Daten senden und empfangen.
Warum UART wichtig ist
UART zu verstehen ist entscheidend für Ingenieure, die robuste, kostengünstige und hochdurchsatzfähige serielle Links designen. Beherrschung von Framing, Baud-Rate-Berechnung und Register-Konfiguration sichert Datenintegrität und Systemzuverlässigkeit.
Häufige Use Cases
- Debugging – Log Messages während Firmware-Entwicklung.
- Manufacturing – Echtzeit-Diagnostik und Trace Logs.
- Over-the-Air Updates – Firmware-Änderungen an Embedded Devices liefern.
- Verification – Device Funktionalität vor Shipping validieren.
Referenzen
„Basics of UART Communication.“ Electronics Hub, Juli 2017.
Campbell, Scott. „Basics of UART Communication.“ Circuit Basics. Keim, Robert.
„Back to Basics: The Universal Asynchronous Receiver/Transmitter.“ All About Circuits, Dezember 2016.
„What Is UART Protocol? UART Communication Explained.“ Arrow.
Eingebettet
- Experten-Wellenfertigung: Präzisionsprozesse & kundenspezifische Lösungen
- Warum Cloud-Kultur den Geschäftserfolg antreibt: Ein praktischer Leitfaden
- Wie Predictive Maintenance Effizienz steigert und Ausfallzeiten senkt
- Fräsmaschinen 101: Umfassender Leitfaden zu Funktion, Komponenten und Einsatz
- Cut-to-Length-Linien (CTL): Kernkonzepte und Anwendungen beherrschen
- Eigenspannungen in Werkstoffen: Arten, Ursachen und praktische Anwendungen
- Stoßdämpfer: Funktionsweise für Fahrzeugbalance und Komfort
- Strömungsmechanik: Arten der Strömung, Verhaltensweisen und Anwendungen
- Kupplungen in der Industrietechnik: Funktionen, Typen und Anwendungen
- Materialflexibilität verstehen: Wie Elastizität die Leistung bestimmt