SPI-Bus

Lese­zeit: 2 Minu­ten

Bus­sys­te­me ver­bin­den Peri­phe­rie-Gerä­te mit dem Con­trol­ler. Damit der Auf­wand der Ver­drah­tung mög­lichst gering bleibt, soll­ten so wenig Lei­tun­gen wie mög­lich ver­baut wer­den. Aus die­ser Grund­über­le­gung wur­den in der Ver­gan­gen­heit ver­schie­de­ne seri­el­le Zwei­draht­bus­sys­te­me ent­wi­ckelt, die für das Sen­den und Emp­fan­gen von Daten mit nur zwei Daten­lei­tun­gen auskommen.

Das Seri­al Peri­phe­ral Inter­face (SPI) besteht aus zwei Daten­lei­tun­gen und einer Takt­lei­tung, über die das Peri­phe­rie­ge­rät ange­schlos­sen ist. Eine vier­te Lei­tung dient als Auswahlleitung.

Die Bezeich­nun­gen von Con­trol­ler und Peri­phe­rie-Gerä­ten waren his­to­risch bedingt Mas­ter und Slave. Ich schlie­ße mich der von 🔗ardui​no​.cc vor­ge­schla­ge­nen Ter­mi­no­lo­gie an und ver­wen­de die neu­en Namen.

Lei­der lässt sich die­ses Prin­zip nicht voll­stän­dig durch­hal­ten, weil bei der Pro­gram­mie­rung die his­to­ri­schen Namen ver­wen­det werden.

Der SPI-Bus (Seri­al Peri­phe­ral Inter­face) benö­tigt zwei Daten­lei­tun­gen und zwei Steu­er­lei­tun­gen (Taktleitung/Auswahlleitung):

Daten­lei­tun­gen (in Klam­mern alter­na­ti­ve Bezeichnungen)

His­to­ri­sche NamenVer­wen­de­ter NameErklä­rungStan­dard Pin UNO
MOSICOPI
(DO, SDA)
Con­trol­ler Out, Peri­phe­ral In
Daten vom Con­trol­ler zum Peri­phe­rie-Gerät senden
11
MISOCIPO
(SDI, DI, SI, DIN)
Con­trol­ler In, Peri­phe­ral Out
Daten vom Peri­phe­rie-Gerät empfangen
12

Steu­er­lei­tun­gen (in Klam­mern alter­na­ti­ve Bezeichnungen)

His­to­ri­sche NamenVer­wen­de­ter NameErklä­rungStan­dard Pin UNO
SLCK
(CLK, SCK)
Seri­al Clock → Takt­im­pul­se, dient der Syn­chro­ni­sa­ti­on der Datenübertragung13
SSCS
(CSB, CSN, STE, SYNC)
Chip Sel­ect
Wird vom Con­trol­ler akti­viert, um die Kom­mu­ni­ka­ti­on mit einem Peri­phe­rie­ge­rät zu starten
10

Zusätz­li­che Pins (in Klam­mern alter­na­ti­ve Bezeichnungen)

Bezeich­nungErklä­rungStan­dard Pin UNO
RES
(RST, REST)
Reset des Bauteils8
DC
(RS/AO)
Data Com­mu­ni­ca­ti­on
Daten Kommunikation
9

Test­pro­gramm für die SPI-Pins der Mikrocontroller

Das Test­pro­gramm ver­wen­det die his­to­ri­schen Namen des SPI-Bus­ses, ich habe sie im Kopf des Pro­gramms auf die neu­en Namen "umge­lenkt".

// neue Namen verwenden
#define COPI MOSI
#define CIPO MISO
#define CS SS

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial);
  delay(1000);
  
  // SPI-Pins anzeigen
  Serial.print("COPI: ");
  Serial.println(COPI);
  Serial.print("CIPO: ");
  Serial.println(CIPO);
  Serial.print("SCK: ");
  Serial.println(SCK);
  Serial.print("CS: ");
  Serial.println(CS);  
}

void loop() 
{
  // bleibt leer, Programm läuft nur einmal
}

Pins SPI-Bus ver­schie­de­ner Mikrocontroller

Ardui­no UNO/Nano
ESP32-Wroom
ESP32-C6
XIAO-ESP32-C3
Wemos D1 Mini

  I²C-Bus   I²C-Bus 

Letzte Aktualisierung: März 18, 2025 @ 12:04