2.8" mcufriend TFT lcd shield not, stays a blank white.

Hi guys,

I got this 2.8" TFT touchscreen shield off ebay for a very cheap price. I have tried all the Adafruit libraries and example and none of them work, the screen just stays a blank white and shows an error message in the the serial monitor saying that the driver is unknown. The driver on my shield seems to be different to the ones Adafruit use. I have done hours of research and yet found no sketch or library that works with my shield. :o

Please help me, many thanks!!!

Ethan_Liu:
I have done hours of research and yet found no sketch or library that works with my shield. :o

Run the LCD_ID_readreg.ino sketch and paste the results from the Serial Terminal. i.e. follow the advice in every other Mcufriend Uno thread.

David.

Hi David,

here's what the serial monitor says when I use the sketch from your post:

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) 80 80 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 84 84 84 84 Manufacturer ID
reg(0x0009) 89 89 89 89 89 Status Register
reg(0x000A) 8A 8A Get Powsr Mode
reg(0x000C) 8C 8C Get Pixel Format
reg(0x0061) E1 E1 RDID1 HX8347-G
reg(0x0062) E2 E2 RDID2 HX8347-G
reg(0x0063) E3 E3 RDID3 HX8347-G
reg(0x0064) E4 E4 RDID1 HX8347-A
reg(0x0065) E5 E5 RDID2 HX8347-A
reg(0x0066) E6 E6 RDID3 HX8347-A
reg(0x0067) E7 E7 RDID Himax HX8347-A
reg(0x0070) F0 F0 Panel Himax HX8347-A
reg(0x00A1) A1 A1 A1 A1 A1 RD_DDB SSD1963
reg(0x00B0) B0 B0 RGB Interface Signal Control
reg(0x00B4) B4 B4 Inversion Control
reg(0x00B6) B6 B6 B6 B6 B6 Display Control
reg(0x00B7) B7 B7 Entry Mode Set
reg(0x00BF) BF BF BF BF BF BF ILI9481, HX8357-B
reg(0x00C0) C0 C0 C0 C0 C0 C0 C0 C0 C0 Panel Control
reg(0x00C8) C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 GAMMA
reg(0x00CC) CC CC Panel Control
reg(0x00D0) D0 D0 D0 Power Control
reg(0x00D2) D2 D2 D2 D2 D2 NVM Read
reg(0x00D3) D3 D3 D3 D3 ILI9341, ILI9488
reg(0x00DA) DA DA RDID1
reg(0x00DB) DB DB RDID2
reg(0x00DC) DC DC RDID3
reg(0x00E0) E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 GAMMA-P
reg(0x00E1) E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 GAMMA-N
reg(0x00EF) EF EF EF EF EF EF ILI9327
reg(0x00F2) F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 Adjust Control 2
reg(0x00F6) F6 F6 F6 F6 Interface Control

BTW, I've used the sketches from your post, they didn't work for me. Maybe its because I'm doing something wrong, please let me know.

Thanks, Ethan

It looks like you have a Mega2560 shield. Have you counted the number of pins on the shield? Will it mate with a Uno ?

Please post a link to the actual display that you bought.

David.

My shield has a total of 28 pins on it.

I have an Arduino Uno and an Arduino Mega2560. The TFT does not work for either of them, the screen just stays a blank white.

This is the shield I got. Its from Ebay and was from Hong Kong, so I couldn't really expect much from it.

http://www.ebay.com.au/itm/Uno-LCD-2-8-inch-Display-TFT-Touch-Screen-Module-Transfer-PCB-Board-for-Arduino-/191640851139?hash=item2c9eaf52c3:g:Ge0AAOSwpDdVcVEi

Ethan

My apologies. That certainly looks like a regular Blue 2.8" Uno Shield. However the link has also got two pictures of a Red 2.8" shield. I have never seen one like that. If you have a Red shield, what part number is printed on U3 and U4?

If I run the sketch on a Uno without a shield, I get

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)

