Das Serial Peripheral Interface (SPI)
Das Serial Peripheral Interface (SPI) dient zur seriellen Kommunikation zwischen Mikrocontrollern. Diese können Sensoren oder andere technische Komponenten enthalten.
Beim SPI gibt es immer einen Master Mikrocontroller, welcher die Kommunikation steuert.
Zur Realisierung werden zwei Datenleitungen verwendet: MOSI (Master out - Slave in), MISO (Master in - Slave out). Es können also in beide Richtungen gleichzeitig Daten hin und her gesendet werden, dies nennt man synchronen Datentransfer.
Des Weiteren muss es ein gemeinsames Taktsignal zwischen allen teilnehmenden Kommunikationspartnern geben. Die Leitung wird auch SCK/SCLK genannt.
Während des Datentransfers selbst können maximal 2 Mikrocontroller miteinander kommunizieren. Der Master kann über eine weitere Leitung den Slave auswählen, welcher angesprochen werden soll. Dazu wird der Slave Select (SS) Eingang des Slaves auf Low
gesetzt. Damit beginnt die Kommunikation.
Abbildung 1: Aufbau des SPI mit einem Slave
Quelle: BBS2 Wolfsburg
Abbildung 2: Aufbau des SPI mit mehreren Slaves
Quelle: BBS2 Wolfsburg
Der ESP32 bietet mehrere SPI Busse. In Verbindung mit der Arduino IDE und den Bibliotheken des ESP32 ist der VSPI Bus mit folgenden Pins am leichtesten zu bedienen.
MISO | PIN 19 |
---|---|
MOSI | PIN 23 |
SCK | PIN 18 |
SS | ein beliebiger GPIO Pin |
Die Bibliothek zum Arbeiten mit dem VSPI wurde mit dem Installieren des ESP32 Boards über den Boardverwalter bereits geladen und befindet sich im Standardfall an folgendem Ort:
C:\Users\"EigenerBenutzer"\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPI\src
Das Einbinden in dein Programm erfolgt mit folgender Zeile:
#include <SPI.h>