ElectroDesignForgeElectroDesignForge
Signale und SchnittstellenGrundlagen

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 ansehen

Schlü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.

SchichtWas es definiertBeispiele
UART-RahmenLeerlauf, Start, Daten, Parität, Stopp, Bitreihenfolge, Rate8N1 bei 115200 baud
Elektrische VerbindungSpannung, Polarität, Referenz, Strom, Kabel3,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ätsfestsetzungRegel für Daten plus ParitätBegrenzung
Nkein Extrabitkeine Fehlererkennung
EGesamtzahl der 1s ist geradeverfehlt eine gerade Anzahl veränderter Bits
OGesamtzahl der 1s ist ungeradegleiche Nachweisfähigkeit, entgegengesetzte Konvention
Markierung / LeerzeichenZwangs 1 / Zwangs 0ungewö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.

SatzTb8N1 Rahmenzeit
9.600 Baud104.17 µs1,042 ms
57.600 Baud17.36 µs173.6 µs
115,200 Baud8.681 µs86.81 µs
1.000.000 Baud1.000 µs10.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.

SchnittstelleUART im LeerlaufTypische SpannungenDirekt zu 3.3 V UART?
3.3 V CMOShochnahe 0 / 3,3 VJa, wenn die Schwellenwerte übereinstimmen
5 V LogikhochNahe 0 / 5 Vnur mit 5 V-tolerantem Eintrag
RS-232negativ (mark)oft -5 bis -12 V / +5 bis +12 VNein Verwenden Sie einen RS-232 Transceiver
RS-485DifferenzialA/B-PaarNein 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 BedeutungHäufige Ursachen
Paritätsfehlerempfangene Parität misslingtRauschen, falsche Einstellung, marginales Timing
BildfehlerStoppbit ungültigFalsche Rate, Inversion, Break
ÜberschreitungNeues Byte kam vor dem Umgang mit dem altenblockierter Interrupt, fehlender DMA, kleiner Puffer
BruchLine Low länger als ein FrameGewollte Unterbrechung, Kurzschluss, angehaltenes Gerät
  1. Notieren Sie die vollständige Einstellung: zum Beispiel 115200, 8N1, LSB-first, no flow control, 3,3 V CMOS.
  2. Überprüfung TX ↔ RX, Common Ground und Transceiver Power / DE.
  3. Messen Sie eine Zelle: Bei 115200 Baud sind es etwa 8,68 μs.
  4. Senden 0x55, dann 0x00 und 0xFF als diagnostische Muster.
  5. 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: 8N1 Tops 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.

Bibliographie