Ground Issue (?) with Waveshare 1.8" TFT Display

Hello Everyone! Forgive what I think is noob question, but I am having a very odd issue with a TFT display and ground.

Here is what I am using:

  • Elego Uno R3 board

  • Waveshare 1.8" TFT display with ST7735S controller

  • Connected as follows (Display - Uno): VCC - 3.3V, DIN - 11, CLK - 13, CS - 10, DC - 7, RST - 8, BL - 9

The issue I have is with the GND connection. When GND on the display is connected to GND on on the Uno, the display is completely washed out and virtually unreadable, as seen in the video.

With GND disconnected, the display is more or less normal (with some odd artifacts at the edges).

I thought that there may be a USB ground fault, but I get the same results when powering the Uno from a 9V battery. Also tried different GND pins on the Uno, and VCC connected to 5V instead of 3.3V, but the result is the same. I can adjust backlighting by analogWrite to pin 9, but that doesn't effect the issue.

Also same result with TFT.h and ucglib.h libraries.

The only thing I can think of is that maybe this display is not 5V tolerant and I need pull-down resistors to bring all the signals to 3.3V? However, the manufacturer's specs and provided example for working with an Arduino do not mention this.

Any advice on what am I missing?

Hello trailsurfer604,
Welcome

Please can you post your photos of your set up here as per the forum instructions you were directed to. Please also post a schematic, not a list of this connected to that. Hand drawn is fine and photographed is fine.

Thank you.

What library are you using? Some photos in which we can see the wiring could be of help.

PerryBebbington:
Hello trailsurfer604,
Welcome

Please can you post your photos of your set up here as per the forum instructions you were directed to. Please also post a schematic, not a list of this connected to that. Hand drawn is fine and photographed is fine.

Thank you.

Thank you, Perry. I've now provided images of the board and a hand-drawn schematic. Appreciate the help.

TFTLCDCyg:
What library are you using? Some photos in which we can see the wiring could be of help.

Hi, I've now added photos to my post. I've tried this with TFT.h and ucglib.h libraries, with same result.

Thanks, that's MUCH better.

Are you sure that Vcc is meant to be powered from 3V3? How did you arrive at that voltage instead of 5V? I'm not familiar with the particular display and it would be a lot more helpful if they had printed the actual voltage on the PCB but they didn't...

The Waveshare is "like" the Red 1.8 inch SPI displays except that it has no 3.3V regulator.
Which is why you should connect VCC pin to 3.3V on the Waveshare.

Note that ST7735S controller requires 3.3V logic.
According to the ST7735 datasheet it is not input voltage tolerant.

However the ST7735 "seems" to tolerate 5V logic. Or at least punters "seem" to get away with 5V logic from Uno, Mega2560, ...

Note that the Waveshare docs only provide examples for 3.3V boards like STM32, ...
And are ambiguous about connecting to a 5V Uno.

So I am exceedingly sceptical of this thread.
But mostly I am sceptical of people that do not use level shifters with 5V logic.

David.

PerryBebbington:
Thanks, that's MUCH better.

Are you sure that Vcc is meant to be powered from 3V3? How did you arrive at that voltage instead of 5V? I'm not familiar with the particular display and it would be a lot more helpful if they had printed the actual voltage on the PCB but they didn't...

Vcc at 3.3V appeared to be indicated in the Waveshare docs. That said, I tried with both 5V and 3.3V, with no difference.

That said, I tried with both 5V and 3.3V, with no difference.

You deliberately went outside the ST7735 datasheet spec.

I suggest that you use some level shifters. Simple enough with a few resistors.

Quite honestly, people have used ST7735 displays for years and years.
Connect VCC=3.3V, GND=0V and level shift the logic signals.

Or buy a proper 3.3V Zero, Due, Teensy, STM32, ...

David.

david_prentice:
I suggest that you use some level shifters. Simple enough with a few resistors.

Quite honestly, people have used ST7735 displays for years and years.
Connect VCC=3.3V, GND=0V and level shift the logic signals.

Or buy a proper 3.3V Zero, Due, Teensy, STM32, ...

Thanks for the advice. Like I said, I am new to this.

For logic shifting, is there downside to using an 74LVC24 for this? (current draw is not an issue as this project will not be battery powered).

If you have some 4k7 and 10k resistors it is easy to make a "voltage divider"
You can actually "get away with" 4k7 series resistors

What resistors do you have on your bench ?

I can't find 74LVC24
I can find 74LVC240, 244, 245. I am fairly certain that they will do the job.
Or TSX0108, ...
Or CD4050, ...

David.

My bad, 74LVC245. The last digit got lost.

I have plenty of resistors to make a 3.3/5V voltage divider in a number of different combinations, but using a chip seems cleaner if there is no specific downside.

Logic shifter boards are very cheap on Ali-express, but not so cheap locally, while the 74LVC245 is $1.50 at my local electronics store.

If you have resistors you can put them neatly on breadboard or Protoboard.
And be fully operational this evening.

I am duly impressed by people that have a local electronics store

I buy parts from Farnell or Ebay. Farnell < 18 hours. Ebay < 48 hours.
If time is not important I can buy from China ~ 300 hours

David.

david_prentice:
If you have resistors you can put them neatly on breadboard or Protoboard.
And be fully operational this evening.

That's the plan :slight_smile:

Well, the problem was solved by a combination of logic shifter IC and changing to Arduino Micro.

I couldn't get it to work with the Uno but, after getting to work with the Micro, I realized that I may have swapped clock and DC pins when connecting to the Uno, which of course explains why it did not work even with the logic shifter.

When I have a chance I'll try it with the Uno again.