Können wir die Baudrate der RS232-Kommunikation aus dem TX-Ausgangssignal berechnen?


10

Können wir die Baudrate oder Kommunikationsgeschwindigkeit der RS232-Kommunikation aus dem X-Ausgangssignal berechnen ?

Das folgende Bild stammt von einem RS232-Kommunikationsausgangssignal. Ich habe dieses Bild mit 0xaa aufgenommen und der Zeitraum zwischen den Hochs beträgt 100.us.

Ich habe gehört, dass die Frequenz des externen Oszillators 8 MHz beträgt. Können wir daraus die Baudrate berechnen?

Oszilloskopspur mit RS232-Signal


9
Ich denke, ein EE sollte das wissen F=1/T.
Eugene Sh.

2
Ich hatte erwartet, dass dies eine Frage zum Erkennen der Baudrate ohne Kenntnis der Daten ist, um die Konfiguration zu vereinfachen, aber dies? @ EugeneSh. ist mehr als richtig - die Definition der Frequenz zu kennen, ist Grundwissen bei der Arbeit mit Elektronik.
NieDzejkob

1
Tipp: Wenn Sie durch so etwas verwirrt sind, lassen Sie Ihre Entwicklungsmaschine Ihre besten Vermutungen darüber abgeben, was Sie zu sehen glauben, und sehen Sie , wie dies im Vergleich zum Umfang aussieht. Wenn Sie falsch liegen, verfeinern Sie Ihre Vermutung, um sie näher zu bringen.
Chris Stratton

Sigrok ist Open Source, oder? Wie denken die Leute, dass "Rate erraten" funktioniert?
McKenzm

Antworten:


21

Es sieht so aus, als hätten Sie ungefähr 2,4 Bit-Zeiten pro Division, was 250 µs entspricht. Damit liegt jede Bitzeit bei 104 µs. Invertieren ergibt 9,6 kBaud. Das ist eine der Standard-Baudraten, das klingt also ziemlich plausibel.


12

Ihr Bereich zeigt das Timing bei . Dies kann entweder das Setzen der Cursor oder die automatisierte Verwendung einer Kennzahlfunktion für den Bereich sein. Das sagst du nicht. In beiden Fällen stimme ich Olins Kommentar zu, dass dies nahe 9600 Bit / s liegt, was eine übliche Bitrate für die RS-232-Kommunikation ist.100μs


Ihr eigener Kommentar zur externen Taktrate würde jedoch, falls zutreffend, argumentieren, dass eine exakte Auflösung von 9600 Bit / s unwahrscheinlich ist. teilt sich nicht gleichmäßig auf 9600 Bit / s auf.8MHz

Einige andere Gedanken:

  1. Wenn es sich tatsächlich um eine , haben sie die zulässige Genauigkeitsänderung von überschritten, die für die übliche Rate von 9600 Bit / s zulässig ist. (Wenn Sie die Berechnungen und Gedanken hinter dieser Abbildung sehen müssen, lesen Sie diese Maxim-Seite .) Wenn die von uns akzeptierte Genauigkeit des Bereichs nur ungefähr ist, darf sie die Genauigkeitsanforderungen nicht überschreiten. Unabhängig davon ist es eine gute Idee, dass Sie wissen, dass sie existieren. ± 2 %100μs±2%
  2. Dieses Signal verwendet eindeutig keine RS-232-Spannungen, sondern möglicherweise ~ .3.5V
  3. Dieses Signal verwendet ein HI für MARK (in RS-232 ist ein MARK eine negative Spannung), daher muss dies ein Logikpegel sein, der von einem Mikro ausgegeben wird, und keine RS-232-Signalisierung.

Wenn Sie das erforderliche START-Bit und das minimale STOP mit einer Bit-Zeit entfernen, bedeutet dies, dass wahrscheinlich mindestens sieben Bitzeiten für Daten verbleiben:

Geben Sie hier die Bildbeschreibung ein

Das Obige würde unabhängig von der Endianness als 0x2A interpretiert werden, wenn ich aufpasse.

Dies wäre jedoch das Diagramm für acht Datenbits:

Geben Sie hier die Bildbeschreibung ein

In diesem Fall wäre die Interpretation entweder 0xAA oder 0x55, abhängig von der Endian-Natur des Streams. Dies könnte also Ihre 0xAA darstellen (Little Endian, was meiner Meinung nach häufiger vorkommt).

Wie Sie sehen können, müssen sich Sender und Empfänger a priori über die Anzahl der Datenbits und deren Endian-Charakter einigen.

Die Scope-Ergebnisse könnten als noch längere serielle Wortgrößen interpretiert werden. Ich habe sie schon einmal gesehen (9, am häufigsten, da einige ICs dies unterstützten, aber ich habe sogar 10 gesehen, die zuvor verwendet wurden.)

