Wie würde ich einen Arduino Due dazu bringen, RS-232/422-Signale zu empfangen?

Hintergrundinformationen zu dieser Frage finden Sie hier: Was kann ich tun, um die Latenz dieser seriellen Ports zu verringern, die über einen Seriell-zu-USB-Adapter an einen PC angeschlossen sind?

Ich überlege, einen Arduino Due zu kaufen, um 3 (naja, letztendlich 5, aber derzeit 3) serielle Signale aufzunehmen, ein RS-232 und zwei RS-422. Der Punkt wäre, genaue Zeitstempel zu erhalten, bevor sie zur Verarbeitung an einen echten Computer gesendet werden.

Der Due hat einen USB-Anschluss, aber ich müsste vermutlich etwas zusammenstellen, das den Mikrocontroller auf die seriellen Signale zugreifen lässt.

Ich kenne aber zufällig bupkis über Hardware. Dies ist keine Bitte an jemanden, mir Schaltpläne zu erstellen (ich weiß eigentlich nicht, ob Schaltpläne für dieses Problem relevant sind, und ich könnte sie [noch] nicht lesen, wenn Sie dies tun würden). Ich habe einfach nicht die Sprache, um das zu recherchieren. Ich müsste vermutlich Dinge zusammenlöten? Eine serielle Schnittstelle (x5) zu einer Art Leiterplatte? Würde ich mit dem Due drei serielle Eingaben machen können? Könnte es fünf unterstützen? Noch wichtiger, woran erkennt man das? (Ich vermute, dass der Due alle fünf Geräte unterstützen könnte, da der Due 54 Pins und ein serieller Anschluss jeweils 9 und 5 * 9 = 45 hat. Bin ich auf dem richtigen Weg?)

Antworten (2)

Der Due, der wirklich ein Atmel AT91SAM3X8E ist, hat nur 4 vollständige serielle Hardwareschnittstellen (obwohl es einen zusätzlichen UART gibt, der funktionieren könnte).

Das erste, was ich dringend empfehlen würde, ist , das Board nicht mehr als "Arduino" zu betrachten . Die Arduino-Tools überkleben lediglich das eigentliche Gerät. Es ist ein AT91SAM3X8E-Entwicklungsboard.
Der erste Ausgangspunkt ist jedoch, die Produktseite und das Datenblatt (pdf) zu lesen .

Funktional sieht RS-422 wie ein differenzieller asynchroner serieller Bus aus. Abhängig von der Implementierung kann es Halbduplex sein (z. B. können Daten nur in eine Richtung gleichzeitig gehen) oder Vollduplex (z. B. können Daten gleichzeitig in beide Richtungen gehen). Dieser Modus wird durch die Hardware bestimmt, da Vollduplex mehr physische Kabel benötigt. Halbduplex ist ein differentielles Paar (und Masse), Vollduplex erfordert zwei Diff-Paare (und eine Masse).

Für Vollduplex in einer Nicht-Bus-Topologie (z. B. nur zwei Geräte) kann die für die Busschnittstelle erforderliche Hardware so einfach sein wie das Einfügen eines differenziellen Leitungstreibers/Empfängers zwischen dem USART Ihrer MCU und dem anderen Gerät.

Bei Bus-Topologien oder Halbduplex-Verbindungen wird es komplexer, da Sie in der Lage sein müssen, den Leitungstreiber auszuschalten, damit die anderen Geräte über die gemeinsam genutzten Verbindungen sprechen können.

Eine Anmerkung ist auch, dass Sie viele "RS-422 / RS-485" -Leitungstreiber usw. sehen werden ... Dies liegt daran, dass die Spezifikationen der physikalischen Schicht für die beiden gleich sind, also ein Treiber, der für RS-422 funktioniert funktioniert im Allgemeinen für RS-485 und umgekehrt. Tatsächlich gibt es oft Geräte, die beide Protokolle unterstützen.


Glücklicherweise sieht RS-422 genauso aus wie RS-232, nur mit unterschiedlichen physikalischen Signalisierungspegeln (und einer ist differentiell). Daher ist die Umwandlung von RS232 in RS422 so einfach wie das Einstecken eines Konverters. (RS485 ist stärker involviert).

Das bedeutet, dass Sie den 5. UART im AT91SAM3X8E wahrscheinlich ohne Probleme für Ihren 5. Kanal verwenden können (oder Sie könnten ihn sowieso nur für die RS232-Verbindung verwenden).


Um Ihr Gerät dazu zu bringen, RS-422 zu sprechen, benötigen Sie einen RS422-Treiber-IC . Zum Glück gibt es viele Möglichkeiten . In DIP sind sogar Optionen für einfaches Prototyping verfügbar.

Breakout-Boards sind schwerer zu bekommen, da RS-422 in allen Bastlerklassen ziemlich ungewöhnlich ist. Ich habe einen gefunden , aber er sieht ziemlich schlecht aus (kein Masseanschluss!). Zum Ausprobieren dürfte es aber gut funktionieren.

Auf den ersten Blick scheint es, dass der Due 4 serielle Hardware-Ports unterstützt. Wenn Sie eine fünfte Serie wünschen, können Sie dies jederzeit in Software auf dem Mikrocontroller tun. Beachten Sie, dass es hier nur um die seriellen Daten (rx/tx) geht. Ich weiß nicht, wie es mit CTS und all dem umgeht. Das ist wahrscheinlich eine Frage für sich wert. Da Sie jedoch sowieso USB mit FTDI vom Arduino zurück zum PC verwenden, macht dies möglicherweise keinen großen Unterschied.

Sie müssen sich um die Pegelverschiebung kümmern, da der Due nur 3,3 V ausführt, also müssen Sie sicherstellen, dass Sie ihn nicht überschreiten.

Viel Glück. :-)

Er würde sowieso eine Pegelverschiebung benötigen, da es sich um RS422 handelt
@ConnorWolf Zustimmung. Nur etwas, dessen man sich bewusst sein sollte. :-)
@kmort wofür steht CTS?
@canisrufus Klar zum Senden. Es gibt noch ein paar andere wie DTR. Sehen Sie sich diesen Link an: en.wikipedia.org/wiki/Serial_port
@canisrufus - Sie sind "Hardware-Flusssteuerungs" -Leitungen. Grundsätzlich war es früher üblich, dass Geräte nicht genug Rechenleistung hatten, um einen kontinuierlichen seriellen Datenstrom zu verarbeiten. Die CTS-Leitung lässt den Empfänger dem Sender sagen „Ich kann jetzt mehr Daten verarbeiten“/„Ich kann jetzt nicht mehr Daten verarbeiten“, und das RTS lässt den Sender dem Empfänger sagen „Ich habe Daten verfügbar“, damit der Empfänger abfragen kann für die Daten/Vorbereitung zur Geltendmachung von CTS.