19.01.2026

Was ist SPI?

What is SPI?

Table of contents

SPI-Kommunikationsprotokoll Daten senden Empfangsdaten Konfiguration mehrerer Peripheriegeräte (Chipauswahl) Vor- und Nachteile von SPI Anwendungen im realen Leben
Table of contents
SPI-Kommunikationsprotokoll Daten senden Empfangsdaten Konfiguration mehrerer Peripheriegeräte (Chipauswahl) Vor- und Nachteile von SPI Anwendungen im realen Leben

SPI-Kommunikationsprotokoll

SPI ( Serial Peripheral Interface) ist eine synchrone serielle Kommunikationsschnittstelle für die Kommunikation über kurze Distanzen. Sie wird hauptsächlich in eingebetteten Systemen zur Datenübertragung zwischen Geräten eingesetzt. Seit ihrer Einführung hat sie sich in der Elektronikbranche und der Industrie als Standard etabliert.

SPI ist eine Vollduplex-Schnittstelle zur Kommunikation zwischen einem Controller und einem Peripheriegerät. Das bedeutet, dass beide Geräte gleichzeitig Daten senden können. SPI verwendet eine separate Taktleitung, um die Übertragungsrate der Datenbits zu synchronisieren. Die Synchronisierung erfolgt an der steigenden oder fallenden Taktflanke. Daher ist die SPI-Kommunikation nicht auf nur eine Datenleitung angewiesen.

Die SPI-Verbindung verfügt über vier Logiksignale:

  • SCLK : Serieller Takt (serieller Takt)
  • MOSI : Master Out, Slave In (Datenausgabe des Controllers)
  • MISO : Master In, Slave Out (Datenausgabe vom Peripheriegerät)
  • CS : Chip Select (wählt das Peripheriegerät aus, mit dem Sie kommunizieren möchten)

Was uns an SPI gefällt, sind die Bezeichnungen MISO und MOSI für die Datenleitungen. Dadurch ist leicht zu erkennen, welche Leitung Daten sendet und welche sie empfängt.

Die serielle Taktung (SPI) wird auch als CLK oder SCK abgekürzt. Die MOSI-Leitung des Controllers ist mit der MOSI-Leitung des Peripheriegeräts verbunden. Ebenso ist MISO des Controllers mit MISO des Peripheriegeräts verbunden. Im Gegensatz zum Adresskonzept von I²C verwendet SPI die Chip-Select-Leitung, die angibt, welches Peripheriegerät Daten empfängt . Während einige Kommunikationsprotokolle mehrere Controller unterstützen, hat SPI immer nur einen Controller (Master) . Um mehrere Controller an einen Bus anzuschließen, ist ein anderes Kommunikationsprotokoll erforderlich.

Daten senden

Um eine neue Datenübertragung zu starten, schaltet der Controller zunächst den Chip-Select-Pin von High auf Low , also von logisch 1 auf logisch 0. Sobald ein Peripheriegerät auf diese Weise ausgewählt ist, generiert der Controller einen Takt und beginnt mit dem Senden von Datensignalen. Zur Vereinfachung betrachten wir zunächst nur ein Peripheriegerät.

Senden wir den Anfangsbuchstaben unseres Namens per SPI. Der Controller sendet Datenbits entweder an der steigenden oder fallenden Flanke des Taktsignals. Vereinfachend nehmen wir für dieses Beispiel an, dass er die steigende Flanke verwendet.

Das Großbuchstabe S in ASCII entspricht 01010011. Da serielle Kommunikation Daten üblicherweise mit dem niedrigstwertigen Bit (LSB) zuerst sendet, kehren wir diese Reihenfolge um und erhalten 11001010. Sobald der Empfänger (das Gerät, das Daten empfängt) die steigende Flanke des Taktsignals erkennt, liest er das Informationsbit über die Datenleitung (MOSI) aus.

Empfangsdaten

