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.

TLC5973 EasySet

Other Parts Discussed in Thread: TLC5973, TLC59731

Goodmorning to all, I'm trying to develop an application using TLC5973 LED driver with a small 8 bit microcontroller. I can't find any information about the EasyStep 1-wire comunication interface. I readed the datasheet many times but it didn't help me so much...

My code is this:

#define PULSE() oLED = 1; oLED = 0;
void writeZero(){
    PULSE();
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
}

void writeOne(){
    PULSE();
    NOP();
    PULSE();
    NOP();
    NOP();
    NOP();
    NOP();
    NOP();
}

void writeWord(unsigned short word){
    unsigned char i;
    for(i = 0; i < 12; i++){
        if(word & 0x0800)
            writeOne();
        else
            writeZero();
        word <<= 1;
    }
}

void setLed(unsigned short R, unsigned short G, unsigned short B){
    writeWord( 0x03AA);
    writeWord( R );
    writeWord( G );
    writeWord( B );
    waitGSLAT();
}

With the oscilloscope all timing is right (I get a tcycle of 2us, with the writeOne function the second pulse is under 50% of tcycle) but no result are given on the output led. The LED is ok and I changed 3 different TLC5973 to ensure that also the driver is ok... 

Someone has an idea of what is going wrong?

Regards

Alessio

  • Hello Alessio,

    For TLC5973, the time between the 1st SDI rising edge of first data and the 1st SDI rising edge of next data should be less than 2*tcycle(fig19 of datasheet).
    Just want to double check if this is met, since there must have some delay between two "writeWord" functions. After writting 0x03AA, there will be some delay before write data for red led.
    Could you please share the waveform?

    Thank you

    Mike

  • It's funny... after 6h of hard working trying understand my mistake I discovered that the driver in my hand is not a TLC5973 but a TLC59731... Converted the code to do 8 bit transmission instead of 12 and the LEDs light up... Yes... I also add a current limit resistor for each LED...

    By the way the waveform is perfect... The microcontroller output a clean signal with the second rising edge on the right place :D

    Thanks for your reply  Mike!