Bei dem Modul TTGO T-Display lässt sich die in Abb. 1 dargestellte Methode leider nicht anwenden. Der Grund ist: Die zur Steuerung des Displays benutzten GPIOs des ESP32 sind mit dem Display fest verdrahtet und stehen nicht zum Anschluss an weitere Module zur Verfügung.
Um neben dem Display ein weiteres SPI-Modul zu betreiben, benötigt man zwei SPI-Master. Nun hat ein ESP32 hardwaremäßig tatsächlich auch zwei Hardware-SPI-Interfaces, nämlich HSPI (id = 1) und VSPI (id=2). Leider funktioniert bei der von mir benutzten Firmware für das TTGO-T-Display-Modul nur eines dieser beiden SPI-Interfaces (vgl. Neue Firmware für den TTGO T-Display (Version 1.18)).
Allerdings kann Micropython auch softwaremäßig einen SPI-Master emulieren; er arbeitet zwar nicht so rasch wie ein Hardware-SPI, zum Betrieb des RFID-Moduls reicht es aber allemal. Die Software-SPI-Klasse befindet sich (wie auch die Hardware-SPI-Klasse) in dem Modul machine; Informationen dazu findet man hier. Eine Initialisierung der beiden benutzten SPI-Interfaces kann dann z. B. so aussehen:
Code: Alles auswählen
from machine import Pin, SPI, SoftSPI
import st7789
import vga2_16x16 as font1 # Mit Umlauten
import vga2_8x16 as font2
from os import uname
release = uname().release[0:4]
id = 2 # z. B. für V 1.12 und V 1.14 # Je nach Version wird HSPI oder VSPI benutzt.
if release == '1.18':
id = 1
spi = SPI(id, baudrate=20000000, polarity=1, sck=Pin(18), mosi=Pin(19)) # 1. Parameter = 1 für Firmware v1.18
display = st7789.ST7789(spi, 135, 240, reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3)
display.init()
from time import sleep_ms
from mfrc522 import MFRC522
sck = Pin(17, Pin.OUT)
mosi = Pin(15, Pin.OUT)
miso = Pin(12, Pin.OUT)
softspi = SoftSPI(baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso)
sda = Pin(25, Pin.OUT) # (SDA = ChipSelect)
.