Theorie
 
 
 
 
 
Schnittstellen
 
 
 
 
 
seriell, asynchron
 
 
RS232 / RS485 Schnittstelle
 
 

 
 
 
 

 

Grundsätzliche Funktion
Bei der asynchronen Schnittstelle werden ohne zusätzliche Taktleitung, Datenbits auf einer Leitung übertragen. Der zur Unterscheidung der Datenbits notwendige Takt, wird auf dem Sender- und dem Empfängerbaustein in Taktgeneratoren erzeugt, die voneinander unabhängig sind. Dementsprechend ist es notwendig die Taktgeneratoren beider Geräte auf die gleiche Taktfrequenz (die Baudrate) einzustellen und vor der Übertragung eines Datenblocks (Frames) zu synchronisieren, so dass sie im Gleichtakt schwingen. Diese Synchronisation wird durch ein Startbit hervorgerufen, dem dann die Datenbits folgen.
Während der Zeit, in der die Datenbits übertragen werden, hofft man, dass beide Taktgeneratoren synchron zueinander takten, was bei kleinen Datenmengen, in der Regel sind es 5 bis 8 Bits, auch zutrifft. Den Abschluss eines solchen Datenblockes, der auch ein Paritätsbit hinter den Datenbits beinhalten kann, bilden ein oder zwei Stopbits. Alle Bits (Startbit, Datenbits, Paritybit und Stopbit) zusammen bezeichnet man als Frame.

Takt und UART
Hardwaremässig besteht die serielle Schnittstelle RS232 also aus dem Taktgenerator und einem Baustein, der im Wesentlichen ein parallel ladbares- bzw. lesbares Schieberegister beinhaltet. Dieser Baustein wird als UART bezeichnet, was Universal Asynchronous Receiver/Transmitter bedeutet. UARTs arbeiten mit der Versorgungsspannung des Computersystems. Häufig anzutreffen ist die TTL-Spannungversorgung von +5V, der dann auch die parallelen Aus- bzw. Eingänge des UART entsprechen. Zudem schieben UARTS das least signifikant bit (LSB) eines Datenwortes als erstes Bit aus ihrem Schieberegister heraus .. so dass dieses, nach dem Startbit, auch als erstes Bit den Empfänger erreicht.

Signalpegelanpassung
Die serielle RS232-Schnittstelle ist im Gegensatz zu den (20mA) Stromschnittstellen, oder den differentiellen Spannungsschnittstellen wie der RS485, eine 'single ended (unbalanced) Spannungsschnittstelle'. Die logischen Daten 0 oder 1 am seriellen Ausgang des Schieberegisters sind also einer bestimmten Höhe der Ausgangsspannung gegen das Bezugspotential GND zugeordnet. Folgende Spannungsdefinitionen gelten ..

 

 

 

 

 

 

TTL-Spannungspegel am UART

RS232 Sendeleitungen

RS232 Empfangsleitungen

 

 

Logisches Signal

Ein-/Ausgänge

(z.B. TxD, CTS)

(z.B. RxD, RTS)

 

 

0

UTTL= 0,0 - 0,7V

Us = +5 bis +15V

Us = +3 bis +15V

 

 

verboten

0,8 - 1,9V

-5 bis +5V

-3 bis +3V

 

 

1

UTTL= 2,0 - 5,0V

Us = -5 bis -15V

Us = -3 bis -15V

 

 

 

 

 

 

 

 

 

 

Aus obiger Tabelle ergibt sich, dass nach dem UART eine Signalpegelanpassung hin zu einer höheren Spannung erfolgen muss. Bei dieser wird die logische 0 zu einer positiven Spannung transformiert und die logische 1 zu einer negativen Spannung. Zum Ausgleich eines möglichen Spannungsfalls auf den verwendeten Leitungen muss zudem die Signalspannung an Ausgängen vom Betrag her grösser sein, als bei Signalen, die an einem Eingang ankommen.

