RS485 vs. RS232 Ähnlichkeit vs. Unterschiede

Ich habe die UART RS232-Kommunikation zwischen MCUs ausgiebig genutzt. Jetzt muss ich meine STM32F407-MCU über den RS485-Bus mit Geräten verbinden. Ich habe einige Dinge über RS485 verstanden, bin mir aber über einige Punkte nicht im Klaren. Bitte korrigieren Sie mich, wenn ich falsch liege:

  1. Aus Sicht der MCU-Firmware sind beide gleich, da wir die gleichen Pins für RS232 oder RS485 verwenden.

  2. Der Hauptunterschied liegt in ihren Signalspannungspegeln und Punkt-zu-Punkt (RS232) oder Mehrpunkt (RS485).

Geteilte Schemata unterscheiden sich drastisch , da die Software wissen muss, wann sie sprechen soll.

Antworten (2)

Meist richtig. Bestimmte Konfigurationen von RS485 mit Halbduplex-Kollisionserkennung erfordern ein Treiberaktivierungssignal und Softwareänderungen, um die Kollision zu erkennen, die RS232 niemals benötigen würde. RS485 könnte auch eine Adressierung in Hardware oder Software implementiert haben, die RS232 niemals hätte.

Aber für Punkt-zu-Punkt-Kommunikation können Sie im Wesentlichen den gleichen Code sowohl für RS232 als auch für Vollduplex-RS485 verwenden.

RS232 ist byteorientiert, was ist mit RS485.. ist bit- oder byteorientiert?
Mit RS-485 gibt es etwas mehr Flexibilität, da Sie Multi-Master und Multi-Drop haben können, aber es geht immer noch alles auf das zurück, was das UART-Modul in der MCU zulässt, und nicht das RS-485 selbst. Mit dem UART können Sie möglicherweise 7, 8 oder 9 Bits zwischen jedem Stopp- und Startbit senden, wobei das zusätzliche Bit entweder ein Paritätsbit oder ein Adress-Flag-Bit sein kann und die Nutzlast 7 Bit oder 8 Bit betragen kann. Sie müssten das Handbuch für das RS-485-Gerät lesen, mit dem Sie verbunden sind, um die Details seines Protokolls zu sehen (was Sie sowieso tun müssten, um herauszufinden, welche Nachrichten es sendet und empfängt).
Denken Sie daran, dass RS-232 auch mit einem Paritätsbit als 9. Bit konfiguriert werden kann. Es ist also nicht ganz richtig zu sagen, dass es byteorientiert ist. Es kommt auf den UART hinter dem RS-232- und RS-485-Transceiver an. RS-232 und RS-485 sind nur die physikalische, elektrische Schicht. Beispielsweise erzeugt der UART die Start- und Stoppbits. Es gibt viele Quad-Encoder, die ihre Impulse über RS-485 einfach als Impulsfolge ohne Start- oder Stoppbits ausgeben.
Vollduplex RS485 ist als RS422 bekannt, daher gibt es so etwas wie "Vollduplex RS485" nicht wirklich.

RS232 verwendet unsymmetrische Signale. RS485 hat symmetrische Signale, was die Störfestigkeit radikal erhöht.

Sie haben Recht, dass mehrere Geräte dieselben RS485-Kabel verwenden können. Natürlich kann immer nur einer von ihnen gleichzeitig senden, aber alle können abwechselnd senden. RS232 hat diese Fähigkeit nicht, jeder Draht hat einen dedizierten Sender. RS485 benötigt eine komplexe Software, um Gesetz und Ordnung aufrechtzuerhalten, wenn sich mehrere mögliche Sender auf demselben Bus befinden. Das ist ein allgemeines Netzwerkproblem und es gibt mehrere gängige Lösungen.

RS232 definiert, wie übertragene Bits und Zeichen dargestellt werden (= Timing) und Handshaking für die Flusskontrolle, RS485 definiert nur Bitspannungspegel, man kann beliebig komplexe Timings verwenden.

ERRATA: Kommentare behaupten, dass das gemeinsame asynchrone Kommunikationsdatenformat mit Start- und Stoppbits nicht Teil der RS232-Spezifikation ist. Benutzer Sam Gibson hat es anhand des aktuellen Standards überprüft, also ist es eine Tatsache und ich habe mich geirrt.

