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:
Aus Sicht der MCU-Firmware sind beide gleich, da wir die gleichen Pins für RS232 oder RS485 verwenden.
Der Hauptunterschied liegt in ihren Signalspannungspegeln und Punkt-zu-Punkt (RS232) oder Mehrpunkt (RS485).
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 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.
Chris Stratton