Für diese Signalpegelanpassung vom TTL-Spannungspegel hin zu den Spannungen der RS232 Schnittstelle gibt es fertige Bausteine, wie beispielsweise den MAX232 der Firma Maxim. Derartige Bausteine erzeugen normalerweise aus der Versorgungsspannung des Computersystems eine Spannung, die im Bereich der RS232-Definition liegt. Bei einer 5V Versorgungsspannung sind Spannungen von ±9-10V typisch. Sie entstehen durch die Verdoppelung und Negierung der TTL-Spannungen, über sogenannte Spannungspumpen, die auf Dioden und Kondensatoren basieren.

 

 

 

 

 

Beispiel mit dem MAX232
Die nachfolgende Schaltung zeigt eine Pegelanpassung mit Hilfe des Bausteins MAX232. Bei dieser Schaltung wurde die Möglichkeit vorgesehen, über den Ring Indikator (RI) eine Versorgungsspannung von +5V zu übertragen. Das ist nicht konform zur Norm der seriellen RS232 Schnittstelle, aber hilfreich, wenn ein angeschlossenes Gerät die Versorgungsspannung benötigt und keine zusätzliche Versorgungsleitung benutzt werden soll.

 

 

 

 

 

 

 

 

 

 

Die Leitungen für CTS/RTS können wie (rot) gezeigt miteinander verbunden werden, wenn dieser Handshake nicht verwendet wird, oder mit den entsprechenden TTL-Signalen verbunden werden (grün).

 

 

 

 

 

Bezeichnung, Norm
Die RS232-Schnittstelle wird in Ihren Eigenschaften von der US-amerikanischen Electronic Industries Alliance kurz EIA in ihrem Recommended Standard 232 kurz RS232 beschrieben. Dieser Standard entspricht weitgehend der Norm V.24/V.28/ISO-2110. So findet man für die Schnittstelle die Bezeichnungen EIA232, RS232, EIA-RS232 oder V24.

In der Computertechnik wird von den, in dieser Norm beschriebenen Möglichkeiten und Signalen normalerweise nur eine Untermenge verwendet. Welche Signale und Steckverbindungen sich als Standard bei PCs herausgebildet haben, ist in dem nachfolgenden Bild zu sehen.

 

 

 

 

 

Steckerbelegung 9pol./25pol. Sub-D

 

 

 

 

 

 

 

 

 

 

Das obige Bild zeigt einen 9pol. Sub-D Steckeranschluss mit seiner Signalbelegung für die RS232, so wie er in PCs häufig als COM-Anschluss benutzt wird. Immer seltener vorzufinden ist der 25pol. Sub-D Steckeranschluss des unteren Bildes, der bei älteren PCs ebenfalls vorhanden war.

 

 

 

 

 

 

 

 

 

 

Kurzbeschreibung der RS232-Signale
Die nachfolgende Tabelle nennt die vollständigen Namen der Signale und gibt Hinweise auf deren mögliche Benutzung bei der Verbindung zweier PC-Rechner. Die Signale TxD und RxD werden zur Übertragung von Daten benutzt. Mit den Signalen CTS und RTS kann ein Hardwarehandshake aufgebaut werden, mit dem ein Empfänger einen zu schnellen Sender bremsen kann. Das kann nötig sein, wenn ein Empfänger die empfangenen Daten noch bearbeiten muss, bevor er die nächsten Daten beziehen kann.
Mit den Signalen CTS, DCD und DTR kann ein weiterer Handshake aufgebaut werden. Das Problem bei diesem Handshake ist, dass sowohl DCD oder DSR als Eingangsleitungen benutzt werden können. Hier muss man in den Anleitungen der jeweiligen Applikation lesen, welche Leitung benutzt wurde. In den meisten Fällen bleiben diese Leitungen bei der Verbindung von PCs unbenutzt.

 

 

 

 

 

Signal

I/O

Beschreibung

 

 

TxD

O

Transmit Data,    Sendeleitung für Daten.          Ruhezustand 1 (-Us)

 

 

RxD

I

Receive Data,     Empfangsleitung für Daten.

 

 

GND

-

Bezugspotential für die Spannungen auf allen Leitungen.

 

 

 

 

 

 

 

RTS

O

Request to Send,                                            Ruhezustand 1 (-Us)
Als Ausgangssignal des Senders fragt es den Empfänger, ob dieser bereit ist Daten zu empfangen. Beim Empfänger endet dieses Signal am Anschluss CTS.
Als Ausgangssignal des Empfängers, kann dieser den Sender mit RTS=0 (+Us) dazu bewegen, keine Daten mehr zu senden. Setzt der Empfänger RTS=1 (-Us) so soll wieder gesendet werden. Beim Sender liegt dieses Signal am Eingang CTS. (RTS/CTS Handshake)

 

 

CTS

I

Clear to Send
Als Eingangssignal des Senders wird diesem mitgeteilt, dass der Empfänger bei CLS=1 (-Us) bereit ist, Daten entgegenzunehmen. Der Empfänger gibt dieses Signal auf seiner RTS-Leitung aus.
Als Eingangssignal des Empfängers, weiss dieser bei CTS=1 (-Us), dass der Sender Daten ausgeben möchte.

 

 

 

 

 

 

 

DCD

I

Data Channel Detect, für Mehrleitungs-Handshake benutzte Leitung. Normalerweise in der jeweiligen Applikation beschrieben.

 

 

DSR

I

Data Set Ready, für Mehrleitungs-Handshake benutzte Leitung, normalerweise in der jeweiligen Applikation beschrieben. Kann beispielsweise verwendet werden, um den Einschaltzustand der Gegenstation zu prüfen.

 

 

DTR

O

Data Terminal Ready,                                        Ruhezustand 1 (-Us)
Meldeleitung bei Mehrleitungshandshake. Kann beispielsweise benutzt werden, um der Gegenstation den eigenen Einschaltzustand zu übermitteln.

 

 

 

 

 

 

 

RI

I

Ring Indikator, Bei PCs selten benutztes Signal, um den Empfänger 'wie mit einer Klingel' zu wecken.

 

 

 

 

 

Modem / Nullmodemkabel
Zur Verbindung eines PCs mit einem analogen Telefonmodem, werden die Signale vom PC, ohne Veränderung, linear auf die gleichlautenden Anschlüsse des Modems übertragen. Für diesen Anwendungsfall wurde die RS232 Schnittstelle ehemals entwickelt. Das Bild zeigt das Anschlussschema für ein 9pol. Modemkabel.

Zur Verbindung von RS232-Schnittstellen zweier PCs oder einer Verbindung zwischen einem PC und einem Entwicklungscomputer müssen Nullmodemkabel benutzt werden. Bei ihnen werden die Leitungen dem nachfolgenden Bild entsprechend, über Kreuz angeschlossen. So gelangen beispielsweise über TxD gesendete Daten auf den Empfangseingang RxD des Empfängers. Gleiches gilt für die Handshakeleitungen CTS und RTS.
Das gezeigte Kabel ist ein Nullmodem-Vollkabel, welches auch die Gerätesignale berücksichtigt und von deren Benutzung ausgeht ..

.. Sind auf der Gegenstation nicht alle Signale verfügbar, wie es bei einfachen Terminalverbindungen häufig vorkommt, kann es PC-seitig zu einem fehlerhaften oder überhaupt keinem Verbindungsaufbau kommen. In diesem Fall sollten die Signalgruppen DCD, DSR und DTR und wenn ebenfalls nicht benutzt RTS und CTS miteinander verbunden werden. Mit diesem Trick gaukelt sich der PC selber eine empfangsbereite Gegenstation vor.

 

 

 

 

 

Der Frame
Wie bereits bemerkt, besteht ein Frame aus der Summe aller, von der seriellen Schnittstelle zur Übertragung eines Datenpakets gesendeten Bits. Dies sind ..
1 Startbit, 5 bis 8 Datenbits, wahlweise 1 Paritätsbit und 1 bzw. optional 2 Stopbits. Im Minimum kann also ein Frame aus 1+5+0+1 = 7 Bits bestehen, im Maximum aus 1+8+1+2 =12 Bits. Während der Zeit die es braucht ein Frame zu übertragen, müssen die Taktgeneratoren im Sender und im Empfänger synchron zueinander arbeiten.

 

 

 

 

 

