Was ist der maximal akzeptable Baudratenfehler für die serielle RS-232-Kommunikation?

Was ist die maximale Taktdifferenz zwischen Sender und Empfänger für eine fehlerfreie asynchrone serielle Kommunikation?

Antworten (3)

Fühlen Sie sich frei, weitere Werte zu bearbeiten. Das sind die, die ich jetzt verwende.

Atmel ATmega UART:

5 bits, normal speed : ±3.0%
5 bits, double speed : ±2.5%
10 bits, normal speed: ±1.5%
10 bits, double speed: ±1.0%

NXP LPC111x (Cortex-M0) UART: 1,1 % (keine Tabelle)

Mikrochip PIC 18F2XK20/4XK20: nicht definiert. (wtf.)

Wie der ehrwürdige Mr. Horowitz & Hill es ausdrückte:

Durch Neusynchronisieren der START- und STOP-Bits jedes Zeichens benötigt der Empfänger keine hochgenaue Uhr; es muss nur so genau und stabil sein, dass Sender und Empfänger auf einen Bruchteil einer Bitperiode der Zeit eines Zeichens synchronisiert bleiben, dh mit einer Genauigkeit von wenigen Prozent.

Beachten Sie, dass die Leiterlänge eine große Rolle bei seriellen Taktfehlern spielt. Ich bleibe unter 19200 Baud für normale Flachbandkabel mit einer Länge von mehr als 2 Fuß. Macht mich neidisch auf 4 '60 Gb/s USB-Leitungen.

Woher hast du diese Prozente?

[Zunächst einmal bedeutet das „RS“ in RS-232 „Empfohlener Standard“, was es war, als es in den 1960er Jahren veröffentlicht wurde. Seit Äonen ist es jedoch ein akzeptierter Standard der EIA als EIA-232, und der alte Name wurde seitdem offiziell aufgegeben. Aber es scheint nichts Besseres zu geben, als alte Gewohnheiten zu töten :-) ]

Zum Thema: Die zulässige Takttoleranz hängt von der Erkennungsmethode ab. IIRC der alte 68HC11 hat ein paar Mal zu Beginn, ein paar Mal in der Mitte und am Ende gesampelt. (Die Abtastung erfolgte mit 16-facher Bitrate.) Dies ermöglicht einen Unterschied von einem halben Bit beim letzten Bit . Die meiste Kommunikation auf EIA-232 :-) besteht aus 10 Bits (1 Start, 8 Daten, 1 Stopp), also ist ein halbes Bit im Stoppbit 5% .

Ein UART-Paket ist [START][DATA][PARITY][STOP], also wäre 0x00 [0b1][0x00][0b0][0b00] (Parität optional, variable Stopplänge). Diese Ausnahme ist jedoch für einige I2C/TWI-Situationen sinnvoll.
In der Tat ist Stopp-Start immer ein Vorteil
Sie müssen sowohl die Toleranz des Empfängers als auch die Toleranz des Senders berücksichtigen. Sie müssen also effektiv die 5%-Toleranz halbieren. Daraus ergibt sich eine maximale Toleranz von 2,5 % beim Sender und eine maximale Toleranz von 2,5 % beim Empfänger.

Denken Sie daran, dass der Fehler Spitze-zu-Spitze ist – dies kann ein Problem bei hohen Baudraten auf einer zitternden Uhr sein – RC-Oszillatoren können ziemlich viel Jitter haben, so dass eine 1% (Durchschnitt oder RMS) kalibrierte Uhr tatsächlich sofortige Fehler haben kann größer als das. Bei niedrigeren Baudraten wird dies tendenziell gemittelt.