SPI
ist ein serielles Kommunikationsprotokoll, das von Motorola entwickelt wurde. Es ist ein Vollduplex-Protokoll basierend auf einem Master-Slave-Prinzip.
Funktionsweise
SPI verwendet vier Signale:
Den SPI-Takt (SCLK),
den Master Output/Slave Input (MOSI),
den Master Input/Slave Output (MISO)
und den Slave Select (SS).
Drei dieser Signale werden von allen Busteilnehmern erwendet: SCLK, MOSI und MISO. SCLK wird vom Master erzeugt und zur Synchronisierung des Datenstroms verwendet. MOSI und MISO sind die Datenleitungen. Ihre Namen geben zugleich die Datenflussrichtungen an. Daten werden auf dem SPI-Bus aufgrund der gekoppelten Schieberegister immer gleichzeitig "gesendet" und "empfangen". Allerdings können z.B. Daten eines Slaves der nur eine Ausgabeeinheit hat (z.B. DA-Wandler) vom Master einfach ignoriert werden, die MISO Leitung wird also einfach nicht verbunden. Genauso kann ein Slave, der nur Daten an den Master zu übertragen hat (z.B. Temperatursensor), die vom Master via MOSI gesendeten Daten einfach ignorieren.
Jeder Slave hat seine eigene SS Leitung. Im Ruhezustand ist diese
Leitung i.A. auf High-Pegel. Der Master zieht diese Leitung auf ‚0’ um
einen Übertragungsstart auzuzeigen. Mit dem SS wird auch eine Übertragung meherer Datenworte synchronisiert: eine fallende Flanke zeigt den Beginn eines Telegramms an. Die steigende Flanke des SS bedeutet "Datenübertragung beendet".
Hier eine SPI Beispielkonfiguration
Die Datenübertragung selber hat kein definiertes Protokoll. Deshalb ist sie ideal für beliebige Datenstromübertragungen. Daten können ohne Protokolloverhead mit hoher Geschwindigkeit (bis zu mehreren 10MHz) übertragen werden. Die Kehrseite der Medaille ist allerdings, dass keinerlei Rückmeldung oder Datenflusskontrolle vom Slave zum Master definiert ist. Eventuell bemerkt der Master nicht einmal einen funktionsunfähigen Slave.
SPI basiert auf gekoppelten Schieberegistern. Die Daten, die z.B. aus dem Master-Schieberregister herausgetaktet werden, werden mit dem nächsten Takt im Slave-Schieberegister eingelesen und weitergeschoben. Abhängig vom verwendeten Flipflop kann das Einlesen auf die steigende oder fallende Flanke erfolgen.
Hier eine Übersicht der 4 möglichen SPI-Modi