2.8" TFT woes

SteveSFX

Well-known member
Hey all
Got a 4.1 Teensy.

Trial connected it to a 2.8" TFT screen I had kicking around. Seemed to be all good, but the screen was a bit beaten.

So I grabbed 2x more of what I assumed was the same screen:

https://www.amazon.co.uk/dp/B07YTWRZGR/ref=pe_27063361_487055811_TE_dp_1

So connected one up....

TFT Pins:
CS = 10
RST = N/C -1
DC = 9
MOSI = 11
SCK = 13
MISO = 12

Touchscreen Pins:
T_CLK = 13
T_CS = 8
T_DIN = 11
T_DO = 12
T_IRQ = 2

Usual pins.

Nothing. I had VCC at 5v (as my last one) but comms are at 3.3v. On the back there is a jumper (J1) that was open. This is correct.
The VCC pin feeds an onboard 3.3v regulator and the jumper shorts than out so you can run the VCC at 3.3v if you wish. So open = 5v supply.

Tested the output of the regulator. Yep, 3.3v

So.... nothing for about 2 hours. Finally, I switch the VCC to 3.3v..... still nothing (the damage is done).
Got the other screen and plugged it in and it fired up. GREAT.... the other one is a dead screen then.....

Nope. Connected the VCC to 5v (after checking J1 was open) and now nothing.

So. J1 makes no difference. You kill it with anything over 3.3v from what I can see. Technically, through no fault of mine.
Assume I have killed the driver. I hate this hobby sometimes.

So unless anyone has any ideas, that is 2x screens for the landfill (and my goddam PCB that is on the way will be wrong)
 
@SteveSFX: If I'm viewing the same Amazon item (Amazon US vs. Amazon UK), for about the exact same price, you could just get the PJRC touchscreen display & be so much more sure about what you're getting, no ?? Personally, after much trial & tribulation, I've had really good experience with the PJRC device in quite a variety of projects, both on hobby devices & on devices for sale. Cheap knockoffs sometimes aren't so cheap . . . lessons learned the hard way for me !!

Mark J Culross
KD5RXT
 
Don't think I can get that in the UK....
That pinout is identical to these. I just don't get how it killed them
 
Ah, didn't realize that PJRC products are not all available outside the US. Maybe someone actually inside the UK will have something more useful to offer. Sorry for the wasted bandwidth . . .

Mark J Culross
KD5RXT
 
I am guessing that maybe that one was defective. Could be wrong.
You might try getting another one.

I have also gotten similar ones from ebay.
 
I bought 2 and both are now dead.... so something is wrong.
I am 99% sure I have them wired correctly. I have ordered another screen off Ebay. I'll try that
 
Is that feed to the backlight via a 100R resistor fed from 3.3v or 5v? I used 5v *and it was fine in my trial).
Paul shows it on that posting as connected to VIN with 100ohm, so would assume +5v should work. So should 3.3v...
Wiring breadboard? Or other, like your own board? If I am reading correct, sounds like not even the backlight is doing anything?

When all else fails, I will typically run my(and @defragster) hi-low test:
Code:
#include <Arduino.h>
 void setup() {
  Serial.begin(115200);
  while (!Serial && millis() < 4000 );
  Serial.println("Compile Time:: " __FILE__ " " __DATE__ " " __TIME__);
  Serial.printf("Num Digital Pins: %d\n", NUM_DIGITAL_PINS);

  testForShorts();
 
}

uint32_t cnt = 0;
void loop() {
  cnt++;
    allPinTest( cnt );
}