Um Daten vom Peripheriegerät an den Controller zu senden, verwenden Sie die separate MISO-Leitung. Wie der Name schon sagt, fließen die Daten in den Controller und aus dem Peripheriegerät heraus. Die Daten werden in einem festgelegten Taktintervall zurückgesendet. Der Controller muss im Voraus wissen, ob und wie viele Daten das Peripheriegerät zurückgibt. Andernfalls weiß er nicht, wie viele Taktsignale er senden soll, und es können Daten verloren gehen.

Betrachten wir ein weiteres Beispiel. Diesmal soll das Peripheriegerät ein großes E senden, sobald es Daten vom Controller empfängt. Das große E entspricht im ASCII-Code 01000101 und wird daher als 10100010 gesendet. Wie in der Abbildung unten dargestellt, erzeugt der Controller zwei Taktzyklen. Im ersten Zyklus sendet der Controller Daten, während das Peripheriegerät im Leerlauf ist. Im zweiten Zyklus ist der Controller ebenfalls im Leerlauf, und das Peripheriegerät sendet Daten zurück.

Da SPI Vollduplex ist, hätte dies gleichzeitig geschehen können. Zur Veranschaulichung haben wir den Vorgang aufgeteilt.

Konfiguration mehrerer Peripheriegeräte (Chipauswahl)

Wie bereits erwähnt, können mehrere Peripheriegeräte an einen SPI-Controller angeschlossen werden. Zur Kommunikation mit einem Peripheriegerät wählt der Controller dieses durch Aktivieren des CS-Signals aus. Dies kann auf zwei Arten erfolgen: im regulären Modus oder im Reihenschaltungsmodus .

Normaler Modus

Betrachten wir zunächst den regulären Modus. Der Controller verfügt über je eine SCLK-, MOSI- und MISO-Leitung, aber über mehrere CS-Leitungen , abhängig von der Anzahl der Peripheriegeräte. Peripheriegeräte dürfen sich nicht dieselbe CS-Leitung teilen; jedes benötigt eine eigene.

Um Daten an ein bestimmtes Peripheriegerät zu senden, muss das Chip-Select-Signal vom Controller aktiviert werden. Das bedeutet, dass das Signal auf der CS-Leitung auf Low-Pegel gezogen wird , während die anderen Signale auf High-Pegel bleiben. Dadurch wird das Peripheriegerät veranlasst, die Daten zu prüfen. Alle anderen Geräte sehen zwar die gesendeten Daten, reagieren aber nicht darauf, da ihre Signale auf High-Pegel liegen.

Takt und Daten auf den MOSI/MISO-Leitungen stehen nur dem ausgewählten Peripheriegerät zur Verfügung. Sind mehrere Peripheriegeräte ausgewählt (deren Signale auf niedrigem Pegel liegen), werden die Daten auf der MISO-Leitung beschädigt. Der Controller kann dann nicht mehr feststellen, welches Peripheriegerät die Daten sendet.

Mit zunehmender Anzahl an Peripheriegeräten steigt auch die Anzahl der CS-Leitungen. Dies belegt schnell viele I/O-Pins des Controllers und begrenzt die Anzahl der anschließbaren Peripheriegeräte. In diesem Modus wird die Anzahl der anschließbaren Peripheriegeräte zugunsten einer höheren Datenübertragungsgeschwindigkeit reduziert.

Daisy-Chain-Modus

Der andere Modus ist die Reihenschaltung. Dabei verfügen der Controller und alle Peripheriegeräte jeweils über eine SCLK-, MOSI-, MISO- und CS-Leitung. Im Gegensatz zum regulären Modus wird im Reihenschaltungsmodus eine einzige CS-Leitung an alle angeschlossenen Peripheriegeräte geführt .

