Skip to content
RFrftools.io
Comms

UART-Rechner für Baudraten und Frame-Timing

Berechnet das UART-Frame-Timing, den Durchsatz und den USART BRR-Registerdivisor anhand der Baudrate, des Datenformats und der MCU-Taktfrequenz. Identifizieren Sie den Baudratenfehler für eine zuverlässige serielle Kommunikation.

Loading calculator...

Formel

BRR=fclk16×B,Tbit=1B,Nframe=1+D+P+SBRR = \frac{f_{clk}}{16 \times B}, \quad T_{bit} = \frac{1}{B}, \quad N_{frame} = 1 + D + P + S

Referenz: STM32 Reference Manual RM0008 §27.3.4; ST AN2908

BZiel-Baudrate (bps)
f_{clk}Peripherie-Taktfrequenz der MCU (Hz)
BRRBaudratenregisterdivisor (Ganzzahl)
T_{bit}Dauer von einem Bit (s)
N_{frame}Gesamtzahl der Bits pro UART-Frame (bits)
DDatenbits (bits)
PParitätsbits (0 oder 1) (bits)
SStoppbits (1 oder 2) (bits)

Wie es funktioniert

Dieser Rechner bestimmt die UART-Baudratenteilerwerte und Zeitfehler für eine zuverlässige serielle Kommunikation. Embedded-Ingenieure, IoT-Entwickler und Hardwaredesigner verwenden ihn, um Mikrocontroller-UARTs innerhalb der von den meisten Empfängern geforderten Takttoleranz von 2—3% zu konfigurieren. Gemäß dem UART-Standard (abgeleitet von RS-232/EIA-232) enthält jeder Frame ein Startbit, 5-9 Datenbits, optionale Parität und 1-2 Stoppbits. Eine 16-MHz-MCU, die auf 115200 Baud abzielt, erzielt einen Fehler von 0,16% bei BRR=8 (16-faches Oversampling), während 9600 Baud bei BRR=104 einen Fehler von 0,08% ergibt. Studien zeigen, dass Baudratenfehler über 3,5% bei einem von zehn Frames zu Byte-Framing-Fehlern führen. Standardraten (9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 Baud) sind so definiert, dass Rundungsfehler der Divisoren bei den üblichen Quarzfrequenzen (8, 12, 16, 20 MHz) minimiert werden. Die Bitperiode bei 115200 Baud beträgt 8,68 Mikrosekunden. Für einen zuverlässigen 10-Bit-Frame-Empfang ist eine Zeitgenauigkeit von 300 Nanosekunden pro Bit erforderlich.

Bearbeitetes Beispiel

Ein Automobilsteuergerätedesign erfordert eine UART-Kommunikation mit 115200 Baud unter Verwendung eines 20-MHz-Systemtakts mit 16-fachem Oversampling. Es folgt der Divisorformel aus Standard-UART-Implementierungen: BRR = f_clk/(16 x Baud) = 20.000.000/(16 x 115200) = 10,85. Die Rundung auf BRR=11 ergibt die tatsächliche Baud = 20.000.000/(16 x 11) = 113636 Baud. Fehler = |115200 - 113636|/115200 x 100 = 1,36%, was dem in den meisten Datenblättern für UART-Empfänger angegebenen Höchstwert von 2% entspricht. Rahmenstruktur: 1 Start + 8 Daten + 1 Stopp = insgesamt 10 Bit, was einem Durchsatz von 11.364 Byte/Sekunde entspricht. Zum Vergleich: Bei Verwendung von 8-fachem Oversampling (BRR=22) werden 113636 Baud mit identischem Fehler von 1,36% erreicht, jedoch mit geringerer Störfestigkeit.

Praktische Tipps

  • Verwenden Sie gemäß Anwendungshinweis AN4908 von ST Microelectronics fraktionales BRR, sofern verfügbar, um bei jeder Standard-Baudrate einen Fehler von < 0,5% zu erzielen
  • Begrenzen Sie für 3,3-V-Logik über Kabel von mehr als 2 Metern die Baudrate auf 115200, um den Rauschabstand von 400 mV gemäß den RS-232-Spezifikationen aufrechtzuerhalten
  • Überprüfen Sie das Timing mit dem Oszilloskop: Messen Sie 10 aufeinanderfolgende Bits und bestätigen Sie, dass die Gesamtdauer innerhalb von 2% der erwarteten Werte liegt (86,8 µs bei 115200 Baud)

Häufige Fehler

  • Verwendung eines Kristalls mit einer Toleranz von >50 ppm, was bei 25 °C zu einem Fehler von 0,005% führt, bei extremen Temperaturen (-40 °C bis +85 °C) jedoch einen kombinierten Fehler von über 2% überschreiten kann
  • Auswahl nicht standardmäßiger Baudraten wie 100000 Baud, was bei 16-MHz-Systemen zu einem Fehler von 4,17% gegenüber 0,16% bei 115200 Baud führt
  • Ignoriert, dass Generatoren für fraktionierte Baudraten (verfügbar in STM32, LPC usw.) den Fehler von 1,36% auf unter 0,1% bei 115200 Baud reduzieren

Häufig gestellte Fragen

8-N-1 (8 Datenbits, keine Parität, 1 Stoppbit) wird laut Branchenumfragen in 90% der eingebetteten Anwendungen verwendet. Dies ergibt einen Wirkungsgrad von 80% (8 Datenbits pro 10 Gesamtbits) und ist die Standardeinstellung in Arduino-, Raspberry Pi- und den meisten Mikrocontroller-Frameworks.
Parity fügt 1 Bit pro Frame hinzu (wodurch die Effizienz von 80 auf 72,7% für 8-N-1 gegenüber 8-E-1 reduziert wird) und erkennt Einzelbitfehler mit hundertprozentiger Zuverlässigkeit, 2-Bit-Fehler können jedoch nicht erkannt werden. Gemäß IEC 61162 schreiben NMEA-Protokolle für die Schifffahrt eine gleichmäßige Parität bei 4800 Baud vor.
Drei Faktoren dominieren: Kristalltoleranz (typischerweise 20-100 ppm, zusätzlich 0,002-0,01% Fehler), Ganzzahldivisorrundung (0-3% je nach Takt-Baud-Verhältnis) und Temperaturdrift (Keramikresonatoren driften um 0,5% über -40 °C bis +85 °C gegenüber 0,003% bei Kristallen).
Ja, aber der Fehler nimmt erheblich zu. Eine Baudrate von 250000 auf 16 MHz ergibt einen Fehler von 0% (exakter Divisor), während 100000 Baud einen Fehler von 6,25% ergibt (BRR=10 ergibt 100000, aber beide Enden müssen übereinstimmen). USB-UART-Brücken wie FTDI FT232R unterstützen alle Übertragungsraten von 183 bis 3.000.000 Baud.
Standard-UART-Transceiver unterstützen bis zu 1 Mbaud über Leiterbahnen <10 cm. Der FTDI FT232H erreicht 12 Mbaud. Verwenden Sie ab 3 MBaud differentielle Signale (RS-485 unterstützt 10 MBaud über 15 Meter pro TIA-485-A).

Shop Components

As an Amazon Associate we earn from qualifying purchases.

USB-UART Adapter

USB to serial adapter for protocol debugging and flashing

USB Logic Analyzer

8-channel USB logic analyzer for capturing digital bus traffic

Verwandte Taschenrechner