Just bought a 4.3" tft lcd display from BuyDisplay (3.3V with the 40 pins) and I am using TFT_eSPI from Bodmer. Controlling it with ESP32 in 8-bit parallel mode. My issue is that although the backlight turns on (after wiring it to pin 18 and setting it to HIGH in setup()), that's it, nothing happens on the screen. I selected setup 50, wired it using the default pins, and this is the output of the Read_User_Setup example:
I ran the Colour_Test example; the backlight turns on but nothing shows up. I ran the TFT_ReadWrite_Test, and it just keeps giving error (always reading 2695). I am currently using 30 cm wires, and I know shorter ones are better (ordered 10 cm ones) but I feel like the screen should at least display something, however ugly it may look. I double checked all the wiring to ESP32. Everything is as it should be in the documentation (with 8-bit mode, so only DB0-7 are wired to ESP32) except pin 8 is listed as "tearing effect" which I wasn't sure what to do with, so I left it not connected to anything. I do not need the touch screen so I left pins 33-36 disconnected. Not sure if that affects anything.
Thanks for the link. There is no mention of IM# pins or any jumpers.
It does not seem possible to configure hardware for 8080-8 or 8080-9 or 8080-18 or 8080-24 like you do with other makes of controller.
Checking the SSD1963 datasheet, you use command 0xF0
I suggest that you search for the recent "SSD1963 BuyDisplay" thread.
And look for any TFT_eSPI support for SSD1963 e.g.
C:\Users\ ...\Documents\Arduino\libraries\TFT_eSPI\User_Setups\Setup50_SSD1963_Parallel.h
I undid and redid all the wiring in case I had messed something up. Turns out, I had mixed up the write and read wires, or so I thought. I wired it up so that read on the ESP32 goes to write on the TFT, and read on the TFT goes to write on the ESP32. That yielded the same results as yesterday. I switched them around just to see what would happen, and lo and behold, I ran the write/read test sketch, and:
PASS
Pixel value written = 400
Pixel value read = 400
Now I am very confused. This happened with write connected to write and read connected to read. Is this not the incorrect wiring?
In any case, the screen still just stays black and I still haven't gotten any color out of it. I am starting to think there's either something really stupid I have messed up, or that the screen is broken.
Yes. I mean, I'm happy, but at the same time I am annoyed because I don't know why it worked. I am 90% sure I have the same wiring as yesterday. I uploaded the color test sketch from my laptop and nothing happened. I literally just unplugged the usb from my computer and plugged it into a phone charger that was in the wall, and the screen works, colors and everything. I plugged it back into my laptop thinking, oh well, it'll just be one extra step to test my sketches, and bam. It turns on.
I take it back. It worked for about an hour, then stopped. I have no idea when or why it decides to work or not work. I upload a sketch, it doesn't work. I plug into the wall, it works. I plug into my laptop, it works. I plug into my xbox, it works. I upload a new sketch, it works. I upload a new sketch, it doesn't work. Plug it into every socket in the house, doesn't work. It is very frustrating.
After more testing, the screen has some very annoying and frustrating behavior. It seems the screen does not want to initialize upon uploading a new sketch. Through serial monitor printouts I can tell the sketch is working and the screen is sending and receiving the correct data, but the screen just doesn't want to do anything. Sometimes, for whatever reason, after waiting a while and rebooting the esp32, the screen starts up fine and works perfectly. From that point on it will work every single time after. However, uploading a new sketch kills it, and even after waiting, some sketches never work at all. Clearly the screen works because some sketches work fine, but there is some weird bug and I do not know what is going on. Sketches with literally identical setup code don't do the same thing. I have gotten some shorter (10 cm) wires and that did not change anything. I am ready to give up and try to find a new/different screen.
No, I have not got around to plugging in SSD1963 and Due.
However, I have always been sceptical of ESP32 and 8080-8 Shields.
The Shield ensures robust and accurate wiring.
MCUFRIEND_kbv programs are reliable on the TTGO ESP32 board.
But less reliable on a ProtoShield + ESP32 module combination.
I would never trust 8080-8 with random floating Dupont wires.
I have not really made much use of TFT_eSPI with parallel displays.
TFT_eSPI is very reliable with SPI displays. I have had programs running for days.
What gets me is the fact that once it decides to work, it works infallibly every time upon resetting or unplugging and re-plugging esp32. I really don't understand how that is possible
I have been able to get it to work using TFT_eSPI and it works well, but still fails to initialize for some reason. To get around this, but I had to incorporate a 470 uF capacitor in parallel with the 3.3V and Ground pins on the display that I connect when the display fails to initialize. I have not figured out what the issue is (I suspect power source), so in my project I incorporated 2 buttons: one which uncharges the capacitor, the other which then connects the capacitor to the aforementioned pins.
Well, @david_prentice got the answers sorted for me a few weeks back. Since then I've been trying to get the touchscreen sorted. I had to use a software i2c replacement - the SDA pin was needed by MCUFriend for the screen.
It got to the stage where I was hooking it all up to a scope to 'see' exactly what was coming down the wires.
Thanks for your reply.
I want to ask you does the ESP32 handle the 800x480 resolution fast enough in 8-parallel mode?
When sending a new complete frame to the LCD. does the new screen appears instantaneously? or does it appears gradually slowly line by line?