ESP32-Wroom — SPI-Bussystem nutzen

Lesezeit: 6 Minuten

Ziele des Projekts

  • Ver­wen­dung zweier SPI-Geräte: SD-Karten­leser und TFT-Dis­play mit 160x128 Pix­eln
  • auf der SD-Karte vorhan­de­nen Dateien auf dem TFT-Dis­play anzeigen

Info

Sowohl das TFT-Dis­play als auch der SD-Karten­leser ver­wen­den den SPI-Bus. Jedes Gerät benötigt aber eigene Daten­leitun­gen. Der ESP32-Wroom ver­fügt über zwei SPI-Bussys­teme, die gle­ichzeit­ig nutzbar sind.

VSPI (Stan­dard: Hard­ware SPI-Bus rot markiert)
23 -> COPI (MOSI)
19 -> CIPO (MISO)
18 -> CLK
5 -> CS

HSPI (Soft­ware SPI-Bus gelb markiert)
13 -> COPI (MOSI)
12 -> CIPO (MISO)
14 -> CLK
15 -> CS

Beispiel: Verzeichnis lesen und auf einem TFT mit 160x128 Pixeln anzeigen

Das TFT-Dis­play ver­wen­det HSPI, der SD-Karten­leser wird über VSPI anges­teuert.

Die Rei­hen­folge der Pins kann unter­schiedlich sein. Achte auf die Beschrif­tung der Pins der bei­den Bauteile.

Der Schaltplan

Der Schalt­plan ist sehr kom­plex, daher wird er für die das TFT-Dis­play und den SD-Karten­leser getren­nt dargestellt.

SD-Kartenleser

Rei­hen­folge der Pins (VSPI):
schwarz -> GND
rot -> 5V
pink -> 19 CIPO (MISO)
blau -> 23 COPI (MOSI)
braun -> 18 SCK
weiß -> 5 CS

TFT-Display

Rei­hen­folge der Pins (HSPI):
schwarz -> GND
rot -> 5V
gelb -> 4 RST
grün -> 2 DC
weiß -> 15 HSPI-CS
blau -> 13 HSPI-COPI (HSPI-MOSI)
braun -> 14 HSPI-SCK

Benötigte Bibliotheken

Das Programm

Die Pins (HSPI) für das TFT-Dis­play müssen definiert wer­den, die Pins für den SD-Karten­leser entsprechen der Stan­dard­kon­fig­u­ra­tion VSPI und müssen nicht deklar­i­ert wer­den.
Für den SD-Karten­leser sind einige Para­me­ter erforder­lich:

  • der Typ der SD-Karte (3)
  • die Geschwindigkeit (SD_SCK_MHZ)
  • der Daten­pin (CSPin)

Beispiel: Fotoschau mit externen SD-Kartenleser

Als TFT-Dis­play kommt ein ⇒TFT mit 480x320 Pix­eln zum Ein­satz.

Fotos zum Download

Die Fotos dür­fen max­i­mal das For­mat von 480x320 Pix­eln haben und müssen im For­mat bmp vor­liegen. Du kannst beliebige Fotos skalieren und entsprechend abspe­ich­ern.

koeln.bmpoverath_bahnhof.bmplindos.bmpbraunwald.bmpdresden_frauenkirche.bmp
chartres.bmpstrand.bmpberlin_olympia.bmpuni_bonn.bmpduenen.bmp
st_michelle.bmpijlst.bmpmonschau.bmpgaios.bmpkoeln_deutz.bmp

Benötigte Bibliotheken

Die ver­wen­dete Bib­lio­thek für das Dis­play mit 480x320 Pix­eln kann nicht über die Bib­lio­theksver­wal­tung instal­liert wer­den. Sie muss herunter geladen wer­den:
https://github.com/prenticedavid/Adafruit_ST7796S_kbv
und mit

Sketch -> Bib­lio­thek ein­binden -> zip-Bib­lio­thek hinzufü­gen

instal­liert wer­den.

Bibliotheken einbinden und Variable definieren

Der Para­me­ter Beschrei­bung entschei­det darüber, ob eine Beschrei­bung zum Foto angezeigt wird. Die Anzeige der Beschrei­bung nimmt einen kleinen Teil des Fotos weg.

Der setup-Teil

Der set­up-Teil startet den SD-Karten­leser und das TFT-Dis­play. Der erfol­gre­iche Start des SD-Karten­le­sers wird im Seriellen Mon­i­tor und auf dem TFT-Dis­play angezeigt.

Der loop-Teil

Jedes Foto muss mit drawBMP an das TFT-Dis­play (tft) mit den x- und y‑Koordinaten des Start­punk­tes übergeben wer­den.
Je nach Zus­tand des Para­me­ter Beschrei­bung (true/false) wird eine Infor­ma­tion zum Foto angezeigt.
Die Umlaute müssen mit tft.write() und ⇒hexa­dez­i­malen Code definiert wer­den.


Quellen


Letzte Aktualisierung: Nov. 13, 2025 @ 11:34