1.8" TFT - Definite Solution to flicker, lines, streaks when loading.

I would like to contribute...
Got one of these really cheap 1.8" TFT of eBay. Just like on the picture below. Great value for the price. Got it up and running in no time. Very nice. Right. Just one little problem... flickering streaks.
I did search InterWeb and can't find right answer. So I did my own research and found root cause of what often described as flicker, to me it is more like flickering lines when loading data into display. Actualy, if you have more than one device on SPI - any SPI activity will cause that.

First of all the specs. There is not much available, but the fact is that right out of the box it must be powered by 5V but interface must be 3.3V. Keep that in mind for your next project.

Interface is definitely SPI, not I2C as some suggested because of signal names on the board. SDA is actually MOSI. If you planning to use it together with card reader you can connect both MOSIs and SCKs together right away. Obviously CSs must be on different Arduino's pins, any free DO will suffice, just don't forget to declare it accordingly in the header of your sketch.

Solutions, options:

  • What I did, is to insert resistive dividers into each signal from Atmel to TFT. It consists of one in series of 180 Ohm and one 330 Ohm parallel to the inputs to ground, for each input. (you don't need to do anything to MISO, haha like soup)
  • Some more expensive versions of this display do have onboard level shifters, 5 to 3.3. You may prefer to add one like this.
  • Convert your Atmel board and display to 3.3V. Many ways to do that for Arduino. On display board you have to put solder blob across JP1.

I did test solution 1 and 3. Crystal clear update. Great!

The cause:

I'm surprised to not find actual answer before researching it myself. Anyway. Most Arduino's running at 5V. Present display powered internally, including IOs, at 3.3v. Atmel's IOs drive current is pretty high. Display's inputs have clamps to VCC. Most signals idle high. When signals are 5V - current from signals through clamp diodes back feeding VCC and actually raising voltage on 3.3V regulator on display board to ~3.9V. During intense communications this voltage drops a bit and display's analog circuitry thrown a out of wack causing streaks on display.

Cheers Y'all!

hi, I am looking at this: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=200938536170&ssPageName=ADME:X:RTQ:US:1123

does it have on-board level shifter already? so can I use it with 5v arduino uno?

boi_goog:
hi, I am looking at this: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=200938536170&ssPageName=ADME:X:RTQ:US:1123

does it have on-board level shifter already?

No.

A lot of people have bought those (me included) thinking they would work with Arduino. They don't. They need external level shift components.

Adding a level shifter to the PCB would cost them practically nothing. You can bet they'll appear soon (I'm amazed they even sell them at 3.3V, that's useless to most people).

When they do, you can bet your life it will say "5V compatible!!!" all over the auctions in huge letters.

oh so it will work if I use level shifter and power it with 3.3v? if yes, will it be compatible with adafruit's library? i think it uses sst7735s while adafruit uses sst7735r, are all sst7735's(R,S,B) compatible?

boi_goog:
oh so it will work if I use level shifter and power it with 3.3v?

I think so.

boi_goog:
if yes, will it be compatible with adafruit's library? i think it uses sst7735s while adafruit uses sst7735r, are all sst7735's(R,S,B) compatible?

It should do. Extra letters at the end are usually different chip sizes or interfaces (SPI vs. 8-bit), not different functionality.

can I also use this on the 1.8" tft lcd?:

can anyone confirm if the above wiring can also be used or the 1.8" tft display?

Using high value resistors in series is a hacky way to level shift, and it totally
relies on the receiving chip having protection diodes (have you checked?).

The main problem is that you can't clock very fast with 10k resistors, and 1k
resistors might burn out the protection diodes. Resistive divider of say
470 and 1k would be useful for the SCLK and MOSI lines to get decent
data rates.

Streaks on the display when uploading on a TFT is totally new to me - which
CoG chip is involved? The CoG normally totally isolates the display update from
the RAM access (the RAM is multi-ported).

(*) CoG = chip on glass, the sliver of silicon that drives gates/sources of the TFTs
and handles the frame buffer.

from the nokia module pinout:
RST
CE
DC
DIN
CLK
VCC
LIGHT
GND
while the 1.8" tft has this pinout:
LED
SCK
SDA
A0
RESET
CS
GND
VCC

obviously, I know that VCC, GND,RESET, LED are common to both, how am I going to match the rest? I am really a noob.

Equal singals are:
SCK = CLK
SDA = DIN
A0 = DC
RESET = RST
CS = CE

Unfortunately here is mixed I2C and SPI terminology, correct naming is

SPI:
SCLK (Serial Clock) - equal to SCK or CLK above
MOSI (Master Out Slave In) - equal to SDA above
MISO (Master In Slave Out) - equal to SDO on other TFTs
SS (Slave Select) - equal to CS or CE (Chip Select, Chip Enable)
DC = A0 = RS (I do not know what those abbreviations mean)

I2C:
SCK/SCLK/C (Serial Clock)
SDA/DATA/D (Serial Data Line)

Also is used in terminology:
OE (Output Enable)
WE (Write Enable)

thank you, I was able to make it work,

but I am facing another problem, the built-in sd can seems to be not working, when I compare it to my sd card module, they have same pins except that the lcd does not have Vcc and Gnd, so I have assumed that these pins were connected to the Vcc and Gnd pins of the lcd, I tried to make it work but I could not make it work, I suspect that the gnd and vcc pins of this module are not connected
but their schematic seems that it should have beed connected:

someone can upload the code pls?