ESP32 C3 Super Mini with GC9A01
Posted: Sat Aug 03, 2024 7:39 am
Hey,
I've been at it for almost a week, trying to connect my ESP C3 super mini to a round GC9A01 240x240. I've tried with both Micropython and ESP-IDF and am currently trying with Arduino IDE and the TFT_eSPI lib. In Arduino I've selected the MakerGO ESP32 C3 SuperMini. I found suggestions to use the ESP32 C3 DevModule, but that wasn't working ether.
I have already looked around a lot here in the forum and so on, and I have also adopted the most common pin assignment. This is the User_Setup.h
The Display has no MISO so it isn't connected to anything. The display also has a BLK pin. High = Backlight on so I haven't connected it ether.
For test Code im Using an example from the lib: Colour_Test:
But it looks like my ESP is already crashing in the setup without a backtrace. With some prints and removing code, I was able to figure out, that the problem is with tft.init(). And in there with: writecommand(0x00); (Which is called in case TFT_RST >= 0, but it doesn't matter since all writecommands lead to a crash).
Because of this, I assumed a problem with this line: spi.begin(TFT_SCLK, TFT_MISO, TFT_MOSI, -1); Printing the values reveals that this is executed: spi.begin(4, -1, 6, -1);. TFT_MISO is changed to -1, besides the declaration in User_Setup. I tried hard-wiring the variable, but it didn't change anything. I also tried a lot of different pins, but none of them work and all have the same problem.
Does anyone have any ideas about what I could try or even any idea what the specific problem is here?
I've been at it for almost a week, trying to connect my ESP C3 super mini to a round GC9A01 240x240. I've tried with both Micropython and ESP-IDF and am currently trying with Arduino IDE and the TFT_eSPI lib. In Arduino I've selected the MakerGO ESP32 C3 SuperMini. I found suggestions to use the ESP32 C3 DevModule, but that wasn't working ether.
I have already looked around a lot here in the forum and so on, and I have also adopted the most common pin assignment. This is the User_Setup.h
Code: Select all
#define USER_SETUP_INFO "User_Setup"
#define GC9A01_DRIVER
#define TFT_SDA_READ
#define TFT_WIDTH 240
#define TFT_HEIGHT 240
#define TFT_CS 7
#define TFT_DC 8
#define TFT_RST 9
#define TFT_MISO 5
#define TFT_MOSI 6
#define TFT_SCLK 4
#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_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
#define SMOOTH_FONT
#define SPI_FREQUENCY 27000000
#define SPI_READ_FREQUENCY 20000000
For test Code im Using an example from the lib: Colour_Test:
Code: Select all
#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
#define TFT_MISO 5
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
void setup(void) {
tft.init();
tft.fillScreen(TFT_BLACK);
tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN);
// Set "cursor" at top left corner of display (0,0) and select font 4
tft.setCursor(0, 4, 4);
// Set the font colour to be white with a black background
tft.setTextColor(TFT_WHITE);
// We can now plot text on screen using the "print" class
tft.println(" Initialised default\n");
tft.println(" White text");
tft.setTextColor(TFT_RED);
tft.println(" Red text");
tft.setTextColor(TFT_GREEN);
tft.println(" Green text");
tft.setTextColor(TFT_BLUE);
tft.println(" Blue text");
delay(5000);
}
void loop() {
tft.invertDisplay( false ); // Where i is true or false
tft.fillScreen(TFT_BLACK);
tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN);
tft.setCursor(0, 4, 4);
tft.setTextColor(TFT_WHITE);
tft.println(" Invert OFF\n");
tft.println(" White text");
tft.setTextColor(TFT_RED);
tft.println(" Red text");
tft.setTextColor(TFT_GREEN);
tft.println(" Green text");
tft.setTextColor(TFT_BLUE);
tft.println(" Blue text");
delay(5000);
// Binary inversion of colours
tft.invertDisplay( true ); // Where i is true or false
tft.fillScreen(TFT_BLACK);
tft.drawRect(0, 0, tft.width(), tft.height(), TFT_GREEN);
tft.setCursor(0, 4, 4);
tft.setTextColor(TFT_WHITE);
tft.println(" Invert ON\n");
tft.println(" White text");
tft.setTextColor(TFT_RED);
tft.println(" Red text");
tft.setTextColor(TFT_GREEN);
tft.println(" Green text");
tft.setTextColor(TFT_BLUE);
tft.println(" Blue text");
delay(5000);
}
Because of this, I assumed a problem with this line: spi.begin(TFT_SCLK, TFT_MISO, TFT_MOSI, -1); Printing the values reveals that this is executed: spi.begin(4, -1, 6, -1);. TFT_MISO is changed to -1, besides the declaration in User_Setup. I tried hard-wiring the variable, but it didn't change anything. I also tried a lot of different pins, but none of them work and all have the same problem.
Does anyone have any ideas about what I could try or even any idea what the specific problem is here?