ESP32 ILI9341 TFT_eSPI white screen

The ILI9341 and the ESP32 are rather capable together. Full code attached.

#include "SPI.h"
#include "./Adafruit_GFX.h"F
#include "./Adafruit_ILI9341.h"

const char *progname = "\n\n ILI9341 GfxTest...(20200418)";
const char *xxxx = "- requires Adafruit_ILI9341_050519";

#define USE_HSPI_PORT                                 // optional it seems

// Software Pin Name  // GPIO: HSPI    VSPI           //  ILI9341 J2      // Notes: all HSPI pins can remap
// -------------------------------------------------- //    1 VDD 3.3V
// -------------------------------------------------- //    2 GND
#define HSP_CS                  15                    //    3 CS          <========== xSPI centric
#define VSP_CS                           5
#define HSP_RST                 27                    //    4 RST         <========== User Defined (Tie to VDD)
#define VSP_RST                         25
#define HSP_DC                  26                    //    5 D/C         <========== User Defined
#define VSP_DC                          16
#define HSP_MOSI                13                    //    6 SDI-MOSI    <========== xSPI centric
#define VSP_MOSI                        23      
#define HSP_SCLK                14                    //    7 SCK         <========== xSPI centric
#define VSP_SCLK                        18
// -------------------------------------------------- //    8 LED                     !!! 3.3V NOT 5V !!!
#define HSP_MISO                12                    //    9 SDO-MISO    <========== xSPI centric (Not used ILI9341)
#define VSP_MISO                        19

// VSPI (default under Arduino)
SPIClass  SPI1(VSPI);
// Use ESP32 hardware VSPI and above defines
//Adafruit_ILI9341 tft0=Adafruit_ILI9341(VSP_CS,VSP_DC,VSP_RST);
Adafruit_ILI9341 tft0 = Adafruit_ILI9341(&SPI1, VSP_DC, VSP_CS, VSP_RST);

// HSPI 
SPIClass  SPI2(HSPI);
// static const int spiClk = 1000000;           // 1 MHz ... default is 40MHz
// Use ESP32 hardware HSPI and above defines
Adafruit_ILI9341 tft1 = Adafruit_ILI9341(&SPI2, HSP_DC, HSP_CS, HSP_RST);


void setup(void) 
{
  pinMode(VSP_CS, OUTPUT); //VSPI SS (may not be required for 'default')
  pinMode(HSP_CS, OUTPUT); //HSPI SS
  Serial.begin(115200);
  Serial.println(progname); 
  Serial.println(xxxx);
  tft0.begin();
  tft1.begin();

  // read diagnostics (optional but can help debug problems)
  uint8_t x0 = tft0.readcommand8(ILI9341_RDMODE);
  uint8_t x1 = tft1.readcommand8(ILI9341_RDMODE);
  Serial.print("Display Power Mode 0: 0x"); Serial.println(x0, HEX);
  Serial.print("Display Power Mode 1: 0x"); Serial.println(x1, HEX);
  x0 = tft0.readcommand8(ILI9341_RDMADCTL);
  x1 = tft1.readcommand8(ILI9341_RDMADCTL);
  Serial.print("MADCTL Mode 0: 0x"); Serial.println(x0, HEX);
  Serial.print("MADCTL Mode 1: 0x"); Serial.println(x1, HEX);
  x0 = tft0.readcommand8(ILI9341_RDPIXFMT);
  x1 = tft1.readcommand8(ILI9341_RDPIXFMT);
  Serial.print("Pixel Format 0: 0x"); Serial.println(x0, HEX);
  Serial.print("Pixel Format 1: 0x"); Serial.println(x1, HEX);
  x0 = tft0.readcommand8(ILI9341_RDIMGFMT);
  x1 = tft1.readcommand8(ILI9341_RDIMGFMT);
  Serial.print("Image Format 0: 0x"); Serial.println(x0, HEX);
  Serial.print("Image Format 1: 0x"); Serial.println(x1, HEX);
  x0 = tft0.readcommand8(ILI9341_RDSELFDIAG);
  x1 = tft1.readcommand8(ILI9341_RDSELFDIAG);
  Serial.print("Self Diagnostic 0: 0x"); Serial.println(x0, HEX);
  Serial.print("Self Diagnostic 1: 0x"); Serial.println(x1, HEX);
}

void loop(void) 
{
  for(uint8_t rotation=0; rotation<4; rotation++) {
    tft0.setRotation(rotation);
    testText0();
    delay(1000);
  }
  gfxtest0();

  for(uint8_t rotation=0; rotation<4; rotation++) {
    tft1.setRotation(rotation);
    testText1();
    delay(1000);
  }
  gfxtest1();
}


ESP32_HSPI_VSPI_ILI9341_OK.zip (56.8 KB)

1 Like