3.97" TFT with OTM8009A wired to Arduino DUE does not work...

I am trying to put a 3.97" TFT display - 3.97inch 16BIT Module OTM8009A SKU:MRB3971 - LCD wiki - wired to a Arduino DUE exactly as described in GxIO_DUE_P16_WIRED.cpp from GxTFT library but even after many days working over it the display still off & black !!! I really do not know what is happening. I will thanks forever if someone would give me any help.

The connection made are:

DUE PIN        TFT PIN

31 (A7) ------ D15
33 (C1) ------ D14
35 (C3) ------ D13
37 (C5) ------ D12
39 (C7) ------ D11
41 (C9) ------ D10
43 (C20) ------ D9
45 (C18) ------ D8

38 (C6) ------ D7
40 (C8) ------ D6
42 (A19) ------ D5
44 (C19) ------ D4
46 (C17) ------ D3
48 (C15) ------ D2
50 (C13) ------ D1
52 (B21) ------ D0

29 (D6) ------ CS
51 (C12) ------ RS
25 (D0) ------  RST
49 (C14) ------ WR
47 (C16) ------ RD
23 (A14) ------ BL

GND ------ GND
+5v ------ +5V

The initial lines of my test program is:

#include <GxTFT_GFX.h>
#define TFT_Class GxTFT_GFX
#include <GxIO/GxIO_DUE_P16_WIRED/GxIO_DUE_P16_WIRED.h>
#include <GxCTRL/GxCTRL_OTM8009A/GxCTRL_OTM8009A.h>
GxIO_Class io; // #define GxIO_Class is in the selected header file
GxCTRL_Class controller(io); // #define GxCTRL_Class is in the selected header file
TFT_Class tft(io, controller, 800, 480); // landscape 800x480 7inch Display
#include "GxReadRegisters.h"

void setup()
....

The printed result is: (with display always black):

GxCTRL_OTM8009A Test on GxIO_DUE_P16_WIRED
tft.init() done
reg(0x0000) 00 00   ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00   Manufacturer ID
reg(0x0009) 00 00 00 00 00   Status Register
reg(0x00BF) 00 00 00 00 00 00   ILI9481, HX8357-B
reg(0x00D3) 00 00 00 00   ILI9341, ILI9488
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA-P
reg(0x00E1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA-N
reg(0x000A) 00 00   Get Power Mode
reg(0x000C) 00 00   Get Pixel Format
reg(0x0061) 00 00   RDID1 HX8347-G
reg(0x0062) 00 00   RDID2 HX8347-G
reg(0x0063) 00 00   RDID3 HX8347-G
reg(0x0064) 00 00   RDID1 HX8347-A
reg(0x0065) 00 00   RDID2 HX8347-A
reg(0x0066) 00 00   RDID3 HX8347-A
reg(0x0067) 00 00   RDID Himax HX8347-A
reg(0x0070) 00 00   Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00   RD_DDB SSD1963
reg(0x00B0) 00 00   RGB Interface Signal Control
reg(0x00B4) 00 00   Inversion Control
reg(0x00B6) 00 00 00 00 00   Display Control
reg(0x00B7) 00 00   Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00   ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00   Panel Control
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA
reg(0x00CC) 00 00   Panel Control
reg(0x00D0) 00 00 00   Power Control
reg(0x00D2) 00 00 00 00 00   NVM Read
reg(0x00D3) 00 00 00 00   ILI9341, ILI9488
reg(0x00DA) 00 00   RDID1
reg(0x00DB) 00 00   RDID2
reg(0x00DC) 00 00   RDID3
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA-P
reg(0x00E1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   GAMMA-N
reg(0x00EF) 00 00 00 00 00 00   ILI9327
reg(0x00F2) 00 00 00 00 00 00 00 00 00 00 00 00   Adjust Control 2
reg(0x00F6) 00 00 00 00   Interface Control
 0x0 0x0 0x0 0x0
 0x0 0x0 0x0 0x0
 0x0 0x0 0x0 0x0
 0x0 0x0 0x0 0x0
Benchmark                Time (microseconds)
Screen fill              8697089
Text                     387881
Lines                    10505443
Horiz/Vert Lines         797173
Rectangles (outline)     428193
Rectangles (filled)      28364676
Circles (filled)         4881513
Circles (outline)        9429409
Triangles (outline)      1906960
Triangles (filled)       11229086
Rounded rects (outline)  2521605
Rounded rects (filled)   29305972
Done!

This long time taken for easy functins is very curious !!!
Thanks again.

@AntonioTesta, Hi Antonio,

I am a bit reluctant to answer, but I should, as you use my library.

This TFT display causes nothing but problems. I had one from one vendor that didn't work, and another one that does work, but after some problems. And the first "client" user that wanted to use it with Arduino Due caused even more problems.

It works on some STM32 board with directly matching TFT connector using FSMC. But it has a VCC pin that is not supplied by the STM32 board, and needs 5V supply.

It works only with the interface set for 16bit mode, but the inking on the board may be wrong.
The inking on the picture your link shows is correct.

The controller only works with 16bit commands. The reason is unclear. My other GxIO classes didn't support 16bit commands, that's why my "client" had a problem with Arduino DUE and me. But this is fixed in versions since 2.0.1. Please make sure you use the actual version, currently 2.0.3.

GxTFT is not optimized for speed, and GxIO_DUE_P16_WIRED uses bit shuffling to match pins for a specific TFT pinout (HVGA TFT for MEGA). Connection through a matching shield and using GxIO_DUE_P16_DUESHIELD would be faster.

This TFT is readable, as far as I remember, and you have connected the RD pin, so you should see register values. I did not check your wiring, to see if it corresponds to GxIO_DUE_P16_WIRED.

I have too many TFT displays stored in different places, and can't find this one right now.
But my TFT finally worked with GxIO_DUE_P16_DUESHIELD and/or GxIO_DUE_P16_R_SHIELD.

Jean-Marc

Jean-Marc, thanks for your time. I have tested my two displays 3.97" OTM8009A (equals in teory) with GxIO_DUE_P16_Wired, GxIO_DUE_P16_R_SHIELD and GxIO_DUE_P16_DUESHIELD... all of them failed !!! I will throw out this fake displays and start everything again with some other model. Thanks for all.!!!