
UART: Datenrahmen, Baudrate und elektrische Pegel
asynchrone UART-Übertragung verstehen: Start- und Stoppbits, Datenreihenfolge, Parität, Baudrate, Takttoleranz, Fehler und TTL-, CMOS-, RS-232- und RS-485-Kompatibilität.
Geschrieben und technisch geprüft vonElectroDesignForge Engineering Team
Redaktionsprozess ansehenSchlüsselpunkt: UART sendet Bits ohne gemeinsame Uhr. Der Empfänger synchronisiert jedes * Startbit* neu und tastet dann Daten zu berechneten Zeiten ab. Beide Endpunkte benötigen das gleiche Rahmenformat, ein ausreichend enges Baud-Timing und wirklich kompatible elektrische Ebenen.
UART ist ein Rahmenformat, keine elektrische Schnittstelle
UART (Universal Asynchronous Receiver/Transmitter) wandelt ein Byte in Bits auf TX Rekonstruiert empfangene Bytes auf RX. Es ist asynchron: Im Gegensatz zu SPI hat es keinen Taktdraht.
| Schicht | Was es definiert | Beispiele |
|---|---|---|
| UART-Rahmen | Leerlauf, Start, Daten, Parität, Stopp, Bitreihenfolge, Rate | 8N1 bei 115200 baud |
| Elektrische Verbindung | Spannung, Polarität, Referenz, Strom, Kabel | 3,3 V CMOS, 5 V Logik, RS-232, RS-485 |
Zwei Boards können sowohl "UART" verwenden als auch nicht direkt anschließen: Ein 3,3 V GPIO ist kein RS-232-Ausgang. In der üblichen Logikkonvention ist Leerlauf hoch (mark) beginnt ein Frame niedrig und endet hoch.
Rahmenanatomie
Die übliche Notation ist data bits + parity + stop bits. 8N1 bedeutet acht Datenbits, keine Parität und ein Stopbit.
Idle Start D0 D1 D2 D3 D4 D5 D6 D7 Parity Stop Idle
1 | 0 | b0 b1 b2 b3 b4 b5 b6 b7 | P | 1 | 1
<------------- one bit time Tb = 1 / baud ------------->
Start, Daten, Parität und Stopp
Die Startbit ist für eine Bitzeit niedrig. Nach einer fallenden Kante wartet der Empfänger ungefähr ein halbes bisschen Zeit, um sie zu validieren, dann Proben in der Nähe der Mitte jeder Zelle. Moderne UARTs oft oversample bei ×8 oder ×16; konsultieren Sie das periphere Handbuch für die genaue Validierung und Toleranz.
Daten sind normalerweise LSB-first Hex 0x53, konventionell geschrieben 0101 0011, wird gesendet als 1 1 0 0 1 0 1 0 für D0 bis D7. Dies ist eine einfache Oszilloskop-Lesefalle. Hardware kann 5 bis 9 Datenbits anbieten; beide Endpunkte müssen übereinstimmen.
| Paritätsfestsetzung | Regel für Daten plus Parität | Begrenzung |
|---|---|---|
N | kein Extrabit | keine Fehlererkennung |
E | Gesamtzahl der 1s ist gerade | verfehlt eine gerade Anzahl veränderter Bits |
O | Gesamtzahl der 1s ist ungerade | gleiche Nachweisfähigkeit, entgegengesetzte Konvention |
| Markierung / Leerzeichen | Zwangs 1 / Zwangs 0 | ungewöhnliche Hardware-spezifische Modi |
Parität erkennt einige Korruption, kann sie aber nicht lokalisieren oder reparieren. Die Integrität der Nachrichten erfordert eine CRC- oder Prüfsumme, eine Sequenznummer und ein Wiederholungsschema über UART. Stop-Bits sind hoch; ein niedriger Pegel, wenn ein Stop-Bit erwartet wird, hebt normalerweise ein Framingfehler.
Baud Rate und Taktfehler
Baud steht für Symbole pro Sekunde. Eine binäre UART trägt normalerweise ein Bit pro Symbol, so dass 9600 Baud normalerweise 9600 Bit / s bedeutet. Bitzeit ist Tb = 1 / baud.
| Satz | Tb | 8N1 Rahmenzeit |
|---|---|---|
| 9.600 Baud | 104.17 µs | 1,042 ms |
| 57.600 Baud | 17.36 µs | 173.6 µs |
| 115,200 Baud | 8.681 µs | 86.81 µs |
| 1.000.000 Baud | 1.000 µs | 10.00 µs |
An 8N1 frame verwendet zehn Bit mal, daher eine maximale Nutzlastrate von baud × 8 / 10: kontinuierlicher 115200-Baud-Datenverkehr führt höchstens 11.520 Bytes/s vor dem Protokoll-Overhead.
Sender und Empfänger haben unabhängige Uhren. Ihr Sampling-Offset sammelt sich über einen Frame: accumulated timing error ≈ number of bit intervals × total relative frequency errorHalten Sie es bequem unter einer halben Bitzeit und lassen Sie einen Spielraum für Jitter, Dividiererquantisierung, Rauschen und langsame Kanten. Ein gemeinsames Engineering-Ziel ist unter etwa 2% kombinierter relativer Fehler, aber es ist keine universelle Grenze: Rahmenlänge, Überabtastung und Empfängerdesign entscheiden über die wirkliche Toleranz. Zwei ±1% Oszillatoren können sich schlimmstenfalls um 2% unterscheiden. Überprüfen Sie auch den Baud-Teiler-Fehler; eine Systemuhr erzeugt nicht immer genau 115200.
CMOS, TTL, RS-232 und RS-485
"TTL" und "CMOS" sind Abkürzungen: Verwenden Sie immer die tatsächlichen Eingabeschwellenwerte und absoluten Maximalwerte.
| Schnittstelle | UART im Leerlauf | Typische Spannungen | Direkt zu 3.3 V UART? |
|---|---|---|---|
| 3.3 V CMOS | hoch | nahe 0 / 3,3 V | Ja, wenn die Schwellenwerte übereinstimmen |
| 5 V Logik | hoch | Nahe 0 / 5 V | nur mit 5 V-tolerantem Eintrag |
| RS-232 | negativ (mark) | oft -5 bis -12 V / +5 bis +12 V | Nein Verwenden Sie einen RS-232 Transceiver |
| RS-485 | Differenzial | A/B-Paar | Nein Verwenden Sie einen RS-485 Transceiver |
Für einen kurzen logischen Link, Draht TX_A bis RX_B, TX_B bis RX_A, und teilen Sie eine Bodenreferenz. Ein 5 V-Ausgang kann einen nicht toleranten 3,3 V-Eingang beschädigen, selbst wenn die Verbindung zunächst zu funktionieren scheint.
RS-232 verwendet sowohl verschiedene Amplituden als auch invertierte Polarität: Leerlauflogik 1 ist normalerweise negativ, Start 0 positiv. Ein MAX232-Typ Transceiver behandelt Spannungsumwandlung und Inversion. RS-485 ist eine differentielle physikalische Schicht, nicht "stärkere UART": die UART-Laufwerke DI und liest RO, während der Transceiver A/B steuert.DE), Terminierung, Biasing, Kabeltopologie und Halbduplex-Kollisionskontrolle sind Teil des Designs.
Fehler und Bring-up
| Angabe | Übliche Bedeutung | Häufige Ursachen |
|---|---|---|
| Paritätsfehler | empfangene Parität misslingt | Rauschen, falsche Einstellung, marginales Timing |
| Bildfehler | Stoppbit ungültig | Falsche Rate, Inversion, Break |
| Überschreitung | Neues Byte kam vor dem Umgang mit dem alten | blockierter Interrupt, fehlender DMA, kleiner Puffer |
| Bruch | Line Low länger als ein Frame | Gewollte Unterbrechung, Kurzschluss, angehaltenes Gerät |
- Notieren Sie die vollständige Einstellung: zum Beispiel
115200, 8N1, LSB-first, no flow control, 3,3 V CMOS. - Überprüfung
TX ↔ RX, Common Ground und Transceiver Power /DE. - Messen Sie eine Zelle: Bei 115200 Baud sind es etwa 8,68 μs.
- Senden
0x55, dann0x00und0xFFals diagnostische Muster. - Zählen Sie Parität, Framing und überrannte Flaggen; korrupter Text allein identifiziert die Ursache nicht.
Häufige Fallstricke
- Behandlung von 115200 Baud als 115200 Bytes/s:
8N1Tops Out bei 11.520 Bytes/s. - TX/RX zweimal kreuzen oder auf einer CMOS-Verbindung Gemeinsamkeiten auslassen.
- RS-232 direkt mit GPIO verbinden.
- Parität als Nachrichtenschutz anstelle eines CRC verwenden.
- Jeden Fehler auf die Baudrate zu schieben, wenn ein voller Puffer, eine inkompatible Spannung, eine laute Masse oder eine RS-485-Konkurrenz ähnlich aussehen können.