Aus Raspberry Pi Geek 12/2019

Serielle Kommunikation über RS-232/RS-485 (Teil 1) (Seite 3)

Abbildung 4: In den Einstellungen zur seriellen Verbindung erlaubt PuTTY die Wahl der Software Flow Control.

Abbildung 4: In den Einstellungen zur seriellen Verbindung erlaubt PuTTY die Wahl der Software Flow Control.

Software Flow Control benötigt weniger Leitungen. Allerdings muss sichergestellt sein, dass die XON– und XOFF-Zeichen nur für die Flusskontrolle zum Einsatz kommen. Bei der Übertragung binärer Daten muss man deshalb die entsprechenden Zeichen maskieren.

RS-232

RS-232 ist ein Standard für serielle Punkt-zu-Punkt-Kommunikation zwischen zwei Geräten, beispielsweise zwischen einem klassischen Modem und dem Computer. Der Standard definiert die elektrische Schnittstelle dafür, und es gibt Übereinkünfte über die Steckverbinder. Die entsprechende Norm stammt aus dem Jahr 1997 und heißt EIA/TIA-232-F. Das RS von RS-232 steht für Recommended Standard.

Inzwischen hat USB die früher weitverbreitete RS-232-Schnittstelle praktisch abgelöst, sie wird in modernen Computern in der Regel nicht mehr verbaut. Vor allen Dingen bei Geräten für industrielle Anwendungen dient RS-232 jedoch noch als Diagnoseschnittstelle. Heutzutage ist bei RS-232 der 9-polige Sub-D-Stecker gebräuchlich (Abbildung 5), dessen Belegung Abbildung 6 zeigt (wobei nicht alle Pins geschaltet werden müssen).

Abbildung 5: Den 9-poligen RS-232-Stecker kennt man noch von seriell arbeitenden Computermäusen aus der Zeit vor der USB-Schnittstelle. (Bild: Wikipedia, CC-BY-SA)

Abbildung 5: Den 9-poligen RS-232-Stecker kennt man noch von seriell arbeitenden Computermäusen aus der Zeit vor der USB-Schnittstelle. (Bild: Wikipedia, CC-BY-SA)

Abbildung 6: Die wichtigsten Pins der RS-232-Schnittstelle sind Pin&nbsp;2 (<span class="ui-element">RxD</span>/<span class="ui-element">RX</span>, Receive Data), Pin&nbsp;3 (<span class="ui-element">TxD</span>/<span class="ui-element">TX</span>, Transmit Data) und Pin&nbsp;5 (<span class="ui-element">GND</span>). (Bild: Wikipedia, CC-0).

Abbildung 6: Die wichtigsten Pins der RS-232-Schnittstelle sind Pin 2 (RxD/RX, Receive Data), Pin 3 (TxD/TX, Transmit Data) und Pin 5 (GND). (Bild: Wikipedia, CC-0).

Die RX- und TX-Pins zwischen Sender (Computer) und Empfänger (etwa dem Modem oder dem zweiten Computer) müssen jeweils gekreuzt sein (siehe Tabelle “RS-232-Pinbelegung am Computer/Sender 1”). Bei zwei direkt miteinander verbundenen Computern kommen daher sogenannte Nullmodemkabel zum Einsatz, bei denen die RX- und TX-Leitungen gekreuzt sind – Nullmodem, weil kein Modem dazwischen hängt. In allen Fällen braucht es für die Kommunikation mindestens die Pins 2 (RX), 3 (TX) und 5 (GND).

Pin

Aufgabe

Erläuterung

Pin 1

DCD (Data Carrier Detect)

Pin 2

RxD/RX (Receive Data)

Empfang an Computer 1. Sendelinie für Computer 2, beziehungsweise Empfänger.

Pin 3

TxD/TX (Transmit Data)

Senden für Computer 1. Empfang für Computer 2.

Pin 4

DTR (Data Terminal Ready)

Pin 5

GND

Die Signale werden gegen diese Referenz gemessen.

Pin 6

DSR (Data Set Ready)

Pin 7

RTS/RTR

Computer 1 ist bereit, Daten zu empfangen (Hardware Flow Control).

Pin 8

CTS (Clear to Send)

Empfänger (Computer 2) ist bereit, Daten zu empfangen (Hardware Flow Control).

Pin 9

RI (Ring Indicator)