RS485 definiert keine Timings mehr oder weniger als RS-232 ... der UART definiert das,
RS232 hat Datenformat- und Handshaking-Definitionen. Vielleicht ist Timing ein schlechter Begriff dafür.
Handshaking oder Software Flow Control sind die gesuchten Begriffe. Aber diese sind immer noch durch den UART-Standard definiert und haben nichts mit RS485 oder RS232 zu tun, die Hardwarestandards sind. Dasselbe Handshaking kann für Vollduplex-RS485 verwendet werden.
Leider habe ich die Standards nicht, weil sie urheberrechtlich geschütztes und teures kommerzielles Zeug sind. Glauben Sie, dass Handouts wie diese Mist sind analog.com/media/en/technical-documentation/…
Sie könnten aufgrund der Entwicklung von RS-232 und der Verwendung allgegenwärtiger Terminologie Recht haben. Aber es ist wahrscheinlich am besten, sich RS-232 als Hardware und UART als Software vorzustellen, da es oft mit verschiedenen elektrischen Schnittstellen verwendet wird.
Niemand verhindert, dass UART über andere als RS232-Signale verbunden wird. Musiker haben ihre MIDI zB. Aber haben Sie einige Fakten, die besagen, dass RS232 in seinem Leben in irgendeiner Phase solche Dinge wie Wortlängen oder Start-, Stopp- und Paritätsbits überhaupt nicht kommentiert hat?
@ user287001 - Hallo, nur zu Ihrer Information, ich habe eine Kopie von RS-232-F (neueste Version - jetzt ANSI/TIA/EIA-232-F genannt). Es gibt wirklich nicht das Datenformat als Start-/Daten-/Stoppformat (dh eingebettete Uhr) an, das wir mit UARTs verwenden. Tatsächlich kann man das nicht sagen, da RS-232 auch (inzwischen selten!) verwendet wird, um Daten zwischen Geräten mit synchronen Datenströmen zu übertragen. Die für diese synchronen Daten erforderlichen Takte befinden sich auf den Pins 15, 17 (und gelegentlich 24) des standardmäßigen 25-Pin-Anschlusses. Die Daten (immer noch auf den Pins 2 und 3) haben dann keine Start- oder Stoppbits. Ja, das bedeutet den Link, den Sie auf analog.com (Fortsetzung) gefunden haben.
(Fortsetzung) ... ist falsch, da davon ausgegangen wird, dass RS-232 für asynchrone Daten verwendet wird, und zeigt daher dieses Datenformat. Natürlich ist das jetzt die gebräuchlichste Verwendung, wie wir wissen. Aber das ändert nichts an der Tatsache, dass Synchronisierungsdaten auf RS-232 verwendet wurden (ich habe vor langer Zeit Protokolldecodierung als Teil der Fehlersuche bei solchen Verbindungen durchgeführt, daher weiß ich, dass es Teil des RS-232-Standards ist). Es ist nur so, dass Async jetzt so verbreitet ist, dass für viele Leute (und in diesem analog.com-Dokument) RS-232 = UART-Format (dh Start / Daten / Stopp) ist, aber streng genommen ist das nicht wahr und der RS-232-Standard sagt es nicht Das. Hoffentlich hilft das!
@SamGibson Anscheinend sind Überzeugungen und gängige Praktiken ein schlechter Ersatz für Wissen. Danke! Ich werde mein Schreiben bald korrigieren.
@ user287001 - Froh, dass ich helfen konnte :-) Ich vermute, dass Synchronisierungsdaten über RS-232 jetzt so selten sind, dass viele Leute es nicht gesehen haben. (Ich habe es seit über 20 Jahren nicht mehr benutzt, aber einige der beteiligten IBM-Geräte könnten noch irgendwo verwendet werden ...) Das passiert mit einem Standard, der erstmals in den 1960er Jahren definiert wurde und für alle möglichen Geräte verwendet wurde das sind jetzt veraltet, aber dieser Standard wird immer noch verwendet! Immer weniger Menschen leben noch, die an diesen veralteten Geräten gearbeitet haben, so dass das Wissen langsam verloren geht...
Das wirft jedoch die Frage auf, wo die Start-Stopp-Bits definiert sind, weil ich nur wusste, dass RS-232 nur die Hardware spezifiziert, aber immer noch keine Ahnung habe, wo die logische Schicht spezifiziert ist.