Der SPI-Bus wird hauptsächlich für die Kommunikation zwischen einem
Mikrokontroller und peripheren ICs verwendet. Seine Verwendung ist einfach,
da eine synchrone Kommunikation verwendet wird und kein Adressenfeld in den
Daten ausgewertet werden muss, sowie der Mikrocontroller immer der einzige Master
am Bus ist. Der SPI-Bus besteht aus den Signalen Clock, Dateneingang und Datenausgang,
sowie einer ChipSelect-Leitung für die Auswahl eines Slave. Allerdings ist das
SPI-Protokoll nicht standardisiert, so das die beispielhafte Beschreibung hier
nur stellvertretend für einen Ausschnitt von existierenden SPI-Alternativen
sein kann. Am Beginn einer Kommunikation
wird die ChipSelect-Leitung (CS) auf
den Pegel 0 gesetzt, um den Slave in den aktiven Zustand zu versetzen. Zugleich
kann der Datenausgang für das erste Bit gesetzt werden, um dann anschließend
– nach einer einzuhalten Setupzeit – die Clock-Leitung von 0 auf 1 zu setzen.
In diesem Augenblick wird das Bit in das Schieberegister des Slaves übernommen
und gleichzeitig kann ein Slave auf dem Datenausgang ein Datenbit ausgeben,
da anschließend vom Mikrocontroller übernommen werden kann. Anschließend wiederholt
sich der Vorgang mit jeder steigenden Flanke des Clock-Signals. Nach Abschluss
der Übertragung wird das ChipSelect-Signal wieder auf 0 gesetzt und die Kommunikation
ist beendet. Das Beispiel in verdeutlicht die Beschreibung. Es wird ein Wort
mit 4 Bit Breite gesendet und empfangen. Gesendetes Wort: „1010“, empfangenes Wort
„1100“.
Abb. 9‑4 : Übertragungsformat
Der SPI-Bus ist bis zu etwa 5Megabit /Sekunde schnell und ist einfach
per Software im Master zu implementieren und daher gut geeignet für die Kommunikation
in kleinen Systemen. Zum Beispiel ist es möglich mit einem ATmega323-µC von
Atmel ohne Probleme mehr als 4 Peripheriechips anzusprechen.
Die Flankensteilheit der Signale wird nicht kontrolliert und die Übertragung ist nicht gegen Fehler abgesichert. Daher ist auf die EMV-Eigenschaften der Schaltung zu achten.
Tabelle der wichtigsten Merkmale (pdf)