Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

TLC5958 simple non-multiplexed configuration

Other Parts Discussed in Thread: TLC5955, TLC5958, TLC5957

I would like some help figuring out the simplest way to drive the TLC5958 in a non-multiplexed configuration similar to how the TLC5955 would operate.  In this case all I would like to do is send data for one "line" without using the VSYNC command to change between memory banks.  Is this possible?  

I am trying to simplify software complexity to reduce time to prototype.  My application is only 36 LEDs.  I probably should have chosen the TLC5955 but I have already laid out a board to use the TLC5958.

One potential problem I have is that in order to maximize my GSCLK rate, I am using the buffered output of my 12 MHz crystal on an arduino microcontroller (ATmega328p).  This means that I will not be able to create a momentary delay before starting a new line.  If I am only using one line, can I use a continuous GSCLK?

What would be the proper signal flow for using the LAT pin and writing SPI data for new GS values?

Thank you,

Dan

  • To add to / clarify my original question:

    Can I send data for 48 channels, followed by a WRTGS command, then simply run GLCK continuously without further intervention and let the LED driver display those PWM levels indefinitely until next update?

    Do I need to change banks / use the VSYNC command when updating levels, or can I avoid VSYNC altogether and only use Bank A?

    Thank you
  • To anyone out there working with the TLC5958 on a simple application, here's what I did to make it work:

    1. Ran GSCLK continuously from 12 MHz clock output pin from microcontroller

    2. Used Vsync command after every update of the 48 grayscale values, shifting in data and asserting WRTGS command after every 6 bytes (3 16-bit values per RGB led).

    The banks switched automatically, this was not a problem for me.  The 5958 was overkill for my application but still worked fine.  The only issue I have is a blip of all channels when I power the device up, and not further problems.  I don't know if GSCLK running continuously affected channel 1's performance as another poster discussed because I was only using channels 13-48.

  • Hi Dan,

    Any chance you can share some of your code for driving a TLC5958 using an Arduino? I'm having a lot of trouble getting a TLC5957 to work with an Arduino and I was hoping looking over your code may help me figure out where I am going wrong.

    Thanks,
    Dan
  • Hi Dan,

    I can share the library I modified from Zack Phillips' TLC5955 library.

    Regards,

    Dan

    TLC5958.zip

  • Thanks! I was previously trying to modify Zack Phillips' TLC5955 library, but couldn't figure out where I was going wrong. Maybe I can pull apart your code and figure it out. Worst case scenario, I'll just have to order a bunch of TLC5955's, as they would work fine for my project.

    Thanks again,
    Dan
  • That's what I would have done, less work :)  I had to stick with the 5958 because we had already ordered boards before I realized there was more than one 48-channel LED driver from TI, and I designed for the wrong one.  I didn't have time to rev the board before the meeting I needed to show it in, so, "fix it in software," as they say.

    Dan