Baudrate
Zur Erzeugung des Taktes sind sowohl im Sender als auch im Empfänger je ein Taktgenerator vorhanden. Diese schwingen mit einer maximalen Grundfrequenz, die durch den Wert eines nachladbaren Zählers geteilt werden kann. So entstehen Frequenzen die kleiner sind, als die Grundfrequenz. Mit jedem Takt dieser verminderten Frequenz werden die Bits des Frames auf die Datenleitung ausgegeben. Wieviele Bits das pro Sekunde sind, wird durch die Baudrate angegeben. Als Baudraten haben sich Vielfache von 60Hz =>60Baud=60 Bits/s und 110Hz =>110 Baud=110Bit/s ergeben. Als typische Baudraten gelten ..

 

 

 

 

 

Baud = Bits/s

Baud = Bits/s

Baud = Bits/s

Baud = Bits/s

 

 

110

1.200

19.200

76.800

 

 

150

2.400

28.800

115.200

 

 

300

4.800

38.400

 

 

 

600

9.600

57.600

 

 

 

 

 

 

Beispiel:

 

 

Im Bild dargestellt, ist die Übertragung von zwei Bytes bei odd Parity. Es ist zu beachten, positive Spannungen entsprechen einer log 0, und die Daten werden mit dem 'LSB first' gesendet.

 

 

 

 

 

 

 

Das Startbit
Das Startbit wird von dem UART automatisch generiert und muss nicht vom Benutzer gesetzt werden. Mit ihm synchronisieren sich die Taktgeneratoren des Senders und des Empfängers. Es wird auf der TxD-Leitung ausgegeben. Da diese im Ruhezustand auf 1 (-Us) liegt, wird das Startbit durch eine log 0 repräsentiert, oder durch eine Spannung (+Us)

 

 

 

 

 

Die Datenbits
Dem Startbit folgen 5 bis 8 Datenbits, die zusammen die Informationseinheit bilden. Welche tatsächliche Anzahl von Datenbits bei einer gegebenen Übertragung benutzt werden soll, muss der Benutzer sowohl am Sender als auch am Empfänger einstellen. Während einer Übertragung ist ein Wechsel der Anzahl zu übertragender Datenbits nicht möglich. Diese Einstellung, wie auch die Folgenden gelten bis zum Ende der gesamten Datenübertragung. Das erste gesendete Datenbit ist das niedrigste Bit (Bit 0) der Informationseinheit.

 

 

 

 

 

Das Paritätsbit
Das Paritybit dient der Kontrolle ob die Übertragung der Daten fehlerfrei erfolgte. Es gibt die Möglichkeit der odd (ungeraden Parität), even (geraden Parität) sowie den Paritäten Mark und Space. Natürlich kann die Paritätskontrolle auch ganz abgeschaltet werden, was dann als 'no Parity' angesprochen wird.
Bei den Paritäten odd und even werden die 1 lautenden Bits der Daten durch das Paritätsbit zu einer ungeraden bzw. geraden Anzahl ergänzt.

Die odd Parity bei dem mit 8 Bits gesendeten ASCII-Zeichen 'G' muss also 1 lauten, denn der ASCII-Code für 'G' ist 0100 0111 und enthält eine gerade Anzahl von Einsen. Das Paritybit 1 macht die Anzahl ungerade, woraus insgesamt 5 Bits zu 1 folgen.
Bei der Mark-Parität ist das Paritätsbit immer auf 1, bei der Space-Parität immer auf 0 gesetzt. No Parity bedeutet, dass kein Paritätsbit benutzt werden soll, womit das Paritybit ganz entfällt.

 

 

 

 

 

