Ask your neighbour to provide her fingers for extra counting.
Count the available pins on your NodeMcu.
Change the interface to 8-bit.
You have sufficient fingers and toes without involving your neighbour.
Compare the "pins needed" with the "pins available"
The ESP32 does have enough pins for an 8-bit parallel TFT. Buy an ESP32.
I am not aware of any TFT library that supports the OTM8009A. You will have to write your own.
There is a library that works with some TFTs with OTM8009A with some processor boards: GxTFT.
But each TFT with OTM8009A may be different, so there is not a general solution.
I tried to change one such TFT to 8bit parallel interface, but could not get it to work.
The one I tried to change looks exactly like the first picture of the OP.
The TFTs with OTM8009A I have need 16bit commands. The 8bit MIPI commands don't work with these.
For history you could search for OTM8009A in this forum.
Thank you David Prentice for your extremely funny reply. Once I stopped laughing, I appreciated ZinggJM's comment more as he actually replied to help, not to insult.
There is a library for the display, that was not the question and I found documentation for other processors connecting to the display that only use 8 wires?
If you felt a bit smarter and bigger after you replied to me, at least it helped you.
ZinggJM requires 16-bit parallel interface e.g. STM32
ZinggJM did not have any success with 8-bit parallel interface.
Your display module has no access to SPI interface. It only offers 8-bit or 16-bit parallel.
If you buy an OTM8009A display with access to the IM# pins you could use SPI.
Looking at the OTM8009A datasheet, you might be able to select SPI with R2, R3, R6, R4.
In which case your ESP8266 could control it.
I would feel more comfortable with this OTM8009A with 8/16/24 bit selection
Note that "larger" displays like 800x480 will be slower with SPI than parallel.
I don't have an OTM8009A display. If anyone has success with selecting SPI via those resistors, I might buy a display and write the SPI driver for ESP8266. (and 8-bit parallel for Zero, Due, ...)
I found the information relating to the STM32 and learnt some more. However, I found a shield for the display and will use that with an EtherTen board I have lying around.
When I have more time, I will have a go at manipulating the resistors and see what I get. If I have success in marrying it to the NodeMcu, I will come back here and loop you in.
The display I have, is the unit you suggested "this OTM8009A with 8/16/24 bit selection"? I had the pic attached. I will not be trying for large graphics so speed does not bother me too much.
I am guessing that R5, R7, R2 are weak pullups e.g. 103 (10k0) and R4, R6, R3 are optional pulldowns e.g. 0 (0R)
0 1
IM0 R4 R5
IM1 R6 R7
IM2 R3 R2
I can't read the values from the image in my link. If my guess is correct, you can select RGB+SPI by removing R4
The photo in the link and the component numbering do not seem to be consistent.
Does the item on your desk match the photo in my link ? i.e. mounted resistors, values, ...
I appreciate your work. And the way you help users with TFTs. And most of your comments.
Many Newbies don't understand what it means to provide libraries and support them, and to support Newbies and even experienced users.
I would be very interested to learn if anybody finds an OTM8009A TFT with 8bit parallel interface with a working library. And I would also be interested in a OTM8009A TFT with SPI.
I think the one you linked is just a new variant with the same issues. It doesn't support SPI, I guess.
The 4 jumpers are for 2 IM lines. I don't remember which ones.
Hi everyone!
After a long struggle I have just managed to run 4.0" IPS LCD (both variants: OTM8009A MRB3971 and NT35510 MRB3973) in 8-bit mode with ESP32
Key points:
switch lcd hardware to 8-bit mode by desoldering R3 resistor and resoldering it as R2
send 16-bit commands / data to lcd as two 8-bit writes:
void LCD_WR_REG(uint WriteAddr)
{
DC_C; //command, DC low
CS_L; //CS low
//tft_Write_8((WriteAddr>>8)&0xFF); //WR low; Write 8 bits to TFT; WR high
//tft_Write_8(WriteAddr&0xFF); //WR low; Write 8 bits to TFT; WR high
tft_Write_16(WriteAddr);
CS_H; //CS high
}
void LCD_WR_DATA(uint WriteData )
{
DC_D; //data, DC high
CS_L; //CS low
//tft_Write_8((WriteData>>8)&0xFF); //WR low; Write 8 bits to TFT; WR high
//tft_Write_8(WriteData&0xFF); //WR low; Write 8 bits to TFT; WR high
tft_Write_16(WriteData);
CS_H; //CS high
}
Use proper LCD init code, form code examples found on lcdwiki pages: