Einführung in das Serial Peripheral Interface

von renax
veröffentlicht am 01.04.2024 aktualisiert am 06.04.2024

Hast du schon einmal von SPI gehört? Vielleicht bist du bereits mit Mikrocontrollern wie dem ESP8266 oder dem Arduino Uno vertraut und bist über diesen Begriff gestolpert. Doch was verbirgt sich hinter dieser Abkürzung?

Für Neulinge in der Welt der Mikrocontroller und Technikbegeisterte gleichermaßen ist SPI ein spannendes Thema, das die Tür zu einer Vielzahl von Möglichkeiten öffnet. In diesem Artikel werden wir gemeinsam erkunden, was SPI ist und wie es funktioniert.

Ob du gerade erst damit beginnst, dich für die Welt der Mikrocontroller zu interessieren, oder bereits Erfahrung gesammelt hast und nach neuen Herausforderungen suchst - dieser Artikel bietet dir eine Einführung in das SPI.

Zum Kapitel springen Was ist SPI überhaupt?

  • SPI ist ein synchroner serieller Datenbus, welcher im Jahr 1987 von einigen Motorola-Mitarbeitern entwickelt wurde
  • SPI funktioniert nach dem Master-Slave Prinip. Es gibt einen Master, z.b. den Mikrocontroller und einen/mehrere Slave(s), z.b. Sensoren oder Displays.
  • SPI benötigt vier Datenleitungen (SCLK, MOSI, MISO, CS/SS)
  • SPI ist voll-duplexfähig, sodass Geräte in beide Richtungen miteinander kommunizieren können.

Zum Kapitel springen Funktionsweise des SPI

  • SCLK: "Serial Clock"-Datenleitung, welche vom Master ausgeht und das Taktsignal vorgibt.
  • MOSI: "Master Out Slave In", selbsterklärend oder?😉 Über diese Datenleitung werden die Daten vom Master zu den Slaves übertragen.
  • MISO: "Master In Slave Out", hier ist es genauso wie bei MOSI, nur anders herum. (Slave senden Daten an Master)
  • SS/CS: "Slave Select / Chip Select" - Diese Datenleitung wird bei der Kommunikation vom Master auf LOW gezogen, um mit den Slaves kommunizieren zu können

Die Datenübertragung kann in vier Teile eingeteilt werden:


Zum Kapitel springen Taktsignal und Operationsmodi

Zu Beginn der Übertragung legt der Master ein bestimmtes Taktsignal über die SCLK-Datenleitung fest, um die Slaves zu synchronisieren.

SCLK - SPI Taktsignal ><

Die Grafik stellt grob die Übertragung des Taktsignals an den Slave dar.

Nun muss der Slave auch wissen wann Daten gelesen werden sollen, deshalb muss sich auch auf einen von vier Operationsmodi geeinigt werden, damit klar ist, wann Daten gelesen/übertragen werden.

Der Master und Slave müssen sich auf eine Synchronisation des Protokolls einigen.
Mit der Polarität (CPOL) und der Phase vom Clock Signal (CPHA) kann dies erfolgen.
Die Polarität (CPOL) ist im Leerlauf LOW (CPOL = 0) oder HIGH (CPOL = 1)
Die Clock Phase (CPHA) gibt an, ob die Daten am Anfang des Clock Signals (CPHA = 0) oder am Ende der Clock Phase (CPHA = 1) gelesen werden sollen.

SCLK - SPI Clock Signal Phase / Polarität ><

Im oberen Beispiel ist die Phase des Clocksignals 0 bzw. LOW und die Polarität des Signals 0 bzw. LOW oder 1 bzw. HIGH (SPI Mode Nr. 0 bzw. Nr.2)
In diesem Fall werden die Daten am Anfang des Clocksignals, also bei steigender Taktflanke, gelesen.

Im unteren Beispiel hingegen ist die Phase des Clocksignals 1 bzw. HIGH (SPI Mode Nr. 1 bzw. Nr.4)
In diesem Fall werden die Daten am Ende des Clocksignals, also bei fallender Taktflanke, gelesen.
Hier kann auch die Polarität des Signals 0 bzw. LOW oder 1 bzw. HIGH sein.


