Using TPIC6C595 shift register with no success

I'm trying to hookup an Nano Every to a TPIC6C595 shift register on my bread board with no luck.

The shift register is wired this way:

  • Pin 1 - Vcc : 5V from arduino
  • PIN 2 - SIN : D9 (data_in)
  • PIN 7 - CLR : 5V+ with a 10k resistor (pull high)
  • PIN 8 - G : GND (pull down)
  • PIN 10- RCK : D11 (latch_pin)
  • PIN15-SRCK : D10 (clock_pin)
  • PIN 16 - GND : GND from arduino

For the test, it's powered by the Arduino via the USB cable connected to my computer.

I have a 0,1uf capacitor between shif register VCC and GND.

Leds are connected to the 5V+, then trough a resistor, and finally to shift register outputs pins (drains).

I can't get nothing out of it, any idea ?
I've tried with a regular Nano, but no luck too...

Are the cheap breadboard and wire jumpers might be the reason ? How I know if they are of quality ?

My test sketch is :

#include <Arduino.h>
// Define pins
#define DATA_PIN 9   // Connect to DS (pin 2) of TPIC6C595
#define CLOCK_PIN 10 // Connect to SRCK (pin 15) of TPIC6C595
#define LATCH_PIN 11 // Connect to RCK (pin 10) of TPIC6C595

// Define number of LEDs
#define NUM_LEDS 8

void clearLEDs();

// Define LED patterns
byte patterns[] = {
    B00000001,
    B00000010,
    B00000100,
    B00001000,
    B00010000,
    B00100000,
    B01000000,
    B10000000};

void setup()
{
  // Initialize serial communication for debugging
  Serial.begin(9600);

  // Set pins as output
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
}

void loop()
{
  // Loop through each LED pattern
  for (int i = 0; i < NUM_LEDS; i++)
  {
    // Shift out data for current LED pattern
    shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, patterns[i]);

    // Latch the data to update the outputs
    digitalWrite(LATCH_PIN, HIGH);
    digitalWrite(LATCH_PIN, LOW);

    // Delay for visualization (you can adjust the delay as needed)
    delay(500);

    // Clear the LEDs for next pattern
    clearLEDs();
  }
}

// Function to clear all LEDs
void clearLEDs()
{
  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, B00000000);
  digitalWrite(LATCH_PIN, HIGH);
  digitalWrite(LATCH_PIN, LOW);
}

Your code and connections looks correct for me. Did you try to test another chip?

I've it (TSSOP) on a PCB presoldered with same connections, but pin 8 is not ground (design mistake). So it doesn't work, even if I ground that pin with a jumper...

So I've tried with a breadboard an another chip, DIP-16, with no luck. So I'm questionning my breadboard and jumpers quality, those are cheap ones out of Aliexpress.

In fact I'm questionning everything now !

I am a product of the 20th century.
You cannot go wrong using 22 AWG (#22) solid core wire, a wire stripper and a 'nipper'.
Since everything is presented in the "jumper" paradigm, and 3 or 4 pinned thingies from ama-baba, as though that's the best and/or only way to get things done, you guys don't learn good things.

1 Like

If it works with the flimsy jumpers, it will work with everything !

Anyway I'll listen to you and give it a try with solid core wires. It just that I'm so clumsy with this kind of things that jumpers are easy going. Maybe not if they can proved nothing...

Do you feel the same about breadboard out of amababa ?

There are many possibilities. The round, wire-end jumpers fail more than the box pin sort.
And there are counterfeit (junk) ICs.

Ok 10 points for the solid core wires jumper, it works wit my DIP-16 IC from Digikey.

My TSSOP shift registert IC is from JLCPCB, STMicroelectronics, do you recon that as a fake or cheap knock off?

There's a flaw, some missing Gnd or other as you noted.

Please, always show us a good schematic of your proposed circuit.
Show us good images of your ‘actual’ wiring.

You know about breadboards with split power rails in the middle indicated by a break in the otherwise continuous blue and red lines ?
Pin 8 is not really ground. It is NOT Enable. But, yes, it has to be grounded for the thing to work.

The TPIC comes in several packages, with different pinouts.
Post a picture of the setup.
Leo..

Thanks to all, I've found the problem with the TPIC6C595 TSSOP ICs on a PCB.

First there was the flimsy jumpers use on a breadboard : I used solid core wires and all was better.

Then I found that pin 7(CLR) wasn't pull HIGH, so the floating pin cause some problems. I don't know why, but on my breadboard with DIP16 package, the floating pin was no issue. But for the TSSOP package on the PCB, it was a absolute requirements. I've manage to solder a 10k resistor between pin 7 and VCC, works great now.

So sketch is all right, need to have the Pin 8(G) pull down and the pin 7 (CLR) pull high for the shift register to work properly. I had miss the pin 7 requirements initially.

This would be the corrected schematics :

But in your first message the pin clearly declared as pulled HIGH:

Did you write the requirements and did not fulfill them yourself?

I was trying to troubleshoot a TSSOP package on a PCB by reproducing it on a breadboard. So yes I did put the pin 7 high on my breadboard, but I've observed later it wasn't on the pcb...

So shift register wasn't working on the breadboard because of the flimsy jumpers.

It wasn't working on the pcb because of the pin 7 wasn't pulled high.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.