uint32_t pinLast[NUM_DIGITAL_PINS];
void allPinTest( uint32_t cnt ) {
  uint32_t ii, SET;
  Serial.print("PULLDOWN Start Vals:\n  ");
  SET = 0;
  Serial.print("PULLDOWN :: TEST to 3.3V\n  ");
  for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
    pinMode( ii, INPUT_PULLDOWN );
    delayMicroseconds( 5 );
    pinLast[ii] = digitalReadFast( ii );
    if (pinLast[ii]) {
      Serial.print("\nd#=");
      Serial.print( ii );
      Serial.print( " val=" );
    }
    Serial.print( pinLast[ii] );
    Serial.print(',');
  }
  Serial.println();
  Serial.println();
  while ( 1 ) {
    uint32_t jj, dd = 0, cc = 0, ee=4;
    cc = 0;
    for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
      jj = digitalReadFast( ii );
      if ( jj != pinLast[ii] ) {
        dd = 1;
        cc++;
        pinLast[ii] = jj;
        Serial.print("d#=");
        Serial.print( ii );
        if ( pinLast[ii] ) Serial.print( "\t" );
        Serial.print( " val=" );
        Serial.print( pinLast[ii] );
        Serial.print(',');
      }
      if ( cc > 1 && ee ) {
        Serial.println(">>> MULTI CHANGE !!");
        ee--;
      }
      if ( Serial.available() ) {
        while ( Serial.available() ) Serial.read();
        if ( 0 == SET ) {
          SET = 1;
          Serial.print("PULLUP :: TEST TO GND\n  ");
        }
        else {
          SET = 0;
          Serial.print("PULLDOWN :: TEST to 3.3V\n  ");
        }
        for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
          if ( 0 == SET )
            pinMode( ii, INPUT_PULLDOWN );
          else
            pinMode( ii, INPUT_PULLUP );
          delayMicroseconds( 20 );
          pinLast[ii] = digitalReadFast( ii );
          if (SET != pinLast[ii]) {
            Serial.print("d#=");
            Serial.print( ii );
            Serial.print( " val=" );
            Serial.println( pinLast[ii] );
          }
        }
      }
    }
    if ( dd ) {
      dd = 0;
      Serial.println();
      delay( 50 );
    }
  }
}

void testForShorts() {
  uint32_t ii;
  Serial.print("Quick Test for Shorts to adjacent pin");
  Serial.println("First pull pins down and see if the next one follows");
  for ( ii = 0; ii < NUM_DIGITAL_PINS-1; ii++) {
    pinMode( ii+1, INPUT_PULLDOWN );
    pinMode( ii, OUTPUT);
    digitalWrite(ii, HIGH);
    delayMicroseconds( 5 );
    if (digitalRead(ii+1)) {
      Serial.printf("%d:%d ", ii, ii+1);
    }
  }
  Serial.println("\n Now try Pull up and see if setting low follow");
  for ( ii = 0; ii < NUM_DIGITAL_PINS-1; ii++) {
    pinMode( ii+1, INPUT_PULLUP );
    pinMode( ii, OUTPUT);
    digitalWrite(ii, LOW);
    delayMicroseconds( 5 );
    if (!digitalRead(ii+1)) {
      Serial.printf("%d:%d ", ii, ii+1);
    }
  }
  Serial.println(); 
}
To ring out the pins. It has happened to me more than once to find out I had missed plugging something in by one pin...
Or that my soldering had issues...
 
Its a brand new breadboard. I am 100% its correct. All connections have be tested.
I tried this screen before committing to buying a couple more and it was fine.

It's wired exactly as that screen is on the PJRC page.

The backlight works fine on either 3.3 or 5v (there are nice clean 3.3v and 5v rails on my breadboard - not using the Teensy 3.3v reg).

Like I said, the jumper J1 is supposed to allow you to run the screen off 5v (no jumper) or 3.3v (shorted - it shorts the regulator).
J1 isn't soldered, and 5v killed the screen when applied to VCC. All the rest of the SPI comms (not connected the touch pins or SD slot) are the usual 3.3v Teensy SPI pins.

After faffing around with the screen for ages, I got the other one bought from the same place and swapped it out. I happened to have VCC connected to 3.3v at that time.
The screen came on, so I assumed the other one was dud.

So, I connected the VCC pin only to 5v and that was all she wrote. Nothing since. Checked the Jumper - open. Checked the regulator and it's supplying 3.3v

I don't get it.
 
Tried another 4.1. Same result. Trying the pin high/low test next but I am sure its fine (can't believe 2x Teensy 4.1s have died)
 
When all else fails, post code and a photo. Many eyes out here.
Any possibility to observe signals with oscilloscope for any reasonable looking activity?

This is a long shot..., disconnect 'touch' and concentrate on LCD. Good advice from PaulS.
 
Touch isn't connected. Nor is the SD slot (which apparently don't work very well on these boards anyway).
99.9% sure these are just crap screens
 
When you measured the regulator's output did you test against ground or just between the regulator's pins?
If they did something silly like putting a LED between the negative terminal and ground, the output voltage would be increased...
 
The Teensy test routine above works fine.... so the Teensy is fine.
The voltage is measured at the VCC and GND pins on the screen. 5.01v at VCC. All fine there.
I also have a little digital voltmeter on my (Large) breadboard rails.
 
Back
Top