Wie funktioniert SPI – einfach erklärt!
by Edi · 28/11/2020
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.
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.
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.
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.
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.
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 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.
►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/2y01THN – USB 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
All links with "*" are Amazon affiliate links. I receive a small portion of the sales when you place an order, at no extra cost to you.