Zum Kapitel springen Aktivierung der Slaves

Im zweiten Schritt der Übertragung werden die Slaves "aktiviert", damit diese Daten empfangen und senden können.
Dabei setzt der Master die Datenleitung SS/CS die ganze Zeit auf 0 bzw. LOW

SS / CS - SPI Chip Select - SPI Slave Select ><


Zum Kapitel springen Datenübertragung: MOSI

Nun wird es spannend, denn in diesem Schritt werden die Daten vom Master an einen Slave übertragen.

Da der SPI-Bus ein serieller Datenbus ist, werden die Daten bitweise, also im Form von 1 und 0 bzw. HIGH und LOW vom Master an den Slave übertragen.

MOSI Übertragung - SPI MOSI - Master Out Slave In ><


Zum Kapitel springen Datenübertragung: MISO

Nun werden die Daten genau umgekehrt, also vom Slave zum Master übertragen.
In dem Fall werden die Daten genau so übertragen, wie bei MOSI, jedoch wird das LSB (least significant bit) zuerst übertragen.

MISO Übertragung - SPI MISO - Master In Slave Out ><


Zum Kapitel springen Vorteile und Nachteile von SPI

Ob sich SPI für deine Projekte eignet hängt wahrscheinlich von vielen Faktoren ab.
Hier ist eine kleine Übersicht über die Vor- und Nachteile von SPI.

Vorteile

  • Es gibt keine Start oder Stop Bits. Somit können die Daten ohne Unterbrechung schnell übertragen werden.
  • Es gibt keine Slave Adressen wie z.b. bei I2C. Die Slaves werden lediglich über SS/CS selektiert.
  • Separate MISO und MOSI Datenleitungen ermöglichen eine gleichzeitige Datenübertragung in beide Richtungen.

Nachteile

  • 4 Datenleitungen, andere Protokolle wie I2C oder UART haben nur zwei.
  • Es gibt keine Bestätigung, dass die Daten erfolgreich empfangen wurden. Du wirst sogar vom SPI geghosted... F.
  • Es gibt kein Paritätsbit, welches u.a. zur Fehlerdiagnose verwendet wird.
  • Es ist nur EIN Master möglich.

Zum Kapitel springen Schlusswort

SPI ist ein schneller und leichter Datenbus, welcher in sehr vielen Bereichen der Elektrotechnik verwendet wird.
Auch im Hobbybereich kann es von Vorteil sein zu wissen wie SPI funktioniert und ob es sich überhaupt für das eigene Projekt eignet.

Dies ist mein erster Blogpost, deswegen wünsche ich mir viel Feedback und Verbesserungsvorschläge, damit ihr qualitativ hochwertige Informationsbeiträge lesen könnt.
Falls noch Fragen aufkommen, könnt ihr sie mir auch gerne zukommen lassen

Ich bin oft auf dem makesmart.net-Discord unter dem Namen renax187 erreichbar.
Alternativ könnt ihr mich auch auf Instagram unter dem gleichen Namen erreichen.
Vielen Dank an cooper für die Bereitstellung dieser Plattform.

Bis bald!!

Zum Kapitel springen Quellen

Das Thema elektrotechnik gibt es auch auf dem makesmart Discord-Server!

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 D1 Mini programmieren - Der Start mit der Arduino IDE

Erfahre, wie du den ESP8266 D1 Mini mit der Arduino IDE programmierst. Dank den kostenlosen Entwicklungswerkzeugen und der microUSB-Buchse ist das für jeden ein Kinderspiel.

cooper.bin am 10.02.2024

MFRC522 RFID Reader am ESP8266 D1 Mini

Der MFRC522 RFID-Reader zählt zu den beliebtesten Modulen für das Erfassen von RFID-Tags. In diesem Tutorial werden wir die Implementierung Schritt für Schritt durchführen.

cooper.bin am 02.03.2024