vsl
June 7, 2025, 2:03pm
1
I know this topic is all over the internet...but I've been reading all the links I can find and nothing seems to address my problem.
I've been using Bodmer's library with a 4" ILI9486 SPI screen and ESP32.
ESP32 DEV board works fine, display and touch...no problems!
Change to ESP32 S3 and it all goes pear shaped, as reported in many internet links.
I've created a simple prog just to test(same prog on both boards, ESP32 works and ESP32 S3 doesn't.
straight off the S3 continuously reboots.
regressed the Espressif board to 2.0.14 and reboot stops but screen is dead.
changed the SPI config to HSPI pins in 30 range with the define but screen is dead.
anybody got any further ideas??
//
// ESP32 S3 DEV with ILI9486
//
#include "TFT_eSPI.h" // Hardware-specific library
//#include "SPI.h"
/*
set up for esp32 S3 dev in user_setup.h
TFT_MISO 13 // dont connect MISO pin to TFT miso if using touch
TFT_MOSI 11 // MOSI
TFT_SCLK 12
TFT_CS 10 // Chip select control pin
TFT_DC 17 // Data Command control pin
TFT_RST 16 // Reset pin (could connect to RST pin)
TFT_LED 8
T_clk 12
T_CS 18 // Chip select pin (T_CS) of touch screen
T_DIN 11 // MOSI
T_dO 13 // MISO
*/
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library with default width and height
void setup()
{
// Serial.begin(115200);
// Serial.println("ESP32_SPI_9486_v1.1");
tft.init();
tft.setRotation(3);
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE);
tft.setCursor(50,50);
tft.setTextSize(2);
tft.print("test at 50,50");
}
void loop()
{
}
Why did you change the board's level? Did you read somewhere that the S3 had a board 3 issue? If that is the case, you have two options. Wait until the library is fixed (or use a 'better' library) or pull a fork and fix it yourself.
vsl
June 7, 2025, 4:14pm
3
Yes, the problem has been resolved by some by regressing. The problem goes back to 2020/22 but from continuous googling I don't think Bodmer, or anybody else has a fix. I may be wrong, and that is exactly why I have posted this. The regressing hasn't fixed it for me, and there are many comments to the effect that regressing shouldn't be the answer to fixing a problem.
I am reluctant to use another library as I do like Bodmer's library, but if nobody has solved this, and there is no update to the library, I suppose I will have to use a different library, one that works with S3.
creating a fork is well above my pay grade.
Have you looked at the Migration document to see if you are affected by the Board's 3.x issue? Have you looked at the Library Issues to see what has been reported and its current status, and if there is a fork that fixes it but may not be in GA status yet?
The crash problem has been reported to the developer many times over:
opened 11:38AM - 17 Apr 24 UTC
Hi,
I use arduino ide 2.3.0, tft_espi 2.5.43 library, and esp32 by espressif 2… .0.15 package , and the esp32c3 super mini module.
The following code lights the led 1 time.
But when I uncomment // tft.init() the led keeps blinking, so the module keeps restarting.
It does not happen when I use esp32 package 2.0.14
Any idea what the problem is ?
Regards
Sjors
code :
/*
*/
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
const byte led8 = 8;
byte UseFont;
char str[80];
void setup(){
// Serial.begin(115200);
// delay(2000);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(8, HIGH);
// tft.init(); // tft.begin(); zijn hetzelfde
}
void loop(){
}
opened 11:56PM - 18 Apr 24 UTC
I'm having issues with my ESP32-S3 module crashing and rebooting on `tft.begin(… )` (or on `tft.init()`). The following output repeats over and over in the monitor:
```
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x4bc
load:0x403c9700,len:0xbd8
load:0x403cc700,len:0x2a0c
entry 0x403c98d0
E (99) esp_core_dump_flash: Core dump data check failed:
Calculated checksum='db82bb1c'
Image checksum='ffffffff'
Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4200289b PS : 0x00060a30 A0 : 0x82002928 A1 : 0x3fcebd80
A2 : 0x00000010 A3 : 0x00000000 A4 : 0x60004000 A5 : 0x00000015
A6 : 0x000000ff A7 : 0x00000001 A8 : 0x08000000 A9 : 0x3fcebd50
A10 : 0x3fc952b0 A11 : 0x00000001 A12 : 0xffffffff A13 : 0x00000010
A14 : 0x00000000 A15 : 0x3fc91d98 SAR : 0x00000010 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000010 LBEG : 0x42004dec LEND : 0x42004e4f LCOUNT : 0x00000003
Backtrace: 0x42002898:0x3fcebd80 0x42002925:0x3fcebdb0 0x42002930:0x3fcebdd0 0x4200184d:0x3fcebdf0 0x420058da:0x3fcebe20
```
Using the [EspExceptionDecoder](https://github.com/me-no-dev/EspExceptionDecoder) to decode the dump (only works in Arduino 1.8.19) with the [ELF file](https://github.com/Bodmer/TFT_eSPI/files/15031350/minimal_tft.ino.elf.zip) from the build gives this:
```
PC: 0x4200289b: TFT_eSPI::writecommand(unsigned char) at C:\Users\stompp\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp line 81
EXCVADDR: 0x00000010
Decoding stack results
0x42002898: TFT_eSPI::writecommand(unsigned char) at C:\Users\stompp\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp line 81
0x42002925: TFT_eSPI::init(unsigned char) at C:\Users\stompp\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp line 692
0x42002930: TFT_eSPI::begin(unsigned char) at C:\Users\stompp\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp line 603
0x4200184d: setup() at C:\DEV\ESP32\minimal_tft/minimal_tft.ino line 7
0x420058da: loopTask(void*) at C:\Users\stompp\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.15\cores\esp32\main.cpp line 42
```
I've minimized the code to the following:
```C
#include <SPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
Serial.begin(115200);
tft.begin();
}
void loop() {
}
```
My setup is the following:
IDE: Arduino 1.8.19 & 2.3.2
TFT_eSPI version: 2.5.43
Board package version: [2.0.15](https://github.com/espressif/arduino-esp32/releases/download/2.0.15/esp32-2.0.15.zip)
Processor: [ESP32-S3](https://github.com/Freenove/Freenove_ESP32_S3_WROOM_Board)
TFT driver: [GC9A01](https://www.waveshare.com/wiki/1.28inch_LCD_Module?amazon)
Interface: SPI
The [setup file](https://github.com/Bodmer/TFT_eSPI/files/15031361/Setup406_GC9A01_ESP32.zip) is a copy of 46 with a different MOSI pin. It's added to the `User_Setup_Select.h` file and the `User_Setup.h` is set to use the GC9A01 driver.
opened 02:30AM - 29 Apr 24 UTC
in board manger v 2.0.15 we have this:
```
Rebooting...
⸮ESP-ROM:esp32s3-20… 210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT)
Saved PC:0x4037736c
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x4bc
load:0x403c9700,len:0xbd8
load:0x403cc700,len:0x2a0c
entry 0x403c98d0
Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x420037ee PS : 0x00060a30 A0 : 0x820038c8 A1 : 0x3fcebbd0
A2 : 0x00000010 A3 : 0x00000000 A4 : 0x60004000 A5 : 0x0000000b
A6 : 0x000000ff A7 : 0x00000000 A8 : 0x08000000 A9 : 0x3fcebba0
A10 : 0x3fc95938 A11 : 0x00000001 A12 : 0xffffffff A13 : 0x00000000
A14 : 0x00004000 A15 : 0x3fc91e3c SAR : 0x00000010 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000010 LBEG : 0x42005d1c LEND : 0x42005d7f LCOUNT : 0x00000000
Backtrace: 0x420037eb:0x3fcebbd0 0x420038c5:0x3fcebc00 0x420025a9:0x3fcebc20 0x42006926:0x3fcebc50
```
esp32s3
Demo_3D_cube.ino
ST7796
with or without touch
any frequency!
but in board manger v 2.0.14 it works.
opened 01:52PM - 16 May 24 UTC
Device crashes at boot.
Open issue in Arduino repo https://github.com/espressif… /arduino-esp32/issues/9618#issuecomment-2113344119
and
https://github.com/Xinyuan-LilyGO/T-Dongle-S3/issues/26
opened 02:45AM - 21 May 24 UTC
The issue that I am encountering is that a "Guru Meditation Error: Core 1 panic… 'ed (StoreProhibited). Exception was unhandled." just prior to executing the tft.init() function. This issue appears to be only graphics bases since I can execute this sketch with only Serial.println("..."); calls. I can use the Adafruit_GFX.h with the Adafruit_ST7789.h driver to do a test on a GFX application.
During an update something changed and I am at a loss to determine the root cause. Wiring is correct ( I have checked it many times).
1. IDE - Arduino version 2.3.2 CLI version 0.35.3
2. TFT_eSPI - version 2.5.43
3. Board Version - esp32 version 3.0.0.rc3 (I have regressed it back to ESP version 2.0.16 with no change in functionality, still reboots).
4. PROCESSOR - ESP32-S3
5. TFT Driver - ST7789 (TFT_eSPI sourced)
6. TFT Interface - SPI
See the following attached files for additional information you require:
[User_Setup.zip](https://github.com/Bodmer/TFT_eSPI/files/15383585/User_Setup.zip)
Sketch:
[WIFI_Channel_List.zip](https://github.com/Bodmer/TFT_eSPI/files/15383589/WIFI_Channel_List.zip)
TFT ; ST7789 IC 1.9 Inch ips Full View TFT Display LCD Color Module SPI Serial Port HD 170x320 MSP430 and C51 Programs
I have only one of these displays....

DEBUG Output:
[Debug Output.zip](https://github.com/Bodmer/TFT_eSPI/files/15383726/Debug.Output.zip)
Plus further information as appropriate to the problem:
1. TFT to processor connections used
2. A zip file containing your setup file (just drag and drop in message window - do not paste in long files!)
3. A zip file containing a simple and complete example sketch that demonstrates the problem but needs no special hardware sensors or libraries.
4. Screen shot pictures showing the setup

Thanks, John Taylor
I can be reached at taylorjw.nc@att.net
opened 09:24AM - 04 Aug 24 UTC
1. I get a Guru Meditation Error: Core 1 panic'ed, after loading an LVGL file t… hat is running well on ESP32-3248S035, using ESP32wroom , but due to insufficient memory to include BLE, I needed to go to ESP32-S3, with a separate TFT display , ILI9486. For this, I wrote a user_setup file, as I could not find any existing one to match this combination. I attached the user set up file.
[ILI9486.txt](https://github.com/user-attachments/files/16486968/ILI9486.txt)
2.Arduino IDE 2.3.2
3. TFT_eSPI library version 2.5.43
4. Board package version 3.0.4 esp32 by espressif systems
5. ESP32 S3 DevkitC-1
6. TFT driver ILI9486
7. Interface type SPI
Plus further information as appropriate to the problem:
1. TFT connections : ILI9486.txt , attached file, in fact user_setup.h file.
2. A zip file containing your setup file (just drag and drop in message window - do not paste in long files!)
3. ESP Exception Decoder
Sketch: ui FQBN: esp32:esp32:esp32s3
PC : 0x420267fa PS : 0x00060430 A0 : 0x820269d8 A1 : 0x3fcebd20
A2 : 0x3fc969a8 A3 : 0x00000000 A4 : 0x60004000 A5 : 0x00000010
A6 : 0x000000ff A7 : 0xff000000 A8 : 0x08000000 A9 : 0x3fcebcf0
A10 : 0x3fcaa72c A11 : 0x00000001 A12 : 0x02625a00 A13 : 0xffffffff
A14 : 0x00000031 A15 : 0x00000000 SAR : 0x00000006 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000010 LBEG : 0x4202ae24 LEND : 0x4202ae6b LCOUNT : 0x00000003
Backtrace: 0x420267f7:0x3fcebd20 0x420269d5:0x3fce
PC: 0x420267fa: is in TFT_eSPI::writecommand(unsigned char) (i:\arduino\hardware\espressif\esp32\sketches\S035\SjotterS035\libraries\TFT_eSPI\TFT_eSPI.cpp:81).
EXCVADDR: 0x00000010
Decoding stack results
0x420267f7: is in TFT_eSPI::writecommand(unsigned char) (i:\arduino\hardware\espressif\esp32\sketches\S035\SjotterS035\libraries\TFT_eSPI\TFT_eSPI.cpp:81).
0x420269d5: is in TFT_eSPI::init(unsigned char) (i:\arduino\hardware\espressif\esp32\sketches\S035\SjotterS035\libraries\TFT_eSPI\TFT_eSPI.cpp:692).
Any suggestions are welcome.
thanks in advance
best regards
Ludo
opened 12:00PM - 27 Aug 24 UTC
Guru Meditation Error: Core 0 panic'ed (Store access fault). Exception was unha… ndled.
Core 0 register dump:
MEPC : 0x4205061a RA : 0x42050612 SP : 0x3fca6c80 GP : 0x3fc8c600
TP : 0x3fc89c68 T0 : 0x00000003 T1 : 0xffc3ffff T2 : 0x00000020
S0/FP : 0x3fca2b50 S1 : 0x00000000 A0 : 0x00000001 A1 : 0xffffffff
A2 : 0x00000000 A3 : 0xfdffffff A4 : 0x08000000 A5 : 0x00000010
A6 : 0xffffffff A7 : 0x04c4b400 S2 : 0x00000002 S3 : 0x00000001
S4 : 0x000000a0 S5 : 0x3fc8dd6c S6 : 0x00000a00 S7 : 0x00000000
S8 : 0x00000000 S9 : 0x00000000 S10 : 0x00000000 S11 : 0x00000000
T3 : 0x0196e6aa T4 : 0x0000000f T5 : 0x003c0000 T6 : 0x00000003
MSTATUS : 0x00001881 MTVEC : 0x40380001 MCAUSE : 0x00000007 MTVAL : 0x00000010
MHARTID : 0x00000000
opened 08:03AM - 05 Feb 25 UTC
opened 06:48AM - 23 Feb 25 UTC
hi,
with this package: framework-arduinoespressif32 @ 3.20017.241212+sha.dcc110… 5b
it cannot initialise the screen:
```
06:45:32.950 > Guru Meditation Error: Core 0 panic'ed (Store access fault). Exception was unhandled.
06:45:32.950 >
06:45:32.950 > Core 0 register dump:
06:45:32.950 > MEPC : 0x4201d494 RA : 0x4201d48c SP : 0x3fcaa080 GP : 0x3fc92c00
06:45:32.963 > TP : 0x3fc62ee8 T0 : 0x00000003 T1 : 0xffc3ffff T2 : 0x00000020
06:45:32.967 > S0/FP : 0x3fc96eb4 S1 : 0x00000000 A0 : 0x00000001 A1 : 0xffffffff
06:45:32.978 > A2 : 0x00000003 A3 : 0x00000000 A4 : 0x08000000 A5 : 0x00000010
06:45:32.984 > A6 : 0xffffffff A7 : 0x04c4b400 S2 : 0x00000001 S3 : 0x00000000
06:45:32.989 > S4 : 0x3fc92464 S5 : 0x3c173000 S6 : 0x3fc92441 S7 : 0x3fc97000
06:45:33.000 > S8 : 0x3fc97000 S9 : 0x00000001 S10 : 0x3fc97000 S11 : 0x3fc97000
06:45:33.006 > T3 : 0x02625a00 T4 : 0x0000000f T5 : 0x003c0000 T6 : 0x00000003
06:45:33.017 > MSTATUS : 0x00001881 MTVEC : 0x40380001 MCAUSE : 0x00000007 MTVAL : 0x00000010
06:45:33.022 > MHARTID : 0x00000000
06:45:33.022 >
06:45:33.022 > Stack memory:
06:45:33.028 > 3fcaa080: 0x00000003 0x00000000 0x03938700 0x00000301 0x3fc97000 0x3fc9d000 0x3fc96eb4 0x4201dc84
#0 0x3fc96eb4 in ?? at src/main.cpp:31
#1 0x4201dc84 in TFT_eSPI::init(unsigned char) at lib/TFT_eSPI/TFT_eSPI.cpp:693
```
installed:
```
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
TFT_eSPI @ 2.5.43
```
works ok with:
```
PACKAGES:
- framework-arduinoespressif32 @ 2.0.9
- tool-esptoolpy @ 1.40602.0 (4.6.2)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
TFT_eSPI @ 2.5.43
```
opened 05:43PM - 17 May 25 UTC
I use Arduino IDE 2.3.6 on Xubuntu AppImage. Library version 2.5.43. I tried 480… x320 keyboard example but it keep reseting my esp32 s3.
```
ELF file SHA256: eaac62228
Rebooting...
���΄(��J19�L��!�M�Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
A2 : 0x3fc97e94 A3 : 0x00000000 A4 : 0x00000005 A5 : 0x00000006
A6 : 0x000000ff A7 : 0x60004000 A8 : 0x00000010 A9 : 0x08000000
A10 : 0x3fc97fb8 A11 : 0x02625a00 A12 : 0x00000001 A13 : 0x00000000
A14 : 0x02625a00 A15 : 0x3fca3178 SAR : 0x0000000a EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000010 LBEG : 0x40056f5c LEND : 0x40056f72 LCOUNT : 0xffffffff
Backtrace: 0x420043d8:0x3fca31a0 0x420044b1:0x3fca31d0 0x420024a2:0x3fca31f0 0x42008f6a:0x3fca3220 0x4037ca96:0x3fca3240
```
Here is the User_Setup
```
#ifndef USER_SETUP_LOADED // Lets PlatformIO users define settings in
// platformio.ini, see notes in "Tools" folder.
///////////////////////////////////////////////////////
// User configuration selection lines are below //
///////////////////////////////////////////////////////
// Only ONE line below should be uncommented to define your setup. Add extra lines and files as needed.
//#include <User_Setup.h> // Default setup is root library folder
//#include <User_Setups/Setup1_ILI9341.h> // Setup file for ESP8266 configured for my ILI9341
//#include <User_Setups/Setup2_ST7735.h> // Setup file for ESP8266 configured for my ST7735
//#include <User_Setups/Setup3_ILI9163.h> // Setup file for ESP8266 configured for my ILI9163
//#include <User_Setups/Setup4_S6D02A1.h> // Setup file for ESP8266 configured for my S6D02A1
//#include <User_Setups/Setup5_RPi_ILI9486.h> // Setup file for ESP8266 configured for my stock RPi TFT
//#include <User_Setups/Setup6_RPi_Wr_ILI9486.h> // Setup file for ESP8266 configured for my modified RPi TFT
//#include <User_Setups/Setup7_ST7735_128x128.h> // Setup file for ESP8266 configured for my ST7735 128x128 display
//#include <User_Setups/Setup8_ILI9163_128x128.h> // Setup file for ESP8266 configured for my ILI9163 128x128 display
//#include <User_Setups/Setup9_ST7735_Overlap.h> // Setup file for ESP8266 configured for my ST7735
//#include <User_Setups/Setup10_RPi_touch_ILI9486.h> // Setup file for ESP8266 configured for ESP8266 and RPi TFT with touch
//#include <User_Setups/Setup11_RPi_touch_ILI9486.h> // Setup file configured for ESP32 and RPi TFT with touch
//#include <User_Setups/Setup12_M5Stack_Basic_Core.h>// Setup file for the ESP32 based M5Stack (Basic Core only)
//#include <User_Setups/Setup13_ILI9481_Parallel.h> // Setup file for the ESP32 with parallel bus TFT
//#include <User_Setups/Setup14_ILI9341_Parallel.h> // Setup file for the ESP32 with parallel bus TFT
//#include <User_Setups/Setup15_HX8357D.h> // Setup file for ESP8266 configured for HX8357D
//#include <User_Setups/Setup16_ILI9488_Parallel.h> // Setup file for the ESP32 with parallel bus TFT
//#include <User_Setups/Setup17_ePaper.h> // Setup file for ESP8266 and any Waveshare ePaper display
//#include <User_Setups/Setup18_ST7789.h> // Setup file for ESP8266 configured for ST7789
//#include <User_Setups/Setup19_RM68140_Parallel.h> // Setup file configured for RM68140 with parallel bus
//#include <User_Setups/Setup20_ILI9488.h> // Setup file for ESP8266 and ILI9488 SPI bus TFT
//#include <User_Setups/Setup21_ILI9488.h> // Setup file for ESP32 and ILI9488 SPI bus TFT
//#include <User_Setups/Setup22_TTGO_T4.h> // Setup file for ESP32 and TTGO T4 version 1.2
//#include <User_Setups/Setup22_TTGO_T4_v1.3.h> // Setup file for ESP32 and TTGO T4 version 1.3
//#include <User_Setups/Setup23_TTGO_TM.h> // Setup file for ESP32 and TTGO TM ST7789 SPI bus TFT
//#include <User_Setups/Setup24_ST7789.h> // Setup file for DSTIKE/ESP32/ESP8266 configured for ST7789 240 x 240
//#include <User_Setups/Setup25_TTGO_T_Display.h> // Setup file for ESP32 and TTGO T-Display ST7789V SPI bus TFT
//#include <User_Setups/Setup26_TTGO_T_Wristband.h> // Setup file for ESP32 and TTGO T-Wristband ST7735 SPI bus TFT
#include <User_Setups/Setup27_RPi_ST7796_ESP32.h> // ESP32 RPi MHS-4.0 inch Display-B
//#include <User_Setups/Setup28_RPi_ST7796_ESP8266.h> // ESP8266 RPi MHS-4.0 inch Display-B
//#include <User_Setups/Setup29_ILI9341_STM32.h> // Setup for Nucleo board
//#include <User_Setups/Setup30_ILI9341_Parallel_STM32.h> // Setup for Nucleo board and parallel display
//#include <User_Setups/Setup31_ST7796_Parallel_STM32.h> // Setup for Nucleo board and parallel display
//#include <User_Setups/Setup32_ILI9341_STM32F103.h> // Setup for "Blue/Black Pill"
//#include <User_Setups/Setup33_RPi_ILI9486_STM32.h> // Setup for Nucleo board
//#include <User_Setups/Setup34_ILI9481_Parallel_STM32.h> // Setup for Nucleo board and parallel display
//#include <User_Setups/Setup35_ILI9341_STM32_Port_Bus.h> // Setup for STM32 port A parallel display
//#include <User_Setups/Setup36_RPi_touch_ST7796.h> // Setup file configured for ESP32 and RPi ST7796 TFT with touch
//#include <User_Setups/Setup42_ILI9341_ESP32.h> // Setup file for ESP32 and SPI ILI9341 240x320
//#include <User_Setups/Setup43_ST7735.h> // Setup file for ESP8266 & ESP32 configured for my ST7735S 80x160
//#include <User_Setups/Setup44_TTGO_CameraPlus.h> // Setup file for ESP32 and TTGO T-CameraPlus ST7789 SPI bus TFT 240x240
//#include <User_Setups/Setup45_TTGO_T_Watch.h> // Setup file for ESP32 and TTGO T-Watch ST7789 SPI bus TFT 240x240
//#include <User_Setups/Setup46_GC9A01_ESP32.h> // Setup file for ESP32 and GC9A01 SPI bus TFT 240x240
//#include <User_Setups/Setup47_ST7735.h> // Setup file for ESP32 configured for ST7735 128 x 128 animated eyes
//#include <User_Setups/Setup50_SSD1963_Parallel.h> // Setup file for ESP32 and SSD1963 TFT display
//#include <User_Setups/Setup51_LilyPi_ILI9481.h> // Setup file for LilyGo LilyPi with ILI9481 display
//#include <User_Setups/Setup52_LilyPi_ST7796.h> // Setup file for LilyGo LilyPi with ST7796 display
//#include <User_Setups/Setup60_RP2040_ILI9341.h> // Setup file for RP2040 with SPI ILI9341
//#include <User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h> // Setup file for RP2040 with PIO SPI ILI9341
//#include <User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h> // Setup file for RP2040 with SPI ILI9341
//#include <User_Setups/Setup66_Seeed_XIAO_Round.h> // Setup file for Seeed XIAO with GC9A01 240x240
//#include <User_Setups/Setup70_ESP32_S2_ILI9341.h> // Setup file for ESP32 S2 with SPI ILI9341
//#include <User_Setups/Setup70b_ESP32_S3_ILI9341.h> // Setup file for ESP32 S3 with SPI ILI9341
//#include <User_Setups/Setup70c_ESP32_C3_ILI9341.h> // Setup file for ESP32 C3 with SPI ILI9341
//#include <User_Setups/Setup70d_ILI9488_S3_Parallel.h> // Setup file for ESP32 S3 with SPI ILI9488
//#include <User_Setups/Setup71_ESP32_S2_ST7789.h> // Setup file for ESP32 S2 with ST7789
//#include <User_Setups/Setup72_ESP32_ST7789_172x320.h> // Setup file for ESP32 with ST7789 1.47" 172x320
//#include <User_Setups/Setup100_RP2040_ILI9488_parallel.h> // Setup file for Pico/RP2040 with 8-bit parallel ILI9488
//#include <User_Setups/Setup101_RP2040_ILI9481_parallel.h> // Setup file for Pico/RP2040 with 8-bit parallel ILI9481
//#include <User_Setups/Setup102_RP2040_ILI9341_parallel.h> // Setup file for Pico/RP2040 with 8-bit parallel ILI9341
//#include <User_Setups/Setup103_RP2040_ILI9486_parallel.h> // Setup file for Pico/RP2040 with 8-bit parallel ILI9486
//#include <User_Setups/Setup104_RP2040_ST7796_parallel.h> // Setup file for Pico/RP2040 with 8-bit parallel ST7796
//#include <User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h> // Setup file for RP2040 16-bit parallel display
//#include <User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h> // Setup file for RP2040 16-bit parallel display
//#include <User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h> // Setup file for RP2040 16-bit parallel display
//#include <User_Setups/Setup108_RP2040_ST7735.h> // Setup file for Waveshare RP2040 board with onboard ST7735 0.96" 160x80 display
//#include <User_Setups/Setup135_ST7789.h> // Setup file for ESP8266 and ST7789 135 x 240 TFT
//#include <User_Setups/Setup136_LilyGo_TTV.h> // Setup file for ESP32 and Lilygo TTV ST7789 SPI bus TFT 135x240
//#include <User_Setups/Setup137_LilyGo_TDisplay_RP2040.h> // Setup file for Lilygo T-Display RP2040 (ST7789 on SPI bus with 135x240 TFT)
//#include <User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h> // Setup file for Pico Explorer Base by Pimoroni for RP2040 (ST7789 on SPI bus with 240x240 TFT)
//#include <User_Setups/Setup200_GC9A01.h> // Setup file for ESP32 and GC9A01 240 x 240 TFT
//#include <User_Setups/Setup201_WT32_SC01.h> // Setup file for ESP32 based WT32_SC01 from Seeed
//#include <User_Setups/Setup202_SSD1351_128.h> // Setup file for ESP32/ESP8266 based SSD1351 128x128 1.5inch OLED display
//#include <User_Setups/Setup203_ST7789.h> // Setup file for ESP32/ESP8266 based ST7789 240X280 1.69inch TFT
//#include <User_Setups/Setup204_ESP32_TouchDown.h> // Setup file for the ESP32 TouchDown based on ILI9488 480 x 320 TFT
//#include <User_Setups/Setup205_ESP32_TouchDown_S3.h> // Setup file for the ESP32 TouchDown S3 based on ILI9488 480 x 320 TFT
//#include <User_Setups/Setup206_LilyGo_T_Display_S3.h> // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFT
//#include <User_Setups/Setup207_LilyGo_T_HMI.h> // For the LilyGo T-HMI S3 based ESP32S3 with ST7789 240 x 320 TFT
//#include <User_Setups/Setup209_LilyGo_T_Dongle_S3.h> // For the LilyGo T-Dongle S3 based ESP32 with ST7735 80 x 160 TFT
//#include <User_Setups/Setup210_LilyGo_T_Embed_S3.h> // For the LilyGo T-Embed S3 based ESP32S3 with ST7789 170 x 320 TFT
//#include <User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h> // For the LilyGo T-QT Pro S3 based ESP32S3 with GC9A01 128 x 128 TFT
// #include <User_Setups/Setup212_LilyGo_T_PicoPro.h> // For the LilyGo T-PICO-Pro with ST7796 222 x 480 TFT
// #include <User_Setups/Setup213_LilyGo_T_Beam_Shield.h> // For the LilyGo T-BEAM V1.x with ST7796 222 x 480 TFT
//#include <User_Setups/Setup250_ESP32_S3_Box_Lite.h> // For the ESP32 S3 Box Lite
//#include <User_Setups/Setup251_ESP32_S3_Box.h> // For the ESP32 S3 Box
//#include <User_Setups/Setup301_BW16_ST7735.h> // Setup file for Bw16-based boards with ST7735 160 x 80 TFT
//#include <User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h> // Setup file for Waveshare ESP32-S3-Touch-LCD-1.28 board with GC9A01 240*240 TFT
//#include <User_Setups/SetupX_Template.h> // Template file for a setup
//#include <User_Setups/Dustin_ILI9488.h> // Setup file for Dustin Watts PCB with ILI9488
//#include <User_Setups/Dustin_ST7796.h> // Setup file for Dustin Watts PCB with ST7796
//#include <User_Setups/Dustin_ILI9488_Pico.h> // Setup file for Dustin Watts Pico PCB with ST7796
//#include <User_Setups/Dustin_ST7789_Pico.h> // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board
//#include <User_Setups/Dustin_GC9A01_Pico.h> // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board
//#include <User_Setups/Dustin_GC9A01_ESP32.h> // Setup file for Dustin Watts PCB with GC9A01 240 x 240 on 3.3V adapter board
//#include <User_Setups/Dustin_STT7789_ESP32.h> // Setup file for Dustin Watts PCB with ST7789 240 x 240 on 3.3V adapter board
//#include <User_Setups/Dustin_ILI9341_ESP32.h> // Setup file for Dustin Watts PCB with ILI9341
//#include <User_Setups/ILI9225.h>
#endif // USER_SETUP_LOADED
```
```
// USER DEFINED SETTINGS
// Set driver type, fonts to be loaded, pins used and SPI control method etc.
//
// See the User_Setup_Select.h file if you wish to be able to define multiple
// setups and then easily select which setup file is used by the compiler.
//
// If this file is edited correctly then all the library example sketches should
// run without the need to make any more changes for a particular hardware setup!
#define USER_SETUP_ID 27
// ##################################################################################
//
// Section 0. Call up the right driver file and any options for it
//
// ##################################################################################
// Display type - only define if RPi display
//#define RPI_DISPLAY_TYPE
// Only define one driver
#define ST7796_DRIVER
// ##################################################################################
//
// Section 1. Define the pins that are used to interface with the display here
//
// ##################################################################################
// >>>>> EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP <<<<<
// The ESP32 hardware SPI can be mapped to any pins, these are the recommended default
#define TFT_MISO 5
#define TFT_MOSI 6
#define TFT_SCLK 4
#define TFT_CS 7 // Chip select control pin
#define TFT_DC 9 // Data Command control pin
#define TFT_RST 10 // Reset pin (could connect to RST pin)
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
#define TOUCH_CS 1 // Chip select pin (T_CS) of touch screen
// ##################################################################################
//
// Section 2. Not used for ESP32
//
// ##################################################################################
// ##################################################################################
//
// Section 3. Define the fonts that are to be used here
//
// ##################################################################################
// Comment out the #defines below with // to stop that font being loaded
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
// normally necessary. If all fonts are loaded the extra FLASH space required is
// about 17Kbytes. To save FLASH space only enable the fonts you need!
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT
// ##################################################################################
//
// Section 4. Not used
//
// ##################################################################################
// ##################################################################################
//
// Section 5. Other options
//
// ##################################################################################
// Define the SPI clock frequency, this affects the graphics rendering speed. Too
// fast and the TFT driver will not keep up and display corruption appears.
// With an RPi ST7796 MH4.0 display 80MHz is OK for ESP32, 40MHz maximum for ESP8266
// #define SPI_FREQUENCY 20000000
#define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 80000000
// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
// then uncomment the following line:
//#define USE_HSPI_PORT
// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY 2500000
```
opened 09:00AM - 24 May 25 UTC
Hello Bodmer,
I'm encountering a persistent crash when trying to use TFT_eSPI w… ith an ESP32-S3 on a Freenove ESP32-S3 WROOM N8R8 board. The crash is a Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled. EXCVADDR: 0x00000010 occurring during the tft.begin() call.
I've confirmed that PSRAM (8MB OPI) is active in the firmware when using the freenove_esp32_s3_wroom board definition with the latest PlatformIO espressif32 platform.
Crucially, the Adafruit_ILI9341 library works perfectly on the exact same hardware, pins, and board configuration (Freenove ESP32-S3 WROOM with PSRAM active). This strongly suggests the issue is specific to TFT_eSPI's interaction with the ESP32-S3 SPI/FSPI.
Additionally, TFT_eSPI (v2.5.30) does work without crashing if I use an older ESP32 Arduino Core (2.0.11 via PlatformIO espressif32 @ 6.4.0) with a generic esp32-s3-devkitc-1 board definition. However, with this older setup, PSRAM is reported as "No PSRAM" in the build and fails to initialize at runtime, making it unsuitable for my project.
This leads me to believe the crash might be related to TFT_eSPI's handling of ESP32-S3 with newer Arduino Core versions (>2.0.14, as some online discussions suggest).
Hardware Details:
Microcontroller: ESP32-S3 (on Freenove ESP32-S3 WROOM N8R8 board - 8MB Flash, 8MB OPI PSRAM)
Display: ILI9341
Pins Used:
MOSI: GPIO 11
[platformio.ini.txt](https://github.com/user-attachments/files/20422004/platformio.ini.txt)
[main.cpp.txt](https://github.com/user-attachments/files/20422005/main.cpp.txt)
[crash log.txt](https://github.com/user-attachments/files/20422006/crash.log.txt)
SCLK: GPIO 12
CS: GPIO 10
DC: GPIO 9
RST: -1 (Not connected, display has pull-up)
Software Environment (PlatformIO) for Crashing TFT_eSPI setup:
platform = espressif32 (resolves to 6.10.0, using framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b which is based on Arduino Core ~2.0.17)
board = freenove_esp32_s3_wroom (Build log confirms "8MB Flash / 8MB PSRAM")
TFT_eSPI versions tested that crash: 2.5.43, 2.5.30
Working Adafruit_ILI9341 Configuration (for comparison):
PlatformIO platform = espressif32 (latest, 6.10.0)
PlatformIO board = freenove_esp32_s3_wroom (Build log confirms "8MB Flash / 8MB PSRAM")
Pins: MOSI=11, SCLK=12, CS=10, DC=9, RST=-1
This setup works perfectly.
[env:adafruit_freenove_s3_test_working]
platform = espressif32
board = freenove_esp32_s3_wroom
framework = arduino
monitor_speed = 115200
lib_deps =
adafruit/Adafruit ILI9341
adafruit/Adafruit GFX Library
main.cpp
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST -1
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); // Uses default SPI pins (MOSI=11, SCLK=12 for S3 devkit variant)
void setup() {
Serial.begin(115200);
for (int i = 0; i < 10 && !Serial; ++i) { delay(100); }
Serial.println("\n>>> Adafruit ILI9341 Test on Freenove ESP32-S3 WROOM <<<");
if(psramFound()){
Serial.printf("PSRAM Total: %u, Free: %u\n", ESP.getPsramSize(), ESP.getFreePsram());
} else {
Serial.println("PSRAM NOT FOUND!");
}
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_MAGENTA);
tft.setCursor(10, 50);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Adafruit + Freenove S3 WORKS!");
Serial.println("Adafruit display sketch finished setup. Display works.");
}
void loop() {}
opened 11:25PM - 12 May 24 UTC
closed 10:04AM - 03 Jun 24 UTC
Type: Bug
Area: ESP-IDF related
Chip: ESP32-C3
Chip: ESP32-S3
Status: Needs investigation
### Board
lilygo-t-dongle-s3
### Device Description
ESP32-s3 dev module…
### Hardware Configuration
Dongle has a winbond - W25Q32 chip + small st3775 lcd screen built in:
https://github.com/Xinyuan-LilyGO/T-Dongle-S3
### Version
latest master (checkout manually)
### IDE Name
Arduino IDE 1.8.19
### Operating System
Windows 10
### Flash frequency
QUI 80 mhz
### PSRAM enabled
no
### Upload speed
921600
### Description
Sketch works fine, compiles and runs fine using esp32 board definitions version 2.0.14.
When the board is updated via Arduino board manager to a greater version 2.0.15+2.0.16 the sketch compiles fine and uploads but the dongle doesn't run the code anymore. I traced the fault to this file:
C:\Users\someuser\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.16\tools\sdk\esp32s3\include\soc\esp32s3\include\soc\soc.h
A new entry was added to line 122:
#define REG_SPI_BASE(i) (((i)>=2) ? (DR_REG_SPI2_BASE + (i-2) * 0x1000) : (0)) // GPSPI2 and GPSPI3
This line when commented out lets my code run fine on my dongle again using the 2.0.15+2.0.16, somehow though that line of code breaks the lilygo-t-dongle from being able to run the compiled and uploaded code.
### Sketch
```cpp
No issue with the sketch using the modded 2.0.16\tools\sdk\esp32s3\include\soc\esp32s3\include\soc\soc.h file with the line commented out as above.
```
### Debug Message
```plain
No debug message is displayed.
```
### Other Steps to Reproduce
_No response_
### I have checked existing issues, online documentation and the Troubleshooting Guide
- [X] I confirm I have checked existing issues, online documentation and Troubleshooting guide.
So I think that @vsl 's workaround of downgrading their "esp32" boards platform installation to 2.0.14 is reasonable. I haven't read through the discussions in all those reports I linked above. It is possible the community has found an alternative workaround and described it in one of those, so it would be worth looking through them if you are unsatisfied with using the old version of the "esp32" platform.
For now, I would recommend focusing on the "screen is dead" problem @vsl is having now.
vsl
June 8, 2025, 12:49pm
6
thanks for that...I had seen most of them, but the last one from May 25(stenliczz) I hadn't seen. I followed that advice but it didn't make any difference. The poster has asked for an update from Bodmer, but so far no reply.
I continue to fiddle.
I have same isuise. ESP-IDF v5.4.1
Iwill write one more bug report.
Do you have any idea how to work with ILI9486 and LVGL lib in ESP-IDF?
vsl
July 5, 2025, 10:01am
8
I'll be pleased to hear how you get on with the bug report.
I'm sorry but I don't have any experience of using the LVGL lib or esp-idf.
system
Closed
January 1, 2026, 10:02am
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.