Hallo zusammen,
ich habe mir ein ESP32 "CYD" Modul (Cheap Yellow Display, z.B. bei ebay suchen nach "ESP32 TFT 2.8") zugelegt, und versuche, Teile meiner eigenen SW unter Nutzung der Arduino IDE zum spielen zu bringen. Das TFT kann ich ansteuern, den Touchcontroller jedoch (noch) nicht.
(Die Demo-SW des Herstellers funktioniert, das Modul ist also in Ordnung.)
Das TFT liegt an den Standard-Pins der HSPI Schnittstelle, der Touchcontroller jedoch an den Pins CLK:IO25,DIN:IO32M;DOIT:IO39...), die dann ebenfalls an die SPI Schnittstelle gemapped werden. Es ist also notwendig, "on the fly", das Mapping jeweils umzuschalten. (Die VSPI-Schnittstelle ist fest für die SD-Card vorgesehen). Nur mir gelingt das nicht.
Wo ist mein Fehler?
Mein Code (auszugsweise)
void setup() { ......
//SPI-Schnittstelle fuer TFT initialisieren. HSPI-Pins!!!
SPI.begin(TFT_SCK, TFT_MISO, TFT_MOSI, TFT_CS);
SPI.beginTransaction(SPISettings(6000000, MSBFIRST, SPI_MODE0));
pinMode(TFT_CS, OUTPUT);
....
Initialisierung des TFT
....
}
void loop() {
.......
// Einlesen Touch
SPI.end();
SPI.begin(TOUCH_SCK, TOUCH_MISO, TOUCH_MOSI, TOUCH_CS_PIN);
SPI.beginTransaction(SPISettings(6000000, MSBFIRST, SPI_MODE0));
...
Ende Touch
....
//Ausgabe auf TFT
SPI.end();
SPI.begin(TFT_SCK, TFT_MISO, TFT_MOSI, TFT_CS);
SPI.beginTransaction(SPISettings(6000000, MSBFIRST, SPI_MODE0));
.......
}
Ein Umschalten auf die anderen Pins erfolgt bei mir nicht. SPI wird beim ersten Versich, Touch einzulesen, abgeschaltet und läßt sich auch nicht mehr aktivieren. Die SPI Signale habe mit dem Oszi kontrolliert.
Wo liegt das Problem? In der Demo-Version funktioniert das alles, und nach meiner, sicherlich nicht vollständigen, Analyse des Sourcecodes der Demoversion wird keine SW-SPI für das Auslesen des Touchcontrollers benutzt.
(Ich möchte nicht die TFT-eSPI Library von Bodmer verwenden, da diese nicht mit meiner sonstigen SW zusammenspielt.)
Pls help. Danke.