Wie funktioniert SPI – einfach erklärt!

Wie funktioniert SPI?

SPI steht für Serial Peripheral Interface und wurde im Jahr 1987 von Motorola entwickelt. Für eine Kommunikation werden 4 Leitungen benötigt. 

SCL: Serial Clock Leitung, diese wird vom Master ausgegeben

MOSI: Master Output, Slave Input

MISO: Master Input, Slave Output

CS: Chip select oder auch SS für Slave select. Diese Leitung wird vom Master auf LOW gezogen, um mit dem Slave der an dieser CS Leitung hängt zu kommunizieren. 

SPI ist voll duplexfähig mit den zwei Daten Leitungen MOSI und MISO und kann mit bis zu 20 Mbps Daten sehr schnell austauschen. Die Daten können hintereinander gesendet werden ohne eine Unterbrechung von z. B. einem Start oder Stop bit. Zum Unterschied von I2C kann man bei SPI nur einen Master im Netzwerk einsetzen und die Anzahl der Slaves ist nur von der Verfügbarkeit der Pins vom Mikrocontroller abhängig.

Aufbau von einem SPI Netzwerk
Die CS / SS Leitung

Mit der CS (Chip select) oder der SS (Slave select) Leitung wird der Slave mit dem kommuniziert werden soll angesprochen. Diese Leitung wird vom Master auf LOW gesetzt und der entsprechende Slave wird aktiviert, um Daten zu lesen oder zu senden. Es können so viele Slaves angehängt werden, wie Pins am Master zur Verfügung stehen.

SPI CS und SCL
MOSI und MISO

Der Master sendet die Daten Bit für Bit in Serie über die MOSI Leitung zum Slave. Normalerweise werden die Daten mit MSB (most significant bit) first gesendet. 

Der Slave sendet die Daten zum Master über die MISO Leitung zurück. Diese werden meistens mit LSB (Least significant bit) first gesendet. 

MSB und LSB
SPI Operations Modi

Wie schon erwähnt wird das Clock Signal vom Master erzeugt, das ist aber noch nicht alles. Der Master und der Slave müssen sich auf eine Synchronisation des Protokolls einigen, dass kann mit der Polarität (CPOL) und der Phase vom Clock Signal (CPHA) erfolgen. Folgende vier Modi in der Tabelle sind möglich.

SPI Operation Modi
Clock Polarity (CPOL)

Beginnen wir mit der Clock Polarity auf der Clock Leitung. Diese ist im Leerlauf (idle) Modus LOW (CPOL = 0) oder HIGH (CPOL = 1) sein. 

SPI Clock polarity
Clock Signal Phase (CPHA)

Die Clock Phase legt fest, ob die Daten am Anfang vom Clock Signal gelesen werden (CPHA = 0) oder am Ende vom der Clock Phase (CPHA = 1).

SPI Clock Signal Phase
SPI Daten senden

In diesem Bild könnt ihr sehen, wie das Senden von Daten über SPI aufgebaut ist. Zuerst wird der Slave über die CS Leitung aktiviert, das Clock Signal auf CPOL 0 oder 1 gesetzt und die Daten werden je nachdem welche Signalphase gewählt ist, gesendet. Wichtig ist, dass die Daten immer in der Mitte gelesen werden und nicht wenn das Signal steigt oder fällt.

Daten senden mit SPI

Node-MCU ESP8266 Board:

* https://amzn.to/2U7Urmn – NodeMCU ESP8266 ESP-12F

* https://amzn.to/2J5wLJ3 – 3er Set, ESP8266 ESP-12F

* https://amzn.to/3belvGd – 5er Set, ESP8266 ESP-12F

Relais:

* https://amzn.to/3a5yUjQ – 1 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2xi4Kvq – 3 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2U9ZqmL – 5 Stk. Relais 5V KY-019 Modul – 10A

Netzteile:

* https://amzn.to/3beWY3V – 2er-Pack USB Ladegerät 5V/2A

* https://amzn.to/398WzP9 – Raspberry Pi 4 Netzteil, USB-C, 5.1V, 3A

* https://amzn.to/2wsS8Bh  – HomeSpot Netzteil 3A/5V inkl. 1,5M Micro USB Kabel 

Jumper Wire:

* https://amzn.to/2WxKwIl Female to Female F2F 40 STK. je 20 cm

* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F

►Breadboard:

* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten

USB Kabel:

* https://amzn.to/2y01THNUSB A auf Micro USB  Kabel 0.5m

* https://amzn.to/2xkgqgQ – USB auf Mini USB Kabel 0.5m

* https://amzn.to/2QBxCp7 – USB A zu USB B Kabel 0.5m

 

Alle Links mit “*” sind Amazon Affiliate Links. Ich bekomme bei einer Bestellung einen kleinen Teil vom Umsatz, ohne das euch dafür Mehrkosten entstehen.

Zum Video

★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★

oder über

Twint Spenden Code