Flowcontrol (Übertragungshandshake)
Mit dem Übertragungshandshake kann der Empfänger den Sender starten und anhalten. Dies ist notwendig, wenn das Senden der Daten schneller erfolgt, wie sie der Empfänger verarbeitet kann. In diesem Fall würde der Sender bereits das nächste Frame senden, obwohl der Empfänger noch mit der Aufbereitung der zuvor empfangenen Daten beschäftigt ist und nicht auf seine serielle Schnittstelle, bzw deren Empfangsbuffer achtet.
Grundsätzlich gibt es zwei Methoden diesem Problem zu entgehen ..

.. XON/XOFF
Die XON/XOFF-Methode basiert auf der Programmierung, ist also ein Softwarehandshake.
Hier sendet der Empfänger das Zeichen XOFF (Ctrl-S = 0x13), wenn es ihm zu schnell geht, worauf der Sender seine Übertragung einstellen sollte. Ist der Empfänger wieder bereit, so muss er XON (Ctrl-Q = 0x11) senden. Dieses Zeichen bewegt den Sender dazu, wieder Daten zu übertragen.

.. RTS/CTS
Die am häufigsten benutzte Methode ist der RTS/CTS-Hardwarehandshake. Er basiert auf den Signalen RTS (Request to Send) und CTS (Clear to Send). Will ein Sender Daten ausgeben, setzt er sein RTS-Signal. Er signalisiert damit dem Empfänger, Achtung, ich möchte Daten senden. Dieser erkennt das an seinem CTS-Eingang. Nun wartet der Sender, bis er an seinem eigenen Eingang CTS eine Antwort vom Empfänger erhält. Kann dieser Daten empfangen aktiviert er sein RTS-Signal, was beim Sender als CTS-Signal ankommt. Fällt dieses Signal in seinen inaktiven Zustand, so stellt der Sender seine Datenübertragung ein.

Dieses Verfahren funktioniert natürlich auch dann, wenn der Empfänger zum Sender wird, .. und der Sender zum Empfänger. Die RS232- Schnittstelle ist ja vollduplexfähig, was bedeutet, dass gleichzeitig Signale gesendet und auf einem zweiten Kanal empfangen werden können. Im obigen Bild würden dann der zweite (graue) Satz der RTS/CTS-Signale das Handshaking steuern.

 

 

 

 

 

Leitungslängen
Nach Erfahrungswerten der Fa. Texas Instruments sind bei der RS232, abhängig von der Übertragungsfrequenz, folgende Leitungslängen bei Standardkabeln ( ~17pF/m) möglich.
2400Bd - ~900m, 4800Bd ~300m, 9600Bd ~152m, 19200Bd ~15m, 115200Bd ~2m

 

 

 

 

 

-------------------------

 

 

 

 

 

Prüfsummen mod 256
Bei der seriellen Übertragung ist es manchmal üblich, einem Datenblock aus mehreren Bytes eine Prüfsumme anzuhängen. Mit dieser soll sichergestellt werden, dass alle Daten ohne Fehler übertragen wurden. Das Verfahren zur mod 256 Prüfsumme funktioniert wie folgt. ..

Alle gesendeten Datenbytes (ohne das Prüfsummenbyte) werden addiert, dann wird durch 256 geteilt. Der Rest dieser Rechnung wird als Prüfsumme gesendet. Da 256 (100h) gerade den Überlauf eines Bytes zu einem Wort darstellt (01 00), kann die Prüfsumme ohne aufwendige Rechenaktionen ermittelt werden, wenn die Summe in einem Byte erstellt wird und die jeweiligen Überläufe zum Wort ignoriert werden. Am Ende der gesamten Addition enthält das Summenbyte bereits den geforderten Rest und kann als Prüfsumme gesendet werden.

.. Beispiel
gesendete Datenfolge:   “Pruefsumme“
hexadezimal                  50+72+75+65+66+73+75+6D+6D+65 = 0429
Prüfsumme mod 256     ist 29,          denn 0429h : 100h = 4h Rest 29h

 

 

 

 

 
  UART Bausteine Übersicht
 
 
                                                Aufgabe 1
 
 
                                                Aufgabe 2
 
 
 
 
www..de