diagnose any controller
reg(0x0000) 00 00 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 04 04 04 04 Manufacturer ID
reg(0x0009) 09 09 09 09 09 Status Register
reg(0x000A) 0A 0A Get Powsr Mode
reg(0x000C) 0C 0C Get Pixel Format
reg(0x0030) 30 30 30 30 30 PTLAR
reg(0x0033) 33 33 33 33 33 33 33 VSCRLDEF
reg(0x0061) 61 61 RDID1 HX8347-G
reg(0x0062) 62 62 RDID2 HX8347-G
reg(0x0063) 63 63 RDID3 HX8347-G
reg(0x0064) 64 64 RDID1 HX8347-A
reg(0x0065) 65 65 RDID2 HX8347-A
reg(0x0066) 66 66 RDID3 HX8347-A
reg(0x0067) 67 67 RDID Himax HX8347-A
reg(0x0070) 70 70 Panel Himax HX8347-A
reg(0x00A1) A1 A1 A1 A1 A1 RD_DDB SSD1963
reg(0x00B0) B0 B0 RGB Interface Signal Control
reg(0x00B3) B3 B3 B3 B3 B3 Frame Memory
reg(0x00B4) B4 B4 Frame Mode
reg(0x00B6) B6 B6 B6 B6 B6 Display Control
reg(0x00B7) B7 B7 Entry Mode Set
reg(0x00BF) BF BF BF BF BF BF ILI9481, HX8357-B
reg(0x00C0) C0 C0 C0 C0 C0 C0 C0 C0 C0 Panel Control
reg(0x00C1) C1 C1 C1 C1 Display Timing
reg(0x00C5) C5 C5 Frame Rate
reg(0x00C8) C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 GAMMA
reg(0x00CC) CC CC Panel Control
reg(0x00D0) D0 D0 D0 D0 Power Control
reg(0x00D1) D1 D1 D1 D1 VCOM Control
reg(0x00D2) D2 D2 D2 Power Normal
reg(0x00D3) D3 D3 D3 D3 ILI9341, ILI9488
reg(0x00DA) DA DA RDID1
reg(0x00DB) DB DB RDID2
reg(0x00DC) DC DC RDID3
reg(0x00E0) E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 GAMMA-P
reg(0x00E1) E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 GAMMA-N
reg(0x00EF) EF EF EF EF EF EF ILI9327
reg(0x00F2) F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 Adjust Control 2
reg(0x00F6) F6 F6 F6 F6 Interface Control

As you can see, the "reg" is echoed exactly. I would get a similar output with a Mega2560 shield because they are write-only. That is why I suspected a Mega Shield.

Your output is echoed exactly for all regs above 0x80. And for regs below 0x80, it is reg ORed with 0x80.

Sorry, I can not help you. Your shield does not return any meaningful values. Can you try it plugged into another Uno or plugged into your Mega2560?

If you get the same result, I would ask Ebay for your money back.

David.

No worries, I actually have asked the seller for my money back a while ago and I got it back. I just wanted to see if I could bring this shield back to life after one year because I was bored. But anyways, thanks for at least trying to help me :slight_smile:

Thanks again

Ethan

Is it a Red or Blue pcb?

Bit #7 is always reading high. I would look carefully at the soldering on the HC245 chips. Mind you, the trickiest soldering is of the micro-ribbon from the LCD module. You must unpeel the double-sided tape to release the module from the pcb.

David.

I have a blue pcb, and what is it you wanted me to look at?

Ethan

Blue 2.8" shields are very common. They come with a variety of controllers but probably not quite as many as the Red 2.4" shields.

Modules and chips tend to just work. Pcb traces and soldering are more likely to fail.

I would spend a few minutes with a magnifying glass to inspect the pcb soldering. Check for bridged traces and "dry" joints. Mend with a soldering iron. I would not bother to dismantle the sticky tape.

Try with tft.begin(0x9329). If you get no response, chuck the shield in the trash.

Yes, it is always worth trying to fix something. But please put all the information into your message / question from the start. You will get a good answer.

David.

I used graphicstest.kbv and started with tft.begin(0x9329);

As usual, the screen stayed a blank white and it said in the serial monitor:

Serial too 0ms to start ID = 0xD3D3

I tried starting the code with tft.begin(0xD3D3); instead, but still, nothing happened and the serail monitor displayed the same message.
:frowning:

So i guess this is the end for my shield. I will keep it and maybe come back to it a few years later.

Thanks for your effort,

Ethan

You can NEVER use tft.begin(0xD3D3)

readID() will return 0xD3D3 from a write-only shield. Your faulty shield is behaving like a write-only.
It is up to the punter to "know" what her write-only shield contains. And use the appropriate ID.

If you look at the examples, if I receive an ID of 0xD3D3, I force it to work with a write-only by using a specific real ID. For example, I own a 16-bit write-only with a "0x6814" controller. Many people have 16-bit shields with an ILI9481 (ID = 0x9481)

David.