kramann.info
© Guido Kramann

Login: Passwort:










7.3 RS232

Wie sieht das spezielle bei PC und ATmega32 implementierte Busprotokoll für die UART aus?

  • RS232 verwendet den UART mit einem speziellen Protokoll.
  • Sie ist gebräuchlich bei der Kommunikation zwischen PCs und einer Menge an Peripheriegeräten (z.B. GPS, Oszilloskop, etc.)
  • Die RS232 stammt aus den 60er Jahren und gilt allgemein als etwas veraltet.
  • Sie erfreut sich dessen ungeachtet aber einer weiten Verbreitung und verdient es hier besprochen und getestet zu werden.
  • Wir werden sie sowohl dazu verwenden, mehrere Mikrocontroller ATmega32 miteinannder zu verbinden, als auch dazu einen Mikrocontroller mit einem PC zu verbinden.
  • Die UART mit RS232-Protokoll zählt zu der in den ATmega32 direkt integrierten Peripherie.
  • D.h. man kann nach Aktivierung dieser Schnittstelle in ein bestimmtes dafür vorgesehenes Register parallel ein Byte hineinschreiben und der Baustein sorgt dann dafür, dass diese 8 Bit seriell über diese Schnittstelle gesendet werden.
  • Dann kann man die nächsten 8 Bit in das Register schreiben usw.

Hinweis

  • Neben TxD und RxD existieren bei der seriellen Schnittstelle am PC weitere Leitungen, die z.B. die Funktionstüchtigkeit eines Gerätes anzeigen u.ä.
  • Diese Leitungen werden hier nicht behandelt.
  • Anstatt ein echtes Bussystem mit der RS232 aufzubauen, werden wir hier nur eine Verbindung zweier Geräte mit gekreuzten Leitungen aufbauen.
  • Verbindungen von mehreren Geräten werden wir zu einem späteren Zeitpunkt am Beispiel der SPI-Schnittstelle kennenlernen.
Null-Modem-Kabel

Bild 7.3-1: Null-Modem-Kabel für RS232 zwischen Mikrocontroller und PC.

RS232 - Protokoll

  • Die Übertragung der Daten erfolgt Byteweise - d.h. 8 Bit werden direkt als eine Folge von Low und High-Pegeln über den TxD-Kanal geschickt.
  • Beispielsweise sieht die Übertragung des Bytes 0b11010001 seriell aufgelöst so aus:
Null-Modem-Kabel

Bild 7.3-2: Serielle Übertragung von 8 Bit mittels RS232.

  • Man beachte, dass zuerst Bit0 (unbedeutenstes / leastr significant Bit) gesendet wird und am Ende Bit 7 (bedeutenstes / most significant Bit).
  • Beim PC liegt der Low-Pegel bei ungefähr -10Volt gegenüber GND und der High-Pegel bei +10Volt.
  • Dagegen liefert der ATmega32 auf Pin 15 (TxD) nur einen TTL-Pegel (5Volt) und kann auch nur auf Pin 14 (RxD) mit TTL-Pegeln umgehen.
  • Um diese Differenz auszugleichen, werden wir einen Adapter-IC benutzen, den MAX232, der intern aus 5Volt und 0-Volt-Pegeln +/-10Volt-Pegel erzeugen kann.
  • Damit diese Art der Datenübertragung auch wirklich funktioniert, müssen Sender und Empfänger zwischen dem Senden eines Bytes jedesmal neu synchronisiert werden.
  • Da diese Synchronisation nicht über eine gesonderte Taktleitung erfolgt, sondern aufgrund der übertragenen Pegel, wird diese Schnittstelle dennoch als "asynchron" bezeichnet.
  • Zwischen dem Senden zweier Bytes gibt es eine Pause.
  • In dieser Pause wird der Spannungspegel auf High gesetzt.
  • Zur Synchronisation des Empfängers mit dem Sender, wird dann vor dem Senden des ersten Bits der Spannungspegel erst einmal auf Low gesetzt.
  • Durch diese Konvention kann sich der Empfänger mit dem Sender synchronisieren.
  • Die Pause wird als "Stop-Bits" definiert und kann verschieden lang gewählt werden. Die Mindestlänge wird mit der Angabe eingestellt, ob ein oder zwei Stopbits verwendet werden.
  • Die Low-Phase zu Beginn wird als Startbit bezeichnet.
  • Der gesamte Ablauf beim Übertragen eines Bytes sieht deshalb z.B. folgendermaßen aus:
Mit Start-Bit

Bild 7.3-3: Vollständiger Ablauf bei Übertragung von 8 Bit mit einem Start und einem Stop-Bit via RS232.