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.


SPI_Master

Abbildung 1: Aufbau des SPI mit einem Slave

Quelle: BBS2 Wolfsburg


Bei mehreren Mikrocontrollern am SPI Bus gibt es für jeden Slave eine SS Leitung vom Master. So kann der Master Mikrocontroller die Auswahl des Slaves treffen. 

SPI_Master_2

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.

Pins des VSPI am ESP32
            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>

Last modified: Monday, 5 February 2024, 11:28 AM