Der englische vollständige Name von SPI ist Serial Peripheral Interface, was, wie der Name schon sagt, eine serielle Peripherieschnittstelle ist. SPI ist eine Spezifikation für eine synchrone serielle Kommunikationsschnittstelle, die hauptsächlich für die Kurzstreckenkommunikation in eingebetteten Systemen verwendet wird. Die Schnittstelle wurde Mitte der 1980er Jahre von Motorola entwickelt und hat sich seitdem zu einer Industriespezifikation entwickelt.
Die Kommunikation zwischen SPI-Geräten erfolgt im Vollduplexmodus, bei dem es sich um einen Master-Slave-Modus eines Masters und eines oder mehrerer Slaves handelt. Der Host ist für den Initialisierungsrahmen verantwortlich. Dieser Datenübertragungsrahmen kann sowohl für Lese- als auch für Schreiboperationen verwendet werden. Die Chipauswahlleitung kann einen von mehreren Slaves auswählen, um auf die Anfrage des Hosts zu antworten.
Bei mehreren Slave-Geräten benötigt jeder Slave eine CS/SS-Leitung zur Verbindung mit dem Host, damit der Host mit jedem Slave kommunizieren kann. Wie in der Abbildung unten gezeigt, ist dies die Verbindungsmethode von einem Master und mehreren Slaves.

Die meisten Slave-Geräte verfügen über eine Tri-State-Logik. Wenn das Gerät also nicht ausgewählt ist, werden ihre MISO-Signalleitungen hochohmig (elektrisch getrennt). Geräte ohne Tri-State-Ausgänge benötigen einen externen Tri-State-Puffer, um den SPI-Bus mit anderen Slave-Geräten zu teilen.

Datenübertragung
Bei der SPI-Kommunikation sendet das SPI-Master-Gerät das SPI-Slave-Gerät über die SCLK-Leitung mit der vom Slave-Gerät unterstützten Frequenz, was auch bedeutet, dass der Slave nicht aktiv Daten an den Master senden kann, sondern der Master nur den Slave zum Senden abfragen kann Daten zum Slave. Oder das Slave-Gerät informiert den Host aktiv über das Eintreffen von Daten über einen IO-Port.
In jedem Taktzyklus von SPI wird eine Vollduplex-Datenübertragung durchgeführt. Wenn der Master 1 Bit über die MOSI-Leitung sendet, sendet der Slave nach dem Lesen auch 1 Bit Daten über die MISO-Leitung. Dies bedeutet, dass diese Kommunikationsreihenfolge beibehalten wird, selbst wenn nur eine Simplex-Kommunikation stattfindet.
SPI-Übertragungen umfassen normalerweise zwei Schieberegister einer bestimmten Wortlänge. Beispielsweise ein 8-Bit-Schieberegister im Master und Slave. Sie sind in einer virtuellen Ringtopologie verbunden, wobei die Daten normalerweise zuerst mit dem höchstwertigen Bit herausgeschoben werden. An der Taktflanke verschieben sowohl der Master als auch der Slave 1 Datenbit von der Übertragungsleitung zueinander. Wenn die nächste Taktflanke eintrifft, tasten die Empfänger auf beiden Seiten das Bit auf der Übertragungsleitung ab und setzen es als neues niedrigstwertiges Bit des Schieberegisters. Nachdem Registerbits hinaus- und hineingeschoben wurden, tauschen Master und Slave Registerwerte aus. Wenn weitere Daten ausgetauscht werden müssen, laden Sie das Schieberegister neu und wiederholen Sie den Vorgang. Eine Übertragung kann eine beliebige Anzahl von Taktzyklen dauern. Wenn dies erledigt ist, stoppt der Host das Umschalten des Taktsignals.