ST7796 on ESP32-WROOM-32, white screen

Hello all,
The forum has changed somewhat, so if this is not in the correct section, please feel free to move it, or let me know.

Anyway, after many years of arduino mega experience, I have decided to use an esp32 board, specifically the ESP32-WROOM-32 board. (Diagram attached.) I have a 4" TFT display with the XPT2046 touch controller, and try as I might, I cannot get the display to work. I am using the TFT-eSPI library, and my user setup file is as follows:

#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 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS   5   // Chip select control pin
#define TFT_DC    2   // Data Command control pin
#define TFT_RST   4   // 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 22     // 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

I successfully uploaded one of the example sketches, and the serial display shows the proper entries, hence I know the program actually uploaded. I am using the default VSPI SPI pins. I can't escape the feeling that I am overlooking something simple...any insight is greatly appreciated! I tried to keep the post short, so if I left out any relevant information, please let me know. Thank you.

board

This still may not work but try the ILI9488 driver instead

Is the ILI9488 compatible with the ST7796? I will try that in the morning...

Nope, no difference.

Another you can try but it is a different library, Adafruit_ST7796S_kbv.

That doesn't work either....they all compile and load, but no joy.

Try ILI9486.
Control that you have solid wiring.

I've tried the different libraries. I have 3 esp32 boards, and 3 displays. I've redone the wiring 4 times with new wires. Still just a white screen. I'm not sure what to try now.

When I load a program, the IDE lists the chip as an ESP32-D0WD-V3 (revision v3.1). I have tried all 3 board types that load successfully: ESP32 Dev Module, ESP32-WROOM_DA Module, and ESP32 Wrover Module. Other boards do not accept the program; is there a better board choice in the IDE? I am quite perplexed...

I've got chatgpt working on it...it can comb the internet 1000x faster than I can.

I finally got it. I'll post the setup files here when I get a minute. I'm not 100% sure what was wrong, as I haven't had the time to compare the original to the new one. ChatGPT was most helpful, as it wrote the initial setup file and a simple test program for a blue screen.

Here is the setup.h file that worked, in case anyone finds themselves in a similar situation.

#define ST7796_DRIVER

//-------------------------------------
// Display (TFT) pin definitions
#define TFT_CS     5     // Chip select control pin for TFT
#define TFT_DC     2     // Data Command control pin for TFT
#define TFT_RST    -1    // Reset pin for TFT (-1 if tied to EN)

// SPI interface
#define TFT_MOSI  23
#define TFT_SCLK  18
#define TFT_MISO  19    // Used by XPT2046, required

//-------------------------------------
// Touch screen (XPT2046) pin definition
#define USE_XPT2046_TOUCH0
#define TOUCH_CS   21    // Chip select pin for XPT2046
#define TOUCH_IRQ  -1    // Not used unless your screen has IRQ

// XPT2046 SPI uses the same MOSI, SCLK, and MISO as TFT
#define SPI_TOUCH_FREQUENCY  2500000

//-------------------------------------
// SPI frequencies
#define SPI_FREQUENCY        20000000    
#define SPI_READ_FREQUENCY   20000000    

//-------------------------------------
// Optional fonts to load
#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF

//-------------------------------------
// Rotation
#define TFT_ROTATION 3   

//-------------------------------------
// Optional: Touch calibration (replace these after running calibration)
#define TOUCH_CALIBRATION  256, 3643, 182, 3672, 1

I have the same issue with ESP32-C3 Super Mini and 4"TFT Display with ST7796S LCD driver and FT6336U touch driver.

25.07.03 Mod.
I solved this problem founding Reddit's post.
Downgrading ESP32 driver version to 2.0.14 and you will be fine.