Display drivers for 4" 800x480 OTM8009A / NT35510 displays in parallel 8-bit bus mode / WIP / need help #672
Replies: 9 comments 4 replies
-
Thanks for the information. The tft_Write_8(C) macro is only used by the library to send commands, so for the Raspberry Pi (SPI) display which needed 16 bit commands I just redefined the 8 bit macro to send 16 bits. However I can see that different commands are needed for each x,y parameter so that method will not work for you. If you wish to create a push request or disclose all the changes needed than I will add this display. Ideally the tft read code will also need to be adapted and tested. |
Beta Was this translation helpful? Give feedback.
-
I will create push request soon, just need some time to learn GitHub project contribution basics first... :-)
That would give an opportunity to define some driver specific implementation of TFT_CASET_CMD / TFT_PASET_CMD in the LCD _Init.h file. |
Beta Was this translation helpful? Give feedback.
-
I think the macro approach is the way to go. I suggest the following route to adding this display. If you can provide the following as part of stage 1 changes:
With that info I can consider how best to adapt the library with minimally intrusive changes to the core code. Once that is tested and running in the library then stage 2 changes would be, if read is supported by the display:
|
Beta Was this translation helpful? Give feedback.
-
It is not clear if both TFT types will work with the same changes, so I think two #defines will be needed: #define OTM8009A_DRIVER Are you able to test both or just one of these displays? |
Beta Was this translation helpful? Give feedback.
-
I have forked the project, my copy is avaliable here: https://github.com/Mike120Git/TFT_eSPI
I have made a few absolute minimal modifications to the TFT_eSPI.cpp file to make it work with the new displays. I own both variants of the displays (OTM8009A and NT35510) and I will be able to use them for testing. There are some issues I can think of:
...
... I have tested some basic drawing functions and JPG drawing with tft.pushImage - looks good. I hope my fork will be useful as source of stage 1 changes. |
Beta Was this translation helpful? Give feedback.
-
Thanks, I am busy with other paid for projects at the moment so it will be 3+ weeks before I can look at this in detail but it looks very promising. Reading from the display is a "nice to have" feature but is not critical as not all displays can be read anyway (eg Raspberry Pi based ones). |
Beta Was this translation helpful? Give feedback.
-
Nice @Mike120Git. If you don't mind, can you run TFT_graphicstest_one_lib and report back the results? I'd certainly appreciate it. Thanks! |
Beta Was this translation helpful? Give feedback.
-
Здравствуйте уважаемые @Bodmer и @Mike120Git. Хочу уточнить, вы продолжите работу над совместным проектом библиотеки ? У Вас хорошо получилось ))). Многие новички пользуются Вашими проектами. Например, у меня получилось запустить дисплей с контроллером nt35510/8b и gc9a01/spi на ESP32. Пожалуйста не забывайте свои проекты, и благодарю Вас за вашу работу !!! ))). Hello dear @Bodmer and @Mike120Git. I want to clarify, will you continue working on a joint library project ? You did well ))). Many newcomers use your projects. For example, I managed to run a display with an nt35510/8b controller and gc9a01/spi on ESP32. Please don't forget your projects, and thank you for your work !!! ))). |
Beta Was this translation helpful? Give feedback.
-
Hello. I want to boot otm8009a display from esp32-S3 using 8bit bus. "Arduino: 1.8.19 (Windows 10), Board: "ESP32S3 Dev Module, Disabled, Disabled, QIO 80MHz, 4MB (32Mb), Core 1, Core 1, Hardware CDC and JTAG, Disabled, Disabled, Disabled, UART0 / Hardware CDC, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi), 921600, None, Disabled" |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
[New display variant] / [Question] / [Potential enhancement]
Hi!
I am working on creating display drivers for 4" 800x480 OTM8009A / NT35510 based displays in parallel 8-bit bus mode.
Good news is that both of these displays do work correctly with 8-bit bus - I have verified it with ESP32 (and parts of code taken from your library).
After a lot of trials and errors I discovered that these displays just expect 16-bit commands and 16-bit data,
sent as two bytes (tft_Write_16).
On the hardware side - LCD need to be switched to 8-bit bus mode by desoldering R3 resistor and soldering it as R2.
I have successfully created appropriate config files for these displays (_Defines.h, _Init.h, _Rotation.h).
There is just one problem: these displays need driver specific 16-bit commands to set row / column address.
The generic code to set TFT_CASET / TFT_PASET in methods setWindow, drawPixel, readAddrWindow need to be overriden for them.
And I don't see any way to inject display-specific code into the methods above from a display driver, so I need your help... :-)
If you could just provide some hook point to override current hardcoded TFT_CASET / TFT_PASET code from a display driver code, please?
I would be very happy, if you could help me with integration of these displays with your library.
I have seen many questions about these displays on forums, but it looks like that nobody managed to drive them by 8-bit bus successfully before...
The dispalys themselves are really good quality, with wide viewing angles and pretty high resolution - they are undoubtedly worth supporting.
Greetings,
Mike
More info about these displays:
3.97inch 16BIT Module OTM8009A SKU:MRB3971
http://www.lcdwiki.com/3.97inch_16BIT_Module_OTM8009A_SKU:MRB3971
3.97inch 16BIT Module NT35510 SKU:MRB3973
http://www.lcdwiki.com/3.97inch_16BIT_Module_NT35510_SKU:MRB3973
Resolution: 800*480
Module Interface: 16Bit parallel interface (by default, can be switched to 8-bit)
The module hardware supports 8-bit and 16-bit parallel port data bus mode switching, as follows:
Solder R3 and R4 with 0Ω resistor or short circuit directly, and disconnect R2 and R6: select 16-bit data bus mode (default), use DB0-DB15 data pin
Solder R2 and R4 with 0Ω resistor or short circuit directly, and disconnect R3 and R6: select 8-bit data bus mode, use DB0-D7 data pin
OTM8009A_Init.h with defined 16-bit commands:
Display specific TFT_CASET / TFT_PASET code:
Beta Was this translation helpful? Give feedback.
All reactions