Frage:
Warum braucht RS-232 ein Stoppbit?
Utku
2017-10-03 00:35:49 UTC
view on stackexchange narkive permalink

Das mag offensichtlich sein, aber ich verstehe nicht, warum RS-232 ein Stoppbit benötigt.Ich verstehe, dass das Startbit notwendig ist, um das andere Ende über den Beginn einer Übertragung zu informieren.

Nehmen wir an, wir kommunizieren mit 9600 BPS.Wir gehen von hoch nach niedrig, damit der Empfänger weiß, dass etwas kommt.Der Empfänger weiß auch, dass wir bei 9600 BPS sind und insgesamt 7 Datenbits empfangen.

Nach dem Empfang von 7 Bits wird die Übertragung beendet.Da wir das Ende der Übertragung nur durch Berechnung bestimmen können, warum brauchen wir auch ein Stoppbit?

Wenn ein weiteres Byte kommt, wie wollen Sie es trennen, wenn das letzte Bit im ersten Byte ebenfalls niedrig ist?(Oder ist es hoch? Ich erinnere mich nie)
@Trevor Startbit + 7 Bits = Das erste Byte ist vorbei.Das erste Bit des nächsten Bytes kann hoch oder niedrig sein.Wie macht das Stoppbit hier einen Unterschied?
Weil die Takte an der ersten Flanke des Startbits neu synchronisiert werden.Wenn das letzte Bit des ersten Bytes dieselbe Ebene wie das Startbit hat, erhalten Sie keine Kante zum Synchronisieren.
Stop gefolgt von Start stellt sicher, dass Sie eine "START" -Kante erhalten
Es ist eine Zustandsmaschine, die die Daten 8 Zyklen eines 16-fachen Takts nach der Vorderflanke des Stop-Start-Übergangs zentriert.Das letzte Bit für die Parität sollte auch für die Integrität verwendet werden.
Was Sie zu der Frage führt ... warum bieten sie Ihnen die Möglichkeit, 2 Stoppbits zu senden ... https://electronics.stackexchange.com/questions/29945/one-or-two-uart-stop-bits
Warum brauchen Autos Bremsen?
@Trevor Manchmal wurden zwei Stoppbits benötigt, um dem Empfänger etwas mehr Zeit (im wahrsten Sinne des Wortes!) Für die Verarbeitung des eingehenden Bytes zu geben.
Drei antworten:
Transistor
2017-10-03 00:47:00 UTC
view on stackexchange narkive permalink

Beachten Sie, dass RS232 ein asynchrones Protokoll ist.Es ist kein Taktsignal zugeordnet.

Timing diagram of 8 bit byte showing margin of error for clock

Abbildung 1. Empfänger-Abtastpunkte.Quelle: Sangoma.

Das Startbit wird verwendet, um den Lesezyklus im Empfänger auszulösen.Der Empfänger synchronisiert sich auf dem Startbit und wartet dann 1,5 Zyklen, um die Abtastbits zu starten.Danach werden die Bits mit der Baudrate abgetastet.Diese anfängliche Verzögerung bedeutet, dass der Empfänger selbst bei einem Taktfehler von 5% immer noch innerhalb des Bit-Timings für das letzte Bit sein sollte.

Da das Startbit - in Abbildung 1 niedrig dargestellt - durch eine fallende Flanke gekennzeichnet ist, muss ihm ein Hoch vorausgehen, und dies stellt das Stoppbit sicher.Die Alternative wären zwei Startbits und keine Stoppbits, aber es würde die Gesamtnachrichtenlänge nicht ändern.

Der verlinkte Artikel enthält einige weitere erwähnenswerte Punkte.

