Ungenauigkeit einer RS-232-Baudrate

Ich schreibe eine einfache Softwareimplementierung von UART für mein ATtiny. Meine CPU ist nicht schnell, also sollte ich eine niedrige Baudrate wählen. Trotzdem möchte ich eine möglichst hohe Baudrate verwenden. Und ich kann die Ungenauigkeit einer Baudrate in meiner Implementierung abschätzen.

Was ist die maximal mögliche relative Ungenauigkeit einer RS-232-Baudrate für eine korrekte Kommunikation mit anderen Geräten? Definiert es der RS-232-Standard?

Grobe Schätzung - mit 10 Bits (Start, Stopp, 8 Daten) würde es einen Fehler geben, wenn das Timing am Ende ein halbes Bit daneben lag, also 0,5 / 10 = 5%. PS Wenn Sie die RC-Uhr kalibrieren, können Sie ein genaueres Timing erhalten. Ich habe irgendwo gelesen, dass es nicht ganz gut genug sein könnte.
Im Gegensatz zu dem, was jeder zu glauben scheint, ist das asynchrone serielle Datenformat NICHT im RS-232-Standard definiert. Schlimmer noch, ich habe nirgendwo eine offizielle Definition dafür gefunden.
Der Trick besteht darin, den Takt abzurufen und mit ihm zu synchronisieren, indem mit den Steigungen im Datensignal synchronisiert wird. Durchschnitten Sie das Timing über ein paar Bits und Sie sollten bereit sein.

Antworten (1)

Ich weiß nicht, ob es eine formale Definition gibt. Aber bedenke Folgendes:

Ein RS232-Zeichen ist etwa 10 Zeichen lang (Start, 8 Bit, Stop ).

Wenn Sie nach der Hälfte eines Symbols mit der Dekodierung beginnen und Ihre Uhr um 5 % abweicht, sind Sie nach 10 Symbolen um 50 % einer Symbolbreite vom Ziel abgedriftet; dh 5 % ist der maximal mögliche tolerierbare Fehler. Und das setzt voraus, dass das andere Ende richtig getaktet ist; Wenn es einen Fehler in der anderen Richtung hätte, würden Sie es falsch decodieren.

Ein Fehler von 2,5 % in entgegengesetzte Richtungen an jedem Ende wäre also ebenfalls kurz vor dem Versagen.

Signalintegritätsprobleme, die durch die Kabellänge verursacht werden, verschlimmern dies nur noch.

Praktischerweise funktioniert also ein Fehler unter 5 % mit einer "guten" Uhr am anderen Ende und einem sehr kurzen Kabel; Für eine robuste Kommunikation benötigen Sie einen Taktfehler von weniger als 2 % und besser als diesen, um lange Kabel zu unterstützen.

Finden Sie jetzt heraus, was Ihr ATTiny kann, bei unterschiedlichen Baudraten und CPU-Takten...

UART kann unter Verwendung von x 16X-Takt auf der Vorderflanke des Startbits synchronisieren und dann die Abtastung auf verbleibende Datenbits zentrieren. Dies führt auch einen Taktfehler von maximal 1/16 eines Bits ein. in 10 Bit oder 0,67%, also erwägen Sie theoretisch maximal 4% und wählen Sie in der Praxis besser 2 $, wie Brian sagte.