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.

TLC5928: Latch Functionality Issue

Part Number: TLC5928

Hi,

I have a board with two sets of 3 7 segment displays, one green and one red set. The sets run parallel on the SPI MOSI, so the same data enters both sets of drivers, then the latch is used to set the data. My problem is that if I run a write command to red, matching the data sheet timing diagrams the red display will properly update when the latch is set high, but my green display will update to random bits, and vice versa if I update the green display. I was under the impression from the data sheet that if the latch is set low the data registers would not update or change.

Thanks.

  • Hi, David,

    Sorry for the trouble you're facing now.

    If you send the same data to both red and green drivers, they should work as the same way.

    Would you please send me the schematic for reference?

    Thanks.
    Regards,
    Kenneth
  • Hi Kenneth,

    Thanks for the help. I made a slight mistake, the chips are actually TLC59282. I think the mistake is in the timing or latching bits. I have attached the display schematic. I am feeding data using 3 wire SPI setup.DIsplay.PDF

  • Hi, David,

    From your schematic, it seems you're using the same SIN / SCLK but different latch signal?

    Are DBLTCH and WBLTCH the same signal?

    You can also refer to the attached TLC59283 code for reference.

    TLC59283_Sample Code.zip

    Please let me know if this solves your problem.

    Thanks.

    Regards,

    Kenneth

  • The latches are separate for each display, and the blanks will soon be separated. The goal is to be able to change and flash displays independently from each other while sending signal down a common line. The next best solution may be to break the MOSI where it parallels and run it in series, then one long array can be written to the displays and be manipulated in code.

  • Hi, David,

    OK.

    Please let me know if your problem is sloved.

    Thanks.
    Regards,
    Kenneth
  • Hi, David,

    I'll close this thread due to inactivity and if you have more questions please reply to it directly and it will open again.

    Please help to click "Resolve" if the problem is solved.

    Thanks.
    Regards,
    Kenneth
  • Kenneth Du said:
    Hi, David,

    OK.

    Please let me know if your problem is sloved.

    Thanks.
    Regards,
    Kenneth

    My code matches the example code. But the display set not being changed undergoes a BSR when the blank occurs. Does the LED driver do funny things when blanked but not latched?

  • Hi, David,

    If you don't latch data again, it should display the former data.

    I'm a little confused about your description, and if BLANK is high all channels should be forced off.

    Thanks.
    Regards,
    Kenneth
  • That's why I'm confused too. When I send new data I wait for the transfer to be complete, so I know my registers are full. Then I set BLANK high which turns all displays off, i set LATCH high for the display set I want to update, then wait and set LATCH low then BLANK low. When the display comes back on the set I latched reads correctly, but the set I didn't latch has undergone a bit shift right. In my current code I am sending 0x06 (0000 0110) three times (Makes a 1 on the display that is easy to debug) after blank comes back on the display that wasn't latched has the first two segments on making that read 0000 0011 (0x03) which is the BSR of my sent data. If I send more complex data I see the same problem, it just takes longer to decipher. But the data sheet says that LED driver output only changes on LATCH high, not BLANK high.

  • I separated the BLANK pins so I can now blank WB and DB independently. This is my code for writing to the DB display:

    SPI_Write(); //Call SPI write function
    while (!SPI0CN_NSSMD0); // Wait until the Write transfer has finished
    DBBLANK = 1; //Blank DB display
    T0_Waitms(1); //Wait 1 ms
    DBLTCH = 1; //unlatch DB
    T0_Waitms(2); //wait 2 ms
    DBLTCH = 0; //latch DB
    T0_Waitms(1); //wait 1 ms
    DBBLANK = 0; //Turn DB display back on
    }

    Nowhere in the SPI function is any pin related to the displays activated. My WB display is still changing and vice versa.
  • Hi, David,

    Would you provide your schematic and the waveforms (SIN/SCLK/LAT/BLANK) of your first time and when it is changed?

    I need to check whether you are latching the LOD/PTW data since "LOD and PTW data are latched into the SID data latch at the
    rising edge of BLANK and are present at the output of the SID data latch when BLANK is low."

    Thanks.
    Regards,
    Kenneth
  • Hi Kenneth,

    While trying to capture some waveforms as per your request I put a scope on the SPICLCK  to make sure it was making a good waveform. At this time I found a ground loop, upon removing it the drivers started working correctly. I can now print exactly per TI's data sheet. Thanks for all the help.