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.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

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.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

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

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 TFT Display - Komplette Einrichtung und Start

Lerne in diesem Beitrag, wie du am Beispiel des ST7735 verschiedene TFT-Displays mit einem ESP8266 einrichten und Daten visuell ansprechend darstellen kannst.

cooper.bin am 01.09.2024

ESP8266 D1 Mini Datenblatt und Spezifikationen

ESP8266 D1 Mini Datenblatt - Technische Übersicht aller wichtigen Spezifikationen, Pins und Eigenschaften. Finde heraus, ob sich der ESP8266 D1 Mini für dein Projekt eignet.

cooper.bin am 16.09.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

ESP8266 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

Einführung in das Protokoll ESP-NOW

Erfahre wie du Nachrichten via ESP-NOW senden kannst. In diesem Beitrag lernst du, wie eine einfache Kommunikation via ESP-NOW stattfinden kann. Baue dein eigenes N:1 Netzwerk.

renax am 20.07.2024