Need help determining TFT controller

Go To Last Post
31 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I recently bought a 320x240 2.4" TFT with touch-screen in a Arduino-UNO shield format.   I've bought three previously and one was a ILI9325 and other two were ST7781 controllers.  

However, this new one returns the value 0 from the read-ID function.  The eBay seller has no detailed information on the TFT module.

 

I saw a message several months ago that said that there were more than two different controllers being manufactured into UNO shields.  But the message didn't specify what they could be if there was no response to code that reads the ID register for the ILI9325 or ST7781.

 

Might anyone know what other controllers are used with this form-factor? 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

it can also be a spfd5408

I bought a couple of displays with that controller recently.

I have found a number of arduino drivers for that and also a C driver, but that was writen for some sort of arm controller (brand unknown compiler unknown).

I have not yet found a datasheet for that specific controller, that is on the busy doing list for tonight.

 

hope it helps you along.

 

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Do you really own a SPFD5408 controller?
Where did you buy it?
Is it possible for me to buy one?

Note that tft.readID() will return 0x5408 for a genuine SPFD5408.

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi David,

 

I have to get things working yet.

Only late yesterday evening found a c driver that i could use.

 

I ordered my boards through deal extreme and they mention explicitly that the controller is a spdf5408.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You are living in a world of Make-Believe !!!

 

Whether it is Ebay, DX, BangGood,  ...  they all reproduce the same rubbish.   e.g. http://www.dx.com/p/diy-2-4-tft-lcd-touch-screen-shield-expansion-board-for-arduino-uno-350121#.VkGxSr9n0ac

says:

- 4-wire resistive touchscreen - 240 x 320 resolution - spfd5408 controller with built in video RAM buffer - 8 bit digital interface, plus 4 control lines - Uses digital pins 5-13 and analog 0-3. That means you can use digital pins 2, 3 and analog 4 and 5. Pin 12 is available if not using the micro SD - 5V compatible, use with 3.3V or 5V logic - On-board 3.3V 300mA LDO regulator - Support 2GB micro SD TF card

Now look at the legends printed by each pin on the pcb.   The TFT use digital#2-9 for the data bus and analog#0-4 for the control signals.  The microSD uses digital#10-13.

 

Yes,   I am sure that several years ago,  there existed shields with the Orise Technology SPFD5408A controller chip.    I have never seen one.    If anyone has got one or knows a source,   I would happily buy it from them.

 

Incidentally,  you can try my library attached to https://forum.arduino.cc/index.php?topic=337473.msg2373456#msg2373456

It handles most of these "red" shields.    If you have one that it does not recognise,  please run the examples/LCD_ID_readreg.ino sketch.

If you are prepared to test sketches on a controller that you have,   I am happy to add support for it.

 

David.

Last Edited: Tue. Nov 10, 2015 - 09:14 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi David,

will give it a try.

I should have some time this evening to get going.

last night tried another driver I found, but that did not do anything and after checking the lower level code I had a suspicion that they would not control the display correctly.

 

do you also have a location to the bootloader that arduino uses? I have been using a jtag ice to program the code and suspect that the arduino bootloader is no longer on the chip.

I have seen a bootloader for a mega168 but mu uno clone has a Mega328p on it

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It really does not matter what you have done to an Arduino during development.
Just use the Arduino IDE to Burn Bootloader. This will get you back to normal.
Solder RESET-EN after debugWIRE.

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok,

I think I am in teh same boat as Simonetta......

 

I was able to re-program teh bootloader,

