UART

Mikrocomputertechnik Thema: Serielle Schnittstelle / UART Parallele vs. serielle Datenübertragung Parallele Datenübertragung Mehrere Bits eines Dat...
Author: Michaela Brauer
21 downloads 1 Views 402KB Size
Mikrocomputertechnik Thema:

Serielle Schnittstelle / UART

Parallele vs. serielle Datenübertragung Parallele Datenübertragung Mehrere Bits eines Datums werden zeitgleich mittels mehrerer Datenleitungen übertragen. Beispiel: 8-Bit breite parallele Datenübertragung Sender MSB

LSB

Folie 2

Empfänger

0

0 0

0

0 0

1

1 1

0

0 0

1

1 1

1

1 1

0

0 0

1

1 1

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

MSB

LSB

Parallele vs. serielle Datenübertragung Serielle Datenübertragung Einzelne Teile eines Datums werden zeitlich nacheinander übertragen. Beispiel: Bit-weise Datenübertragung (LSB first)

Sender MSB

LSB

Folie 3

0 0 1 0 1 1 0 1

Empfänger zeitlich nacheinander (seriell) MSB

0

LSB

0

1

0

1

1

0

1

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

0 0 1 0 1 1 0 1

MSB

LSB

Allgemeines zur seriellen Datenübertragung Für die serielle Schnittstellen werden auch häufig die folgenden Abkürzungen verwendet: UART: Universal Asynchronous Receiver Transmitter USART: Universal Synchronous/Asynchronous Receiver Transmitter Bei seriellen Datenübertragungen werden Teile eines Datums zeitlich nacheinander übertragen. Am häufigsten Bit-weise Übertragung Masseleitung

Eine Daten- und eine

TTL-Pegel: logische „1“ entspricht 5V, logische „0“ entspricht 0V Die Daten werden LSB first oder MSB first gesendet (von der Hardware abhängig und nicht immer frei wählbar). Bidirektionale Kommunikation (Full-Duplex) möglich. Voraussetzungen: µC benötigt Send- sowie Empfangseinheit Getrennte Datenleitungen für Empfang (Rx) und Versand (Tx) Folie 4

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Full-Duplex Kommunikation mit 2 Einheiten

Folie 5

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Protokoll der seriellen Schnittstelle Nutzdaten werden häufig Byte-weise übertragen (8 Nutzbits) Zur Synchronisation der Datenübertragung wird ein Start Bit sowie ein oder mehrere Stop Bits benötig Übertragung beginnt mit Startbit, welches der logischen „0“ entspricht Übertragung endet mit Stoppbit, welches der logischen „1“ entspricht Empfänger erkennt Start der Übertragung somit an fallender Flanke Folgendes muss im Vorfeld der Übertragung bekannt sein: Schrittgeschwindigkeit (Baudrate) Anzahl Datenbytes pro Zeichen Parität Anzahl Stop Bits

Folie 6

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Betriebsmodes der seriellen Schnittstelle Die UART des XC888 kann in vier verschiedenen Modes betrieben werden Die Auswahl des Mode erfolgt über die Bits SM0 und SM1 im Register SCON Betriebsmodus

Folie 7

Baudrate

Bit SM0

Bit SM1

Mode 0: 8-bit shift register fPCLK/2

0

0

Mode 1: 8-bit shift UART

variabel

0

1

Mode 2: 9-bit shift UART

fPCLK/64 or fPCLK/32

1

0

Mode 3: 9-bit shift UART

variabel

1

1

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Einstellen der Baudrate Wie bei Timer wird auch bei UART Zählregister verwendet, welches bei Unterlauf Zeittakt für Schnittstelle erzeugt Zählregister kann durch folgende Quellen dekrementiert werden: fPCLK (in allen Betriebsmodes) Timer 1 (in Mode 1 und Mode 2) Baudraten-Generator (Mode 1 und Mode 2) In Vorlesung und Labor verwenden wir ausschließlich den Baudraten-Generator zur Erzeugung der Baudrate

Folie 8

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Der Baudraten-Generator

Folie 9

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Der Baudraten-Generator fPCLK dient als Eingang des Generators fBR bezeichnet Frequenz mit welcher UART betrieben wird 8-Bit breites Zählregister wird heruntergezählt und erzeugt bei Unterlauf Zeittakt Unterschiedliche Datenraten werden durch unterschiedliche Reload-Werte realisiert (vgl. Timer) Der Fractional Divider ist nicht Teil der Vorlesung/des Labors Besonderheit: Aus Synchronisationsgründen kann lediglich bei jeder 16. Baudraten-Clock ein Takt für die UART erzeugt werden Somit ist die „reale“ serielle Schnittstelle 16 Mal langsamer als fBR

Folie 10

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Der Baudraten-Generator Die Baudrate berechnet sich wie folgt:

baudrate =

f PCLK 16 ∗ 2 BRPRE ∗ ( BR _ VALUE + 1)

where 2 BRPRE ∗ ( BR _ VALUE + 1) > 1

Formel umgestellt, um Reload-Wert zu berechnen:

BR _ VALUE =

Folie 11

f PCLK −1 BRPRE 16 ∗ 2 ∗ baudrate

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Konfiguration Sende- und Empfangspins Auswahl des Sende- und Empfangspins erfolgt über ALTSELRegister der Ports Empfangsinformationen können von unterschiedlichen Quellen (logischen Kanälen) kommen: RXD_0, RXD_1 und RXD_2 Der entsprechende logische Kanal muss über das Register MODPISEL enabled werden

Folie 12

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Versenden von Nachrichten (Polling) Das Versenden einer Nachricht erfolgt durch Beschreiben des Senderegisters SBUF Der Inhalt von SBUF wird dann entsprechend der Konfiguration (Datenrate, Mode, Start- und Stoppbit, …) versendet Durch Pollen des Transmit-Interrupt-Flag TI kann überprüft werden, ob der Versand abgeschlossen wurde

Folie 13

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

Empfangen von Nachrichten (Polling) Eine Nachricht wird nur Empfangen, wenn das Receiver-EnableBit REN im Register SCON gesetzt ist Wurde eine Nachricht komplett empfangen wird das ReceiveInterrupt-Flag RI gesetzt Dieses Flag kann somit für ein Polling verwendet werden Die empfangenen Nutzdaten können aus dem Register SBUF abgeholt werden Besonderheit: Das Empfangsregister und das Senderegister tragen den selben Namen, stellen jedoch physikalisch getrennte Register dar.

Folie 14

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]

UART mit Interrupt-Betrieb Interrupt der seriellen Schnittstelle muss „scharfgeschaltet“ werden Das Setzen der Flags TI bzw. RI führt zum Sprung zum Interrupt-Vektor Die Flags TI und RI werden nicht von der Hardware zurückgesetzt (weder beim Polling noch beim Interrupt-Betrieb) Hintergrund: Über die Flags kann der Entwickler erkennen, welches Ereignis den Interrupt ausgelöst hat Die Flags müssen in der ISR bzw. nach dem Polling durch die Software zurückgesetzt werden!

Folie 15

30.03.2012, Dipl.-Ing.(FH) Ralf Hanke, E-Mail: [email protected]