Serielle Schnittstelle Baudrate einstellbar Synchrone und asnychrone Schnittstelle Kanäle P3.0 RxD P3.1 TxD Puffer der seriellen Schnittstelle SBUF Adresse (99h) - Empfangs und Sendepuffer (1Byte) - Sendebetrieb starte automatisch, wenn in das register ein Wert geschrieben wird - Bei Empfangsbetrieb liegt Zeichen hier Programmieren der seriellen Schnittstelle - 4 Bertriebsarten Mode Art Bit Baudrate RxD TxD Takt 0 Synchron 8 f osz /12 P3.0 P3.0 P3.1 1 Asynchron 10 einstellbar P3.0 P3.1 2 Asynchron 11 f osz /64 oder P3.0 P3.1 f osz /32 3 Asynchron 11 einstellbar P3.0 P3.1 (Adresse 98h, bitadressierbar) - SFR Serial Control - Einstell- und Statusregister der ser. Schnittstelle Bits SM0 SM1 SM2 REN TB8 RB8 TI RI 1
Bit Funktion SM0 SM1 Mode-Wahl der seriellen Schnittstelle 0 0 Mode 0 synchroner Betrieb, feste baud-rate (Daten werden über die RxD-Leitung P3.0 übertragen. Die TxD-Leitung P3.1 ist das Shift-Clock-Signal 0 1 Mode 1 8-Bit UART, variable Baud-Rate 1 0 Mode 2 9-Bit UART, feste Baud-Rate 1 1 Mode 3 9-Bit UART, variable Baud-Rate SM2 1 für Mode 2 oder Mode 3 RI nicht aktiv, wenn das 9. Datenbit (RB8) den Wert 0 hat 1 für Mode 1 RI nicht aktiv, wenn kein gültiges Stopbit empfangen worden ist. REN TB8 0 0 1 für Mode 0 Schaltet den seriellen Empfang ein (per Software) kein serieller Empfang Serieller Empfang eingeschaltet Neuntes Sendebit für Mode 2 und 3. Kann bei Bedarf durch die Software gesetzt werden RB8 Neuntes Sendebit für Mode 2 und 3. In Mode 1, mit SM2 = 0 wird hier das Stop-Bit eingetragen TI Transmitter Interrupt Wird durch die Hardware nach Senden eines Zeichens über die ser. Schnittstelle gesetzt. Muß durch Software gelöscht werden RI Receiver Interrupt Wird durch die Hardware nach Emfang eines Zeichens über die ser. Schnittstelle gesetzt. Muß durch Software gelöscht werden Einstellen der Baudrate Mode 0: Baudrate fest bei f osz =12 MHz B 0 =12 MBd. Mode 2: Baudrate kann durch das Kontrollbit SMOD im Register PCON eingestellt werden PCON (Adresse 87h, nicht bitadressierbar) Bits SMOD PDS IDLS - GF1 GF0 PDE IDLE PCON Bit SMOD Funktion Wenn SMOD=1, dann wird im Modus 1, 2, 3 die Baudrate verdoppelt 2
SMOD = 0 SMOD = 1 B 2 =f osz / 64 MHz B 2 =f osz / 32 MHz Wenn f osz = 12 MHz : B 2 = 187,5 kbd bzw. 375 kbd. Mode 1 und Mode 3 mit Baudratengenerator - Im Mode 1 und 3 kann Baudratengenerator die Übertragungsgeschwindigkeit steuern - Kontrollbit DB im SFR ADCON Bits BD ADEX BSY ADM MX2 MX1 MX0 ADCON Bit BD=1 BD=0 Funktion Einschalten des Baudratengenerators Ausschalten des Baudratengenerators Baudratengenerator kann durch SMOD beeinflußt werden SMOD = 0 B 2 =f 13 / 2500 SMOD =1 B 2 =f 13 / 1250 Bei f osz = 12 MHz : B 13 = 9600 Bd bzw. 4800 Bd Mode 1 und Mode 3 mit Timer1 - erzeugen der Baudrate mit Hilfe des Timers 1 - Baudratengenerator muß ausgeschaltet sein - BD =0 Einige Beispiele: Bit ist nicht bitadressierbar Initialisieren der Schnittstelle mit 9600, 8, N, 1. Generieren der Baudrate mit dem Baudraten- Generator SERINI: SETB BD BAUDRATEN-GENERATOR EINSCHALTEN ORL PCON,#10000000B SMOD = 1 MOV, #01011010B MODUS 1, EMPFÄNGER AN. TB8 UND TI INITIALIEREN Ausgabe eines Zeichens über die serielle Schnittstelle PUT_CHAR: GIBT EIN ASCII-ZEICHEN MIT DEM CODE VON A ÜBER DIE SERIELLE SCHNITTSTELLE AUS IN: A : VERARBEITUNG : - OUT: SERIELLE SCHNITTSTELLE JNB TI,$ WARTEN BIS TRANSMITTER FREI. CLR TI TI FÜR NÄCHSTES ZEICHEN LÖSCHEN 3
MOV SBUF, A RET Warten auf ein Zeichen an der seriellen Schnittstelle IN_CHAR: WARTET AUF EIN ASCII-ZEICHEN AN DER SERIELLEN SCHNITTSTELLE UND LIEST ES EIN IN: SERIELLE SCHNITTSTELLE VERARBEITUNG : - OUT: A JNB RI,$ WARTEN BIS RECEIVER FREI. CLR RI RI FÜR NÄCHSTES ZEICHEN LÖSCHEN MOV A, SBUF ZEICHEN IN A EINLESEN ANL A,#7FH BIT 7 AUSBLENDEN RET Einmaliges Abfragen der seriellen Schnittstelle IN_CON: ÜBERPRÜFT DIE SERIELLE SCHNITTSTELLE AUF EIN ANLIEGENDES ASCII-ZEICHEN UND LIEST ES GEGEBENENFALLS EIN IN: SERIELLE SCHNITTSTELLE VERARBEITUNG : - OUT: A JNB RI,RETI WENN KEIN ZEICHEN AN DER SER. SCHNITTSTELLE VORLIEGT, DANN SPRINGE ZU RETI CLR RI RI FÜR NÄCHSTES ZEICHEN LÖSCHEN MOV A, SBUF ZEICHEN IN A EINLESEN ANL A,#7FH BIT 7 AUSBLENDEN RET: RET 4
Ausgabe einer ASCII-Zeichenkette aus dem Codespeicher PUT_STRING: GIBT EINE ASCII-ZEICHENKETTE AUS DEM CODE-SPEICHER ÜBER DIE SERIELLE SCHNITTSTELLE AUS. DAS ENDE MUß MIT EINEM 0-BYTE GEKENNZEICHNET SEIN. IN: DPTR (ANFANGSADR. STRING, STRING-CODE : VERARBEITUNG : A OUT: SERIELLE SCHNITTSTELLE CLR A MOVC A,@A+DPTR ASCII-ZEICHEN LADEN. JZ EXIT WENN ASCII-CODE=0, DANN BEENDEN CALL PUT_CHAR INC DPTR SJMP PUT_STRING EXIT: RET ASCII-ZEICHEN AUSGEBEN NÄCHSTES ZEICHEN Ausgabe einer ASCII-Zeichenkette aus dem Datenspeicher PUT_XSTRING: GIBT EINE ASCII-ZEICHENKETTE AUS DEM DATEN-SPEICHER ÜBER DIE SERIELLE SCHNITTSTELLE AUS. DAS ENDE MUß MIT EINEM 0-BYTE GEKENNZEICHNET SEIN. IN: DPTR (ANFANGSADR. STRING, STRING-DATEN : VERARBEITUNG : A OUT: SERIELLE SCHNITTSTELLE MOVX A,@DPTR ASCII-ZEICHEN LADEN. JZ EXIT WENN ASCII-CODE=0, DANN BEENDEN CALL PUT_CHAR ASCII-ZEICHEN AUSGEBEN INC DPTR NÄCHSTES ZEICHEN ADEIEREN SJMP PUT_XSTRING EXIT: RET Beachte: Unterschied 5
Wert des Akku im Dezimalsystem als dreistellige ASCII-Folge z.b A=18h=024 bzw. A=FFH = 255 BYTE_OUT: GIBT DEN INHALT VON A ALS ASCII-ZEICHENFOLGE ALS DEZIMALZAHL ÜBER DIE SER. SCHNITTSTELLE AUS IN: A : VERARBEITUNG : A, B OUT: SERIELLE SCHNITTSTELLE SP6: MOV B,#100 DIV AB A=A/100 (REST B) ADD A,#30H CALL PUT_CHAR 100-ER AUSGEBEN MOV A,B MOV B,#10 DIV AB ADD A,#30H CALL PUT_CHAR MOV A,B ADD A,#30H CALL PUT_CHAR B=B/10 10-ER AUSGEBEN 1-ER AUSGEBEN RET Einlesen einer Zahl im ASCII-Code und Umwandlung in Binär-Code z.b 7 Ausgabe: 00000111b IN_DEZ: IN: SERIELLE SCHNITTSTELLE : VERARBEITUNG : - OUT: A ACALL IN_CHAR CLR C SUBB A,#30H RET EINLESEN ÜBER SERIELLE SCHNITTSTELLE AUFRUF DES UP IN_CHAR DEZIMAL BINÄR Die Modi des 6
Mode 0 TI Zeichen gesendet Sendespeicher leer Sendelogik Daten Takt Senden 0 1 2 3 4 5 6 7 Oszillator/12 Takt SBUF 8 Bit Sendespeicher SBUF 8 Bit Empfangsspeicher Receive/Transmit Pin 3.0 Empfangslogik Takt Pin 3.1 RI Zeichen empfangen Empfangsspeicher voll REN Daten Takt Empfangen 0 1 2 3 4 5 6 7 Daten einlesen Abbildung 1: Mode0 Mode 1 TI Zeichen gesendet Sendespeicher leer Sendelogik TXCLOCK von Timer /16 Sendetakt SBUF 8 Bit Sendespeicher Empfangsschieberegister TxD Pin 3.1 RxD Pin 3.0 RXCLOCK von Timer /16 Empfangstakt Scan-Takt RI SBUF 8 Bit Empfangsspeicher Empfangslogik Zeichen empfangen Empfangsspeicher voll REN scan Start-Bit 0 1 2 3 4 5 6 7 Stopp-Bit Abbildung 2: Mode1 7
Mode 2 Oszillator/2 PCON SMOD TI Zeichen gesendet Sendespeicher leer Sendelogik /2 0 /16 Sendetakt TB 8 SBUF 8 Bit Sendespeicher TxD Pin 3.1 1 /16 Empfangstakt Scan-Takt RB 8 Empfansschieberegister SBUF 8 Bit Empfangsspeicher Empfangslogik RxD Pin 3.0 RI & SM2 >= 1 Zeichen empfangen Empfangsspeicher voll Start-Bit scan REN 0 1 2 3 4 5 6 7 xb8 Stopp-Bit Abbildung 3: Mode2 8
Mode 3 TI Zeichen gesendet Sendespeicher leer Sendelogik TXCLOCK von Timer /16 Sendetakt TB 8 SBUF 8 Bit Sendespeicher TxD Pin 3.1 RXCLOCK von Timer /16 Empfangstakt RB 8 Empfansschieberegister SBUF 8 Bit Empfangsspeicher RxD Pin 3.0 Scan-Takt Empfangslogik RI & SM2 >= 1 Zeichen empfangen Empfangsspeicher voll Start-Bit scan REN 0 1 2 3 4 5 6 7 xb8 Stopp-Bit Abbildung 4: Mode3 9
Master-Slave-Betrieb beim Start Adresse 02 Stopp TxD RxD TB8 Alle Slaves warten auf eine Adresse TxD RxD TxD RxD TxD RxD TxD RxD TxD RxD SM2 = 1 SM2 = 1 SM2 = 1 SM2 = 1 Master Slave 01 Slave 02 Slave 03 Slave 04 Start Daten Stopp TB8 Master und Slave 02 tauschen Daten aus. Die anderen Slaves reagieren nicht. TxD RxD TxD RxD TxD RxD TxD RxD TxD RxD SM2 = 1 SM2 = 0 SM2 = 1 SM2 = 1 Master Slave 01 Slave 02 Slave 03 Slave 04 Abbildung 5: Master-Slave-Betrieb 10
Serielle Schnittstellen. Klassifikation große Verbreitung durch Zunahme der Vernetzung in Anlagen der Maschinen- und Automatisierungstechnik großflächige Verbindungen Verbindungen innerhalb von Geräten nur wenige cm relativ geringe Intelligenz bestehen aus Register und zusätzlicher Logik z.b. Einsatz in Automobilindustrie und Unterhaltungsindustrie Aus den Anforderungen ergeben sich zwei Schnittstellenarten: 1. Kommunikation: Netzwerktechnik umfangreicher Datenaustaustausch zwischen Geräten unterschiedlicher Hersteller und Art standardisierter Datenaustausch Einsatz spezieller Kommunikationscontroller Diese übernehmen komplizierte Übertragungsprotokolle Zugriffssteuerungen: Master-Slave, Client-Server Sicherungsverfahren liefern an das übergeordnete System nur die reinen Nutzdaten Netzwerktechnik, Feldbusse, Sensor-/Aktorbusse siehe VL PRT und NPA 2. hardwarenahe Kommunikation: serielle Peripherieschnittstelle einfacher starre Protokolle Das Serial Communication Interface SCI Standard der seriellen DÜ 2 Arten (abhängig von der Art der Synchronisation) Asynchron, Synchron PROBLEMo nummero uno der serielen DÜ Zuordnung der Zeichen zu den Pegeln auf der Übertragungsleitung vom Sender zum Empfänger CPU lädt Zeichen parallel in ein Sendeschieberegister Übertragung über die Datenleitung zum Empfänger bitseriell, d.h. in einzelnen Takten bitweise Empfänger: Aus seriellem Datenstrom wird das Empfangsschieberegister gefüllt. Datenstrom: Pegel auf der Leitung Schieben vom Sender zum Empfänger mit gleicher Taktfrequenz und gleicher Phase Taktfrequenz: Wird zwischen Sender und Empfänger vereinbart i.d.r. parametrierbar Problem: Erkennung des Anfangs eines Zeichens Asynchronmode Synchronmode 11
Asynchronmode Eingangssignal interner Abtasttakt Flanke erkannt 0-Pegel erkannt Flanke erkannt 1-Pegel erkannt Abbildung 6: Bitabtastung Synchronmode BIA BINr BIK DBI0 DBI1 DBI2 DBI3 DBIn BIP BIE BIA BINr BIK Blockanfang Blocknummer Blockkennzeichen DBI BIP BIE Datenblock CRC-Blockprüfsumme Blockende Abbildung 7: Datenpaket beim synchronen Datenverkehr Isosynchronmode Falling Edge Indicates Start Bit S TXD RXD S D0 D1 D2 D3 D4 D5 EP S1 S2 Abbildung 8: Isosynchrones Übertragungsverfahren 12
Bit Out SCI TXD Bit Out Bit Out Bit Out RXD Bit In Bit In Abbildung 9: Isosynchrones Übertragungsverfahren im Detail Serieller I/O-Mode S aktiv, Daten werden empfangen oder gesendet Internally Generated S TXD RXD D0 D1 D2 D3 D4 S0 D0 D1 D2 D3 D4 S0 S und TXD interaktiv und high Abbildung 10: Serieller I/O-Mode Das Serial Peripheral Interface synchrones Übertragungsverfahren wird von HW realisiert Ziel: Verbinden von Einzel-BE, so daß deren Funktionen von Umfang her erweitert werden optimale Zusammenarbeit unterschiedlicher Baugruppen eines Systems Bsp: Autoindustrie Funktionen von einzelnen Controllern werden vor Ort gelöst Busstrukturen mit 2 Leitungsverbindungen + synchronem Übertragungsverfahren Bsp. Audio- und Viedeoindustrie, Steuer und Regelungstechnik (I 2 C) Def.:SPI-Modul ist ein High-Speed Synchrones Interface, das einen Bitstrom mit programmierbarer Länge und Übertragungsrate absenden und empfangen kann. 13
Anwendung: zwischen µc und externem Peripheriemodulen oder anderen µc z.b Verbindungen zwischen I/O-Erweiterungs-BE, Displaytreibern, D/A und A/D-Wandler Mögliche Ziele: steigende Anzahl digitaler Eingänge Realisierung spezieller Funktionen der angeschlossene Geräte, die normalerweise sonst nicht sinnvoll mit µc verbunden werden können Interface zur Multiprozessorkopplung SPI-Prinzip Parallel Einschreiben Taktgenerator Parallel Einschreiben 7 0 0 7 SR1 SR2 Parallel Auslesen Parallel Auslesen Abbildung 11: Prinzip SPI-Schnittstelle Vgl mit Asynchron SPI-Eigenschaften maximal mögliche Hardwareleistung CPU meist bremsend theoretisch 1000kBit/sec bei 8MHz Entfernung RS232 (-3V bis 15V bzw. +3V bis 15V) RS485 (mehrere Teilnehmer) LWL Vollduplex bei SPI 3 Signale notwendig : Sendeleitung, Empfangsleitung, Taktleitung + Zeichenübertragung ist einfacher einer der beiden Teilnehmer muß Taktsignal liefern MASTER-SLAVE MASTER liefert Takt: bestimmt was und mit welcher geschwindigkeit gesendet wird SLAVE kann Info nur dann absenden, wenn MASTER Takt anlegt 14
MASTER liefert zusätzliche Informationen bei Duplex-Betrieb Beachte: bei asynchronem Interface ist intelligenter MASTER 7 0 7 0 passives Eingabe-Modul SPI Taktgenerator 7 0 passives Ausgabe-Modul Abbildung 12: Master-Eingabe/ Ausgabemodul-Kopplung Master SLAVE 1 SLAVE 2 SLAVE 3 8-Bit-SR 8-Bit-SR 8-Bit-SR 8-Bit-SR Takt Controller Anzeige 1 Anzeige 2 Anzeige 3 Abbildung 13: Master-Slave-Betrieb 15
Datenpaket für Teilnehmer A Blockpause Datenpaket für Teilnehmer B ADR A DAT 1 DAT n LDAT ADR B DAT 1 DAT n LDAT ADR DAT LDAT Adresse Daten letztes Zeichen Abbildung 14: Idle-Line-Verfahren Datenpaket für Teilnehmer A Datenpaket für Teilnehmer B ADR A DAT 1 DAT n LDAT ADR B DAT 1 DAT n LDAT ADR DAT LDAT Adresse Daten letztes Zeichen Kennzeichenbit Adresse Kennzeichenbit Daten Abbildung 15: Adreß-Bit-Verfahren Master-Slave-Leitung S/E S MASTER Slave-Master-Leitung Takt E1 E2 Abbildung 16: SPI-Kopplung im 3-Leiter Bus 16
MASTER Slave 1 Slave 2 MI MO MI MO MI MO SCK / +5V SCK / SCK / PB0 PB1 Abbildung 17: Parallele Master-Slave-Kopplung über SPI Master Slave Slave Slave Slave Abbildung 18: Serielle Master-Slave-Kopplung über SPI 17
Master SR Slave Slave Slave Slave SR SR SR SR SR Schieberegister Abbildung 19: Serielle Buskopplung mit Multimasterfunktion Master Slave Slave Slave Slave (Adresse 1) (Adresse 2) (Adresse 255) (Adresse 256) Abbildung 20: Master-Slave-Kopplung mit Adreßauswahl 18