Der Modus beginnt mit dem Verbinden der MOSI-Leitung des Controllers mit der MOSI-Leitung des ersten Peripheriegeräts. Jedes nachfolgende Peripheriegerät verbindet seine MISO-Leitung mit der MOSI-Leitung des nächsten Peripheriegeräts. Sobald das letzte verbundene Peripheriegerät erreicht ist, verbindet es seine MISO-Leitung mit der MISO-Leitung des Controllers. Anschließend wird die CS-Leitung aktiviert, wodurch alle Chips gleichzeitig eingeschaltet werden.

Der Controller sendet alle Daten gleichzeitig. Dabei kommt es zu einem Datenüberlauf von einem Peripheriegerät zum nächsten . Im Prinzip nimmt ein Peripheriegerät die Daten entgegen und leitet sie an sein Nachbargerät weiter. So gelangt das erste gesendete Datenbit schließlich auch zum letzten Peripheriegerät. Es müssen also von Anfang an genügend Daten gesendet werden, damit sie alle angeschlossenen Peripheriegeräte erreichen.

Stellen Sie es sich wie das Befüllen einer Wasserflasche vor, wobei das Wasser die Daten und die Flasche die Peripheriegeräte darstellt. Der Boden (in unserem Fall das letzte Peripheriegerät) muss zuerst befüllt werden. Zuletzt wird der obere Teil der Flasche (das erste Peripheriegerät) mit Wasser befüllt.

Dieser Modus wird typischerweise in Systemen verwendet, die nur Daten ausgeben , bei denen der Controller keine Daten zurückerhalten muss.

Die Daisy-Chain-Verkettung ermöglicht den Anschluss von mehr Peripheriegeräten als im Standardmodus, allerdings auf Kosten der Datenübertragungsgeschwindigkeit. Wichtig: Dieser Modus wird nicht von allen SPI-Geräten unterstützt. Prüfen Sie im Datenblatt, ob Ihr Gerät auf diese Weise angeschlossen werden kann.

Vor- und Nachteile von SPI

Wie jedes andere Kommunikationsprotokoll hat auch SPI Vor- und Nachteile. Nachdem wir nun seine Funktionsweise kennen, wollen wir diese Vor- und Nachteile betrachten.

Vorteile:

  • Kann über mehrere Peripheriegeräte verfügen
  • Kann zur Kommunikation mit einfachen Geräten verwendet werden.
  • Vollduplex-Schnittstelle, die bilaterale Kommunikation ermöglicht
  • Schneller als die UART- und I2C-Protokolle
  • Die Taktung definiert die Datenrate, eine manuelle Angabe ist nicht erforderlich.
  • Erfordert keine Datenstrukturierung

Nachteile:

  • Es kann nur ein Controller verwendet werden.
  • Benötigt mehr Pins als UART und I2C.
  • Nur für kurze Distanzen (weniger als ein Meter)
  • Die Chipauswahl belegt zusätzliche Pins des Prozessors.
  • Üblicherweise werden für jedes Peripheriegerät separate CS-Leitungen benötigt.
  • Peripheriegeräte können nicht direkt miteinander kommunizieren.

Anwendungen im realen Leben

SPI ist allgegenwärtig . Man findet es praktisch überall, von Unterhaltungselektronik über Industrieanlagen und Autos bis hin zu Triebwerken für die Luft- und Raumfahrt. Es ermöglicht die Kommunikation mit einfachen Geräten. Es ist eine der am weitesten verbreiteten Schnittstellen zwischen Mikrocontrollern und Peripheriegeräten wie Sensoren, Schiebewiderständen, AD-Wandlern, DA-Wandlern, LCDs, SD-Karten und vielem mehr.

Wir verwenden SPI hier bei Soldered sehr häufig. Es ist unser bevorzugtes Kommunikationsprotokoll für die Arbeit mit SD-Karten. Der Grund, warum Sie SPI in Ihren Projekten verwenden sollten, ist die Geschwindigkeit von bis zu 8 Megabit pro Sekunde. Manchmal sind sogar noch höhere Werte möglich.

Verwandte Artikel