+1 Ich wollte nur meine Kommentare in eine ähnliche Antwort setzen.Du hast mir die Zeit gespart, danke :)
Korrigieren Sie mich, wenn ich falsch liege (Speicher nicht so, wie er war), aber die meisten UARTS geben Ihnen auch einen Rahmenfehler, wenn das Stoppbit nicht wie erwartet erkannt wird, wodurch Sie etwas mehr Fehler erkennen.
@Trevor: Es wird als "Framing" -Fehler bezeichnet, da es wirklich bedeutet, dass die Kante, die der Empfänger für die Vorderkante eines Startbits hielt, wirklich ein anderes Datenbit war - dh der Empfänger hatte den Datenstrom falsch "gerahmt"(Die Bytegrenzen wurden falsch identifiziert).Dies kann passieren, wenn der UART mit einem Datenstrom verbunden ist, der bereits ausgeführt wird, oder plötzlich mitten in einem Datenstrom zurückgesetzt wird.
@DaveTweed ja ich weiß, aber woher weiß es das, wenn es nicht nach dem Stoppbit sucht.Ich meine, das ist das einzige Stück, das in einem bekannten Zustand sein sollte.
@Trevor: Ja, es wird tatsächlich nach dem Stoppbit gesucht.Ich wollte nur darauf hinweisen, dass es nicht nur ein bisschen Fehler in diesem Bit ist, sondern ein Indikator für ein anderes Problem, wie es seinen Namen bekommt.
@DaveTweed ah .. richtig gotchya
Der RS-232-Standard erlaubt tatsächlich Taktleitungen, aber Wikipedia beschreibt sie korrekt als "selten verwendet" - selbst wenn Synchronisierungsprotokolle verwendet wurden, wie ich in meiner Antwort beschreibe, verwendeten sie normalerweise ihre eigene Taktung, nicht 232.
dave_thompson_085
2017-10-03 08:11:05 UTC
view on stackexchange narkive permalink

RS-232 benötigt es nicht. Einige RS-232 -Geräte tun dies. Insbesondere sind serielle / RS-232-Schnittstellen auf Computern häufig RS-232 mit UART (Universal Asychronous Receiver / Transmitter), das nur unterstützt asynchrone Übertragung.

In seiner Blütezeit wurde RS-232 häufig für Netzwerkprotokolle wie 'Bisync' (BSC), SNA / SDLC, X.25 / LAPB und DECnet / HDLC verwendet, die die synchrone Übertragung eines 'Frames' oder verwendeten 'Block', normalerweise bis zu mehreren hundert Oktetten, kontinuierlich (keine Start- oder Stoppbits) von einem Anfangs- zu einem Endmarker. Die letzten drei verwendeten Bit-Stuffing (transparent für Software an beiden Enden), um teilweise genügend Übergänge sicherzustellen, um die Synchronisation auf Bitebene unabhängig von den Daten aufrechtzuerhalten. Es waren sowohl UART-Chips (nur Async) als auch USART-Chips (Sync und Async) verfügbar, die ersteren waren jedoch billiger und wurden häufiger verwendet.

In den 1990er Jahren wurden die meisten, wenn nicht alle synchronen Verwendungen von RS-232 durch lokales Ethernet (und später Ethernet-emulierendes 802.11) oder Token-Ring (jetzt meistens vergessen, aber dann ein ernsthafter Konkurrent) und Remote-T-1-ISDN oder ersetzt Frame Relay, während einige Verbindungen, die natürlich oder konventionell asynchron waren (wie z. B. billige Nadeldrucker), erhalten blieben, verwendeten Computerdesigner eine billigere serielle Async-Schnittstelle (oder in den letzten Jahren überhaupt keine).

Graham
2017-10-03 14:05:00 UTC
view on stackexchange narkive permalink

Wie genau produzieren Sie 9600 Baud?Oder genauer gesagt, wenn Sie bis zu 115,2 kBaud erreichen, wie genau machen Sie das?Und ist Ihr Sendegerät für jede andere Frequenz geeignet - denn wenn dies der Fall ist, muss der Empfänger damit umgehen?

Ein Stoppbit verringert das Problem.Der Empfänger weiß, dass ab der fallenden Flanke des Startbits 1 Startbit und 7 Datenbits (in Ihrem Beispiel) gezählt werden und das 9. Bit immer hoch sein muss.Ist dies nicht der Fall, darf der Sender nicht mit der richtigen Frequenz senden, und wir wissen, dass wir keine gute Verbindung haben.

Natürlich ist das nicht perfekt, wenn die letzten paar Bits alle hoch sind, aber es ist ein Anfang.Die Fehlererkennung ist niemals perfekt und es geht immer nur darum, die häufigsten Probleme zu erkennen.Ihr Protokoll kann dabei helfen, indem sichergestellt wird, dass alle "Ping" -Nachrichten zum Einrichten der Sitzung ein Null-Byte enthalten (oder idealerweise damit beginnen).



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...