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.
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.
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
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.
Most significant Bit (MSB) first!
Beachte, dass die Daten mit dem most significant Bit (deutsch: höchstwertiges Bit) zuerst übertragen werden!
Das höchstwertige Bit (MSB) ist das Bit mit dem größten Wert.
Es ist in der Regel das Bit, das am weitesten links steht, oder das Bit, das als erstes übertragen wird.
Bei der Binärzahl 1000 ist das MSB beispielsweise eine 1 und bei der Binärzahl 0111 ist das MSB eine 0.
Siehe: Wikipedia - Bitwertigkeit
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.
Least significant Bit (LSB) first!
Beachte, dass die Daten in dem Fall mit dem least significant Bit (deutsch: niedrigstwertiges Bit) zuerst übertragen werden!
Das LSB ist das Bit mit dem niedrigsten Wert.
In der Regel ist das LSB das Bit, welches am weitesten rechts steht.
Bei der Binärzahl 1000 ist das LSB beispielsweise eine 0 und bei der Binärzahl 0111 ist das LSB eine 1.
Siehe: Wikipedia - Bitwertigkeit
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:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ 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:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ 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!!