Ohne Vereinbarung ist es schwierig, sicher zu sein.


Als Seitenleiste:

Ich erinnere mich an die Tage, als sich Teletypen zu der Zeit, als RS-232 1960 erstellt wurde, von 5 Bit auf 6 Bit bewegten (DTE der frühen 1960er Jahre), als mein Vater einen solchen Teletyp zu Hause in einem Heimbüro hatte. Sechs-Bit-RS-232-Kommunikation bestand tatsächlich für einen bestimmten Zeitraum.

Die ASCII-Codierung wurde in den späten 1960er und frühen 1970er Jahren häufig verwendet und ist eine 7-Bit-Codierung. Bei der RS-232-Datenkommunikation wurden häufig 7 Datenbits verwendet.

Später, als Kommunikations-ICs und Mikrocontroller allgemein verwendet wurden und reichlich 8-Bit-Registergrößen verfügbar waren, wurde RS-232 häufig erweitert, um jeweils 8 Bit zu senden / empfangen.

Ich denke, die meisten Leute erwarten heute nur, dass es für die 8-Bit-Kommunikation verwendet wird. Das war aber nicht immer der Fall.


Ich denke, die Daten könnten auch die zwei Bytes 0x98 0xE6 bei 19.200 sein, aufgeschlüsselt als s00011001Ss01100111S [s = Start S = Stopp]. Einige Zeichen wie "A" [0x41] erzeugen Bitmuster, die von keiner anderen Baudrate erzeugt werden können (wahrscheinlich, warum Hayes "A" als erstes Zeichen für die Autobaud-Trainingssequenz gewählt hat), aber das obige Muster würde ein gültiges Zwei- darstellen. Bytesequenz bei 19.200 Baud.
Supercat

Ich war der stolze Besitzer einer mechanischen Fernschreibmaschine. Es war völlig mechanisch und lief mit 60 Baud. Gut mechanisch, wenn Sie keine Magnete und keinen Synchronmotor zählen. Das Startbit löste eine Kupplung und ein Wählrad begann sich zu drehen und die Dinge passierten nacheinander, um den Druckkopf zu positionieren und den Hammer abzufeuern. Es war so cool zu sehen. Musste es in Großbritannien zurücklassen, als ich nach Kanada kam. Es war eher zu schwer zum Versenden.
Trevor_G

Ziemlich sicher, dass dies einer der Hauptgründe ist, warum rs232 so extreme Antriebsspannungen und -ströme hatte. Dazwischen war nichts, nur RS232-Kabel -> Magnet.
Trevor_G

@ Supercat Ja. Es könnte auch zeitlich unterteilt werden. Diese Variationen beginnen jedoch an den Punkt zu gelangen, an dem ein Buch benötigt wird. Aber Ihr Punkt ist sicherlich genommen.
Jonk

1
@ Trevor Ich besaß nie eine, aber ich hatte oft die KSR-35 (eine sehr beeindruckende mechanische Maschine auf Nockenbasis) und die späteren, viel billigeren ASR-33 / KSR-33-Einheiten verwendet. Der, den mein Vater bei uns zu Hause hatte (bevor er bei einem Verkehrsunfall starb), war keiner von diesen, sondern ein früheres 6-Bit-Code-Gerät, dessen Größe dem ASR-33 ähnelte.
Jonk

0

Wenn dies für einen Mikrocontroller gilt, ist es nicht möglich, die Baudrate von seinem Oszillator zu bestimmen, aber ein 8-MHz-Kristall kann definitiv 9600 Baud erzeugen.

Können Sie mir die genaue Zeit vom ersten bis zum letzten Hoch messen und sagen? - Das erste Feld sieht für mich etwas anders aus. Mir scheint, Sie verwenden einen Trigger. Können Sie ihn etwas höher bewegen, denn wenn es sich um einen Flankentrigger handelt und auf den Spitzen sitzt, hat das Oszilloskop möglicherweise Probleme beim Auslösen.


Wenn Sie das Signal abtasten und die kleinste angetroffene Breite messen, ist es trivial, die Rate zu berechnen. Früher oder später muss auf ein Startbit eine '1' folgen.
McKenzm

0

Das Bestimmen der Baudrate aus einer Scope-Ablaufverfolgung ist manchmal, aber nicht immer möglich.

Die Baudrate ist die Umkehrung der Bitperiode, aber das Signal kann für viele Bitperioden im gleichen Zustand bleiben, sodass Sie die Bitperiode nicht immer eindeutig aus der Scope-Ablaufverfolgung bestimmen können.

Unter der Annahme von 8-Bit-Daten und keiner Parität könnte Ihre Wellenform ein einzelnes Byte mit einer Bitperiode von ~ 100 ns darstellen, aber auch zwei Bytes mit einer Bitperiode von etwa 50 ns.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.