Auf dem Raspberry Pi erzeugt der UART die entsprechenden digitalen Signale, sie müssen allerdings durch einen RS-232-Transceiver-Chip auf die richtigen Pegel gebracht werden. RS-232 definiert für die Datenleitungen (RX und TX) für eine logische Eins eine Spannung zwischen -3 Volt und -15 Volt, für eine logische Null eine Spannung von +3 Volt bis +15 Volt. Signale zwischen -3 Volt und +3 Volt gelten als undefiniert.

Auf den Steuerleitungen (RTS, CTS etc.) liegt im aktiven Zustand +3 Volt bis +15 Volt und im inaktiven -3 Volt bis -15 Volt an. Das entspricht einem Ziehen auf GND beziehungsweise einer logischen Null des UART, entsprechend einer logischen Null auf den Datenleitungen. Um diese Spannungen am Sender auch bei Spannungsabfällen über das Kabel und über Stecker und Kontakte hinweg zu erreichen, muss der Empfänger mindestens eine Spannung von +5 Volt beziehungsweise -5 Volt aufbauen, üblich sind sogar Spannungen bis hin zu ±12 Volt.

Solche Spannungen würden die empfindlichen GPIO-Pins am RasPi grillen, die nur für 0 bis 3,3 Volt ausgelegt sind. Daher darf man die UART-Pins des RasPi auch nicht direkt mit einem RS-232-Gerät verbinden. Die Kommunikation über RS-232 setzt daher einen speziellen Chip voraus. Dazu gibt es spezielle HATs für den RasPi; provisorisch kann man sich auch eine Schaltung mit dem entsprechenden Chip auf einem Breadboard aufbauen.

Interessanterweise erfordert die Kommunikation aber nicht unbedingt eine Spannungsquelle mit 12 Volt, da manche Chips bereits integrierte Ladungspumpen mitbringen. Ein solcher Chip wäre zum Beispiel der MAX3225E, den es auch im Breadboard-freundlichen DIP-Gehäuse gibt (Abbildung 7).

Abbildung 7: Schaltdiagramm f&uuml;r den MAX3225E mit integrierter Ladungspumpe. (Bild: Maxim)

Abbildung 7: Schaltdiagramm für den MAX3225E mit integrierter Ladungspumpe. (Bild: Maxim)

Dabei wird T1OUT als TxD-Pin auf der RS-232-Seite genutzt und T2OUT als RTS– beziehungsweise RTR-Signal. R1IN ist RxD auf RS-232-Seite, R2IN ist CTS. Auf der RasPi-Seite werden die Pins entsprechend an die UART-Pins beschaltet:

  • zwei Sendesignale: T1IN = TXD & T2IN = RTS
  • zwei Empfangssignale: R1OUT = RXD & R2OUT = CTS

Den Chip kann man mit 3,3 Volt versorgen, die benötigten Spannungen für die RS-232-Schnittstelle erzeugt er mittels Ladungspumpe selbst. Dazu benötigt er externe Kondensatoren als Zwischenspeicher für die Ladungen. Details zum Aufbau der Schaltung liefert das Datenblatt des Herstellers [3].

Ein Nachteil von RS-232 liegt darin, dass die Schnittstelle die Signale nicht differenziell überträgt, sondern asymmetrisch. Das Verfahren reagiert empfindlich auf sogenannte Gleichtaktstörungen, die beispielsweise durch elektromagnetische Störer auf den Leitungen entstehen. Das Problem limitiert unter anderem die maximale Länge der Leitungen. Mehr Störsicherheit durch differenzielle Signale bietet serielle Kommunikation nach dem RS-485-Standard.

RS-485

RS-485, auch als EIA/TIA-485 bekannt, adressiert einige der Probleme mit RS-232, um für eine erhöhte Stabilität der Übertragung zu sorgen. Daher implementieren hauptsächlich Entwickler industrieller Anwendungen den Standard. Dabei kommen differenzielle Signale zum Einsatz. Zusätzlich können mehrere Kommunikationspartner auf demselben Netzwerk miteinander sprechen. Für die differenziellen Signale braucht es zwei Leitungen (A und B). In manchen Fällen gibt es noch eine dritte Leitung (SC, G oder Reference Pin) als GND-Referenz.

Mit Spannungen zwischen -7 und +12 Volt arbeitet der Standard mit geringeren Signalpegeln als RS-232. Der minimale Spannungslevel, um ein Signal zu erkennen, liegt für den Empfänger bei ±200 mV. Die tatsächlich auf dem Bus anliegende Spannung hängt typischerweise von der Betriebsspannung des Treibers ab (beispielsweise 5 Volt oder 3,3 Volt beim RasPi).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben