zum Directory-modus

PIC-Controller-Schnittstellen

SSP-Modul im SPI-Modus

Das SSP (Synchronous Serial Port)-Modul unterstützt primär zwei Protokolle: den SPI-Modus und den I²C-Modus.

Im Zusammenhang mit dieser Schnittstelle werden 5 Spezialregister verwendet: Das Datenpufferregister SSPBUF, das Statusregister SSPSTAT, das Controlregister SSPCON, das Sende-/Empfangsschieberegister SSPSR sowie das Adressregister SSPADD, das nur im I²C-Modus eine Bedeutung hat.

SPI-Modus

Der SPI-Modus (Serial Peripheral Interface) wird am häufigsten bei Übertragungen zu A/D bzw. D/A-Wandlern oder auch mehreren Prozessoren untereinander genutzt. Das SPI-Protokoll (TM von Motorola) besteht aus einfachem Lesen und Schreiben unter dem Taktstock des Clocksignals. Dieser Modus kann 8-Bit Daten synchron empfangen und senden. Im Register SSPCON werden vorab die Optionen für dieses Register eingestellt. Im SPI-Modus muss der Wert 2Xh oder 3Xh in diesem Register stehen. Beim Wert 2Xh wird gesendet bei Clock high und empfangen im Zustand Clock low, beim Wert 3Xh empfangen bei Clock high und gesendet bei Clock low. Mit dem Wert X kann die Clockfrequenz eingestellt werden. Ist X=0, so ist die Clockfrequenz ein Viertel der Oszillatorfrequenz, beim Wert 1 1/16 und beim Wert 2 1/64. Setzt man also zum Beispiel bei einem Prozessor mit 20 MHz Taktfrequenz das SSPCON-Register auf den Wert 20h, so bedeutet dies, dass die Schnittstelle im SPI-Modus arbeitet und jede 200 ns ein Bit überträgt. Zur Kommunikation werden drei Pins benutzt:

  • Serial Data Out (SDO) RC5/SDO
  • Serial Data In (SDI) RC4/SDI
  • Serial Clock (SCK) RC3/SCK
  • Slave Select (SS) RA5/SS

Eine Übertragung wird dadurch gestartet, dass in das Register SSPBUF geschrieben wird. Sobald dieses Register gesetzt ist, wird dieser Wert an den Ausgang RC5/SDO (Serial Data Out) ausgegeben. Dieser muss natürlich vorher über das TRISC-Register als Ausgang konfiguriert sein. Gleichzeitig wird vom Pin RC4/SDI (Serial Data In) bei jedem Zeittakt ein Bit eingelesen, vorausgesetzt, der Pin wurde über das TRISC-Register als Eingang konfiguriert. Diese werden in das SSPSR-Register geschrieben. Nach 8 Clocktakten sind die Bytes empfangen bzw. gesendet. Das empfangene Byte wird in das Register SSPBUF übertragen und das Bit 0 (BF) im Register SSPSTAT gesetzt. Gleichzeitig wird das Bit 3 des PIR1-Registers gesetzt, sodass ein Interrupt ausgelöst werden kann. Soll das nächste Byte übertragen werden, so muss das BF-Bit des SSPSTAT-Registers gelöscht werden und das SSPBUF-Register mit dem neuen Wert beschrieben werden. Wichtig ist auch, dass das SSPSR-Register weder beschrieben noch gelesen werden kann.

Abb.1
Seite 3 von 4