First, I apologize if some things I say are wrong or make no sense, I am pretty new to this.
A friend gave me an ESP-WROOM-32 board (38 pins, with CH340G), and an ILI9341 3.2'' tft lcd (TFT_320QDT_9341, 40 pins). At first I thought it was impossible to connect it to the esp32 board since it needs so many pins, but I read that these type of displays can be used used in 8 bits mode by moving a resistor in the lcd flex cable. Then it would use only 8 data lines, making it possible to connect to the esp32.
Here are some pics of the boards (click to enlarge):
This is the pinout reference I am using:
The lcd flex cable has R2 populate and R1 empty, I don't know which mode this is since my flex doesn't have the 8/16 numbers printed like some others I saw online, and I found some say R1 populated is 8 bit and other said R2 populated is 8 bit, so I decided to just try it as is before touching that.
I installed espressif/arduino-esp32 and selected the board FireBeetle-ESP32 since it seems to match the pins on my board. I tested a simple led blink code on random pins to confirm that and everything worked fine. Then I installed Bodmer/TFT_eSPI because it was the only one I found for ESP32 that I could easily edit the pinout.
I edited User_Setup_Select.h, commented "#include <User_Setup.h>" and uncommented "#include <User_Setups/Setup14_ILI9341_Parallel.h>", first I tried the default pinout from Setup14_ILI9341_Parallel.h:
LCD | ESP32 |
---|---|
VCC | 3v3 |
GND | GND |
LEDA | 3v3 |
CS | 33 |
DC | 15 |
REST | 32 |
WR | 4 |
RD | 2 |
DB8 | 12 |
DB9 | 13 |
DB10 | 26 |
DB11 | 25 |
DB12 | 17 |
DB13 | 16 |
DB14 | 27 |
DB15 | 14 |
Also tried this pinout I found on some github comment (edited Setup14_ILI9341_Parallel.h after rewiring):
LCD | ESP32 |
---|---|
VCC | 3v3 |
GND | GND |
LEDA | 3v3 |
CS | 33 |
DC | 15 |
REST | 19 |
WR | 32 |
RD | 18 |
DB8 | 27 |
DB9 | 12 |
DB10 | 13 |
DB11 | 14 |
DB12 | 16 |
DB13 | 17 |
DB14 | 25 |
DB15 | 26 |
I uploaded the UTFT_demo.ino sketch, but all I got was a white screen. Tried using DB0-DB8 too, tested different upload speed and flash frequency, same white screen. When uploading the sketch, I get this on the serial monitor:
I've no idea what it means (switching baud rates doesn't "decode" the first part either). Rebooting the board doesn't clear the serial monitor and show that again, like other simple sketch do. So I added a printf() on setup() and another on loop() and they never show up on the serial monitor. (I also downloaded MCUFRIEND_kbv and tried the LCD_ID_reg sketch, but got the same issue). I removed most of the code of the demo like this:
#include "SPI.h"
#include "TFT_eSPI.h"
#define TFT_GREY 0x7BEF
TFT_eSPI myGLCD = TFT_eSPI();
unsigned long runTime = 0;
void setup()
{
// Setup the LCD
//myGLCD.init();
//myGLCD.setRotation(1);
printf("setup!\n");
}
void loop()
{
printf("loop!\n");
//myGLCD.fillScreen(TFT_BLACK);
delay(1000);
}
And the printf only works when all calls to myGLCD are commented like in the above code. If I uncomment myGLCD.init(), the printfs stop showing up, only shows whats in the last image. It does this regardless if the lcd is connected or not to the board.
Should I go ahead and try the R1-R2 swap thing in the lcd flex? Or what else could I try before doing that? What worries me is that printf thing, it's like the program is crashing or something.