This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLC5916 output state retention issue.

Other Parts Discussed in Thread: TLC5916

Hi,

I am using two cascaded  TLC5916 chips to drive 12 LEDs, mixed green and red. this is a very straight forward task, which doesn't require brightness control or anything like, just turning on LEDs and OFF as required.

My implementation is as follow. I use a 16 bit field variable ( uint16_t current alarms), which is then streamed into the two chip as follow:

void update_status_leds(unsigned int CurrentAlarms){
int i = 0;

//clear outputs
P1OUT &= ~(LATCH_ENABLE|OUTPUT_ENABLE|CLOCK_PIN);

for(i = 0; i < 16; i++){
if(CurrentAlarms&0x01){
P1OUT |= SERIAL_DATA;
}else{
P1OUT &= ~SERIAL_DATA;
}
//toggle clock
P1OUT |= CLOCK_PIN;
P1OUT &= ~CLOCK_PIN;
//shift to the next bit
CurrentAlarms >>= 1;
}
//latch stored data to output registers
P1OUT |= LATCH_ENABLE;
P1OUT &= ~LATCH_ENABLE;

}

I believe the code above is/ might be correct.

Once this function is called, the LEDS are turned or off as expected, except that after a few seconds 10-20 seconds they all turn off.

I have no Idea why that is happening. I have tried to refresh the update in an infinite loop, but that only led to annoying flickering of LEDs...i.e after similar time frame elapsed ( 10-20 secs) the leds started to flicker...

On hardware side of things:

Rext = 1kohm,

Vled = Vcc = 3.6V, i.e connected on the same supply line ( can this be a problem actually?)... a decoupling capacitor of 100nF is used on both TLC5916

Anybody has had a similar issue? 

Any help would be great, thanks!

Olivier

  • Olivier,

    You might want to check the TLC5916 for an error condition.  You would have to get into the special mode and read back any output errors as discussed on page 18 of the datasheet (Reading Error Status Code in Special Mode).

    The first thing I suggest to check is the power dissipation on the TLC5916.  Do you know the forward voltage (VF) of the LEDs?  For the TLC5916, the power calculation would be IOUT * (VLED-VF) * # of Outputs on + VDD * IDD.  For your device, it might be:

    0.01875 * (3.6-2.2) * 8 + 3.6 * 0.014 = 0.26W

    For the PW package, that would result in an approximate temperature rise of 30C above ambient.  Definitely not enough to cause an over-temperature error from room temperature (25C).  The lower the VF, the more power will be dissipated in the TLC5916.

    Regards,

    Dick

  • Thanks Dick,

    I figured out  that the voltage regulator I am using is not cappable of the delivering the power of all LEDs, thus the Vdd, coming from the regulator, was dropping drammatically from 3.6V to 2.4V... I just implemented a software fix, instead of driving the LEDs continuously I am dimming them by supplying a PWM signal on OE. And this seems to fix the problem, in fact it reduces the consummed power of the regulator used by 80%. So the regulator is not heating up now :-D.

    Anyway thanks for the pointers.

    Olivier