then copied your stuff to what I think is the right place (sounds strange, An arduino folder was created on my D drive and it was empty, put stuff in there found the LCD_ID-Readreg sketch and thatc ompiled and I could program it.

 

only like with simonetta it returns:

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 00 00       ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00 Manufacturer ID
reg(0x00BF) 00 00 00 00 00 00   ILI9481
reg(0x00D0) 00 00       HX8357
reg(0x00D3) 00 00 00 00 ILI9341, ILI9488
reg(0x00EF) 00 00 00 00 00 00   ILI9327

 

So this is either a communications problem or I am still doing something else wrong.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

david, modified the program a bit to see what whould happen...

   lcdInit();
    lcdReset();      //ensures that controller is in default state
    readReg(0x00, 16, "ILI9320, ILI9325, ILI9335, ...");
    readReg(0x10, 16, "Manufacturer ID");
    readReg(0x20, 16, "ILI9481");
    readReg(0x30, 16, "HX8357");
    readReg(0x40, 16, "ILI9341, ILI9488");
    readReg(0x50, 16, "ILI9320, ILI9325, ILI9335, ...");
    readReg(0x60, 16, "Manufacturer ID");
    readReg(0x70, 16, "ILI9481");
    readReg(0x80, 16, "HX8357");
    readReg(0x90, 16, "ILI9341, ILI9488");    
    readReg(0xA0, 16, "ILI9320, ILI9325, ILI9335, ...");
    readReg(0xB0, 16, "Manufacturer ID");
    readReg(0xC0, 16, "ILI9481");
    readReg(0xD0, 16, "HX8357");
    readReg(0xE0, 16, "ILI9341, ILI9488");
    readReg(0xF0, 16, "ILI9327");

 

to dump the entire structure.

the output now is:

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9320, ILI9325, ILI9335, ...
reg(0x0010) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     Manufacturer ID
reg(0x0020) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9481
reg(0x0030) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     HX8357
reg(0x0040) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9341, ILI9488
reg(0x0050) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9320, ILI9325, ILI9335, ...
reg(0x0060) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     Manufacturer ID
reg(0x0070) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9481
reg(0x0080) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     HX8357
reg(0x0090) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9341, ILI9488
reg(0x00A0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9320, ILI9325, ILI9335, ...
reg(0x00B0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     Manufacturer ID
reg(0x00C0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9481
reg(0x00D0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     HX8357
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9341, ILI9488
reg(0x00F0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ILI9327

 

so Something is really fishy on what is going on here

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I download the file and "open" the ZIP with Explorer. Then copy-paste the MCUFRIEND_kbv folder to my User libraries folder.

As long as you end up with the regular file structure in the libraries folder, everything should work fine. Most importantly, the examples/ are read-only. So a punter can't edit a library example. If you want to make changes, you save the edited sketch in your sketch folder.

You do not understand the controller interface. An 9320, 9325, ... have the ID as a 16-bit read of reg(0).
Others have a variable number of 8-bit reads from a register.

If you want to see everything, just loop through every register from 0 to 0xFF, reading six 8-bit bytes.

Since everything looks like 0x00, you have either got LCD_RD or LCD_RESET pin stuck.

The build quality of these shields is not always very good. OTOH, I expect that the Chinese might do a basic test.

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

David,

 

I had bought 2 'uno' clones and 2 displays.

I just took out the second board and second display that behaves the same.

also on the second uno the first display behaves identical.

 

I know they tested the touch part as I can see that they wiped with a 'pen' over the protective foil and left a mark on it.

I would suspect that then they also did a quick display test.

 

I have not attached a scope yet, but that slowly seems to be the way to go.

unfortunately I will not be ad home tonight, but might have a look tomorrow.

I have lifted one of the displays from the shield and it gives me the follwoing numbers:

S241GF31 d09j06010 usp5280371

also on the flex there is ck241_rev0.1 2009.03.07 BH0923

IS9F01COP1P

 

if the reset line was stuck I would not be able to get garbage on the display, and I have managed that. might still be that the rd line is not ok.

 

my guess is that the first number is interesting

S241GF31

that seems to relate to it being a samsung display.

I have to go now, but perhaps this does ring a bell. I did see more people complainging about this although google initial search was only a couple of results

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have never heard of a S241GF31. If I can find a data sheet, it should be easy to make functional. Albeit write-only.

 

The S241 number all seem to come from one original post on the DX website. It also sounds rather an unusual Samsung number.    If you read the related comments,   one author says that it turned out to be a 240x400 display!    A 240x400 is completely different shape to a 240x320.    The photos will be "obvious".

 

Another author said that 0x9341 worked.   Another said 0x7783 worked.   

 

Does the pcb match any photo on the DX or Ebay websites?

 

BangGood were selling a display that did not render colours properly.

I have received a display with TFT that works 100% but one of the Touch terminals is not connected to the Shield.

 

You can attempt tft.begin(0x9341) or tft.begin(0x7783). I am really not happy with the idea of a controller that cannot be read and identified.

 

David.

Last Edited: Wed. Nov 11, 2015 - 07:48 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi David,

 

I have taken the swtft-shield stuff and teh adafruit-gxf_library master

All I have changed is:

void setup(void) {
  Serial.begin(9600);
  Serial.println(F("TFT LCD test"));

 

  tft.reset();

  uint16_t identifier = tft.readID();

 
    Serial.print(F("LCD driver chip: "));
    Serial.println(identifier, HEX);
    
//identifier = 0x7783;
  identifier = 0x9341;
 
  tft.begin(identifier);

 

Both 0x9341 and 0x7783 as identifier have the same result.

I see the display flickering, that suggests that atleast it is responding to something of the data written to it.

 

My next step now is that I will de a re-solder of the shield PCb and teh arduino uno clone pcb I have to make sure that therre is no short circuit on there somewere.

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok,

 

Have done a bit of measuremanet.

Cut the 3V3 pin on the shield as something seemed to be lifting that to over 4V.

Cut loose the display and bend it outwards to be able to measure what goes on there.

Interestingly enough, the supply is 3V3, but I see the datalines go up to 4,2V.

My suspicion is that this is the problem, the display controller might not be able to handle too high a voltage.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There are several libraries similar to mine. My one probably supports more different controllers. For example, SWTFT only supports the ST7781. THe Adafruit Master supports several controllers.

It does sound as if there is something seriously wrong if you cannot read the chip.

You can just try every chip on the MCUFRIEND_kbv list in tft.begin(id)
but I suspect there is a wiring problem.

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have only started studying the code created by david.prentice. 

 

Do all (most) TFT controllers have the ID register at 0x00?  Do some controllers require the register number to be put into a special ' index register' before the register can be read?

 

Could some of these TFT modules (coming from the WonHungLow factory) have the RD\ line on a different pin than all the other 2.4" modules that look the same?

 

Dave Jones, the Australian electronics designer who has posted hundreds of electronics videos on the YouTube EEVblog channel, has made a lot of choice comments about his experience with the products coming from the semi-mythical WonHungLow factory rumored to be in Shenzhen, Guangdong, China somewhere.

Last Edited: Fri. Nov 13, 2015 - 02:28 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

As I say in the Read_ID sketch,   there are two styles of command.

1.  16-bit command + 16-bit data:    ILI9320/9325/9335, S6D0154, ST7781, R61509, R6809, SPFD5408, SSD1289, ... 

2.  8-bit command + variable number of 8-bit parameters:  ILI9327/9340/9341/9481/9486/9488, R61581, ST7735, ...

 

The first type generally return a 16-bit ID from a readReg(0)

The second type have their ID in different places and often require reading a different number of data bytes.

 

Quite honestly,   it seems crazy that the Manufacturers do not all follow the readReg(0) pattern.   You can always read extra registers after you have determined the "basic" controller model.    Most Manufacturers seem to produce controllers in both styles.

 

In answer to your OP.   The Mcufriend UNO style shields might contain any of the 10 different controllers that I support.    And it looks as if meslomp might have a "new" one.

 

At least the shield "should" be readable.    Which means you can identify the correct controller at runtime.    You can test every controller with the same binary running on a UNO.    The UTFT library requires you to "know" the exact details of each display.    You can rely on the documentation from ColdTears or EastRising.   When it comes to DX, BangGood, Ebay, AliExpress, ... you just have to guess.    Most of their information is completely untrue.

 

Davd.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

@meslomp,

 

I have modified the LCD_ID_readreg sketch:

void setup()
{
    uint8_t val = 0;
    Serial.begin(9600);
    while (!Serial) ;
    Serial.println("Read Registers on MCUFRIEND UNO shield");
    Serial.println("controllers either read as single 16-bit");
    Serial.println("e.g. the ID is at readReg(0)");
    Serial.println("or as a sequence of 8-bit values");
    Serial.println("in special locations (first is dummy)");
    Serial.println("");
    lcdInit();
    lcdReset();      //ensures that controller is in default state
    val |= readReg(0x00, 2, "ILI9320, ILI9325, ILI9335, ...");
    val |= readReg(0x04, 4, "Manufacturer ID");
    val |= readReg(0x09, 5, "Read Display Status");
    val |= readReg(0xBF, 6, "ILI9481");
    val |= readReg(0xD0, 2, "HX8357");
    val |= readReg(0xD3, 4, "ILI9341, ILI9488");
    val |= readReg(0xEF, 6, "ILI9327");
    if (val == 0) {
        for (uint16_t r = 0; r < 256; r++) {
            val |= readReg(r, 6, "desparation");
        }
    }
    if (val) Serial.println("at least we got some response");
}

and

uint8_t readReg(uint16_t reg, uint8_t n, char *msg)
{
    uint8_t val8, ret = 0;
    lcdReset();
    lcdSetWriteDir();
    lcdWriteCommand(reg);
    Serial.print("reg(0x");
    printhex(reg >> 8);
    printhex(reg);
    Serial.print(")");
    lcdSetReadDir();
    while (n--) {
        val8 = lcdReadData8();
        Serial.print(" ");
        printhex(val8);
        ret |= val8;
    }
    lcdSetWriteDir();
    Serial.print("\t");
    Serial.println(msg);
    return ret;
}

A genuine ILI9341 shield now shows:

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 00 00	ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00	Manufacturer ID
reg(0x0009) 00 00 61 00 00    Read Display Status
reg(0x00BF) 00 00 00 00 00 00	ILI9481
reg(0x00D0) 00 00	HX8357
reg(0x00D3) 00 00 93 41	ILI9341, ILI9488
reg(0x00EF) 00 03 80 02 02 02	ILI9327
at least we got some response

Since 0xD0, D3, EF are all "extended" commands,   if your ILI9341 does not have the pin enabled,   you would get 0x00 from reading them.

I would hope to see "something" from reg(0x0009) on a modern controller.

 

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

David,

 

I feel very very very ashamed.

I think I have really F...d up somewere in the process of making the modifications that are written in the post #79 on the arduino forum:

http://forum.arduino.cc/index.ph...

 

I again downloaded:

https://github.com/adafruit/TFTL...

and

https://github.com/adafruit/Adaf...

 

did again the modifications to them as described in the arduino forum post and now everythings seems to be working just fine.

I have attached both libraries as I downloaded them.

Changed the "graphicstest" file and saved it under "graphicstest-new"

 

for me this has resulted in a working display on both my UNO boards + shield.

 

David,

I will next try your modifications to your readid program to see that that works on my boards too.

 

Simonetta,

I hope your board will also work with the zip file and example I attached.

 

regards

 

edit:

Simonetta, my display seems to be color inverted. during text rotation the background should be black and the text white, yellow, red and green.

in the "adafriut_TFTLCD.cpp file, there is a function called "void Adafruit_TFTLCD::begin"

inside that function there is a section that starts with "} else if (id == 0x9341) {"

there is a write to register "ILI9341_SLEEPOUT"

below that write I have added the line "    writeRegister8(ILI9341_INVERTON, 0x00);    // see registers.h"

now for me the display functions as the demo code was intended to.

 

hope this helps

 

 

 

Attachment(s): 

Last Edited: Fri. Nov 13, 2015 - 04:56 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

David,

changed things as you said done (copy and replace setup and readreg)

 

the terminal now spits out this:

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 00 00       ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00 Manufacturer ID
reg(0x0009) 00 00 61 00 00      Read Display Status
reg(0x00BF) 00 00 00 00 00 00   ILI9481
reg(0x00D0) 00 00       HX8357
reg(0x00D3) 00 00 00 00 ILI9341, ILI9488
reg(0x00EF) 00 00 00 00 00 00   ILI9327
at least we got some response

 

There is a 61 on 0x0009 as also is in the things you copied, this means atleast it is not reading back just zeros.

 

hope this helps you along to.

Please let me know if there is anything I can do.

 

regards

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I just replied and lost it.

Anyway, I would put money on you having an ILI9341 that has its extended commands disabled.
Just call tft.begin(0x9341) and it should work.

It is definitely a variable-sequence style controller. Of course it might be Himax, Sitronix, Samsung, Renesas, ... and not Ilitech.

In which case, it is worth using the power up defaults. Please let me know how you get on.

Tft.begin() should default to ILI9341. I am not at a PC. I will look to see what code you are actually using.

David.

Last Edited: Fri. Nov 13, 2015 - 05:21 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ah-ha.  Just read your message #19 that I had missed earlier.

 

I have installed the Adafruit_TFTLCD library from your link.  Then ran the graphicstest example from that particular library.

 

It does not work with either of the ILI9341 Shields that I own.   Which is a little odd because Adafruit code is pretty reliable.    Even if I force begin(0x9341) it does not work on my Shields.

It works fine with a ILI9325 shield.

 

So I am interested to hear that your Shield works with that library.   (Github shows library last updated in Nov 2014)

And even more surprised that your Shield does not work with my library.   (you need to force ID=0x9341)

 

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi david,

 

did you try the code I attached in the zip file?

you should go to the "graphicaltest_new" it should be present in "libraries\tftlcd-library-master\examples" The original "graphicaltest" that is in there to indeed does not work on my LCD. I had to tweak it and then had to save it to a new location as the original was protected so I called it new.

 

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The only tweak that I can see is tft.begin(0x9341)

 

I diff'ed your new sketch.   The only other changes are cosmetic.

 

Please can you do the same tweak with the MCUFRIEND_kbv examples.

 

Meanwhile,  it is my bedtime.   I will compare the Adafruit initialisation to my own for the ILI9341 in the morning.

Since your display has got extended commands disabled,  there is very little that you can actually change via the initialisation code.

 

David.

Last Edited: Fri. Nov 13, 2015 - 10:01 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi David,

 

I took the "graphictest_kbv"

changed

//    g_identifier = tft.readID(); // <- commented it out

added

    g_identifier = 0x9341; <- to make it hard coded the display controller we think it is.

 

the display seems to be doing something, but the background keeps changing from dark to light and there are lines over the display that change color.

 

So my guess is that indeeed there is a difference in the initialisation that makes the other code work.

Hop you find it adn can use it to your advantage and make your code better.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have played with 2.4 " displays with both controllers (from newheaven ), and they are so alike that with the wrong SW they both show a picture, (only difference turned 90 deg, and red and blue flipped.)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

That probably has to do with how the manufacturer has wired the default settings.

I scanned through the ili spec and IIRC I have seen that the default colors and orientation could be done by setting pins to a certain state. So it might as well be one manufacturer choose one setup and the other the inverted.

Although it can also be that they wired it the complete opposite for one or the other reason.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I got a chance to test the unknown 2.4" controller with LCD_ID_readReg.ino.

Here are the results:

 

reg(0x0000) 00 00

reg(0x0004) 00 38 80 00

reg(0x00BF) 00 00 00 00 00 00

reg(0x00D0) 00 00

reg(0x00D3) 00 01 16 01

reg(0x00EF) 00 00 00 00 00 00

 

The graphicstest example program gives the ID as 0x1601.

 

I'm at a loss to know what controller this could be.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have no idea what you have.  But it is a modern "8-bit sequence" style.  Try a few more registers:

void setup()
{
    Serial.begin(9600);
    while (!Serial) ;
    Serial.println("Read Registers on MCUFRIEND UNO shield");
    Serial.println("controllers either read as single 16-bit");
    Serial.println("e.g. the ID is at readReg(0)");
    Serial.println("or as a sequence of 8-bit values");
    Serial.println("in special locations (first is dummy)");
    Serial.println("");
    lcdInit();
    lcdReset();      //ensures that controller is in default state
    readReg(0x00, 2, "ILI9320, ILI9325, ILI9335, ...");
    readReg(0x04, 4, "Manufacturer ID");
    readReg(0x09, 5, "Status Register");
    readReg(0xBF, 6, "ILI9481");
    readReg(0xD0, 2, "HX8357");
    readReg(0xD2, 3, "NVM Read");
    readReg(0xD3, 4, "ILI9341, ILI9488");
    readReg(0xDA, 3, "RDID1");
    readReg(0xDB, 3, "RDID2");
    readReg(0xDC, 3, "RDID3");
    readReg(0xEF, 6, "ILI9327");
}

I presume that you have tried tft.begin(0x9341) but it would be far better to identify the actual make and model properly.

 

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I haven't tried tft.begin(0x9341) because I assumed that all the ILI9341-based TFT Arduino boards were SPI-based.  I'll try it along with the extended register reads.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

This display contains a Samsumg chip named S6D04H0.

It is roughly identical to well-known ILI9341 but with a different initialization sequence.

This tested source-code snippet works for that display:

http://www.tu-chemnitz.de/~heha/...

 

henni