A friend and I are trying to get the TLC5951 up and running with a single flashing LED and we are having a bit of hard time. We're using a timer interrupt on an Arduino to appropriately set the various registers and while we've had flickering, we haven't had a consistent on/off flashing. Before we further go down rabbit hole or debugging, I wanted to post the the CLKs, Latches, and other parameters to see if we are setting everything correctly.
You can view the plots here:http://22.214.171.124/TLC_5951_Plots/
It seems that there are issues with the plots you attached in your post. Could you please send them again?
If you define the problems you observe a little more in detail, it would be easier to help, I think.
Please make sure that you have a good GND connection of the IC and that the IC and the LED is on the same GND. In addition the connection of the bypass capacitor on the IC is critical, so please place it close to the pins.
I'm taking over for Benjamin, so apologies for the lag in responding to you. I'll upload new plots for you (and others) to look at with all the relevant signals labelled. Till then, could you tell me the value of the bypass capacitor you are suggesting? I have not used one, and overlooked the one shown on the first page of the user manual.
To recap my set-up:
1. I am generating my command sequences with an Adruino UNO (Atmega 328 MCU).
2. My laptop powers the Arduino, and a separate regulated power supply provides 5V to the TLC. The ground for the Arduino and TLC are connected.
3. Currently I am sending GSSIN signals first, then latching them, and playing them out, and repeating the same GSSIN signals. Therefore, I alternate sending signals and playing them out.
4. The DC/BC/FC/UD signals are generated using a DCSCK clock. They are sent out simultaneously with the first GSSIN signals, and not updated.
5. My issue is that the single LED (R0) that I am trying to drive at near full intensity is _not_ lighting up.
Below is a snapshot from my oscilloscope showing three of the signals (GSLAT, GSSIN, and GSSCK) I'm sending from my Arduino. I'm monitoring (GSSOUT) on the bottom trace. My understanding is that GSSOUT is the same as GSSIN with a delay. However, it clearly looks different. The timing in the signals seem reasonable, as can be seen in the second and third snapshots (zoomed in versions of the start and end of the first figure).
Any suggestions on how to proceed in debugging are very much appreciated. [PS I added a second 0.1uF capacitor between the Vcc and GND pins as close to the chips leads as possible; didn't help the problem).
It seems that the timing is ok, I just would test if anything changes when GSSIN or GSLAT are going high exactly when GSSCK is going low.
Maybe below information from the datasheet helps to solve the issue:The PWM operation for each color group is controlled by a 12-bit GS counter. Three GS counters are implemented to control each of the three color outputs, OUTR0-OUTR7, OUTG0-OUTG7, and OUTB0-OUTB7. Each counter increments on each rising edge of the grayscale reference clock (GSCKR, GSCKG, or GSCKB). The falling edge of XBLNK resets the three counter values to '0'. The grayscale counter values are held at '0' while XBLNK is low, even if the GS clock input is toggled high and low. Pulling XBLNK high enables the GS clock. The first rising edge of a GS clock after XBLNK goes high increments the corresponding grayscale counter by one and switches on all outputs with a non-zero GS value programmed into the GS latch. Each additional rising edge on a GS clock increases the corresponding GS counter by one.
What are you doing with XBLNK?
The data shifted out on GSSOUT after GSLAT pulse is the status information data, not the old GS data, see below part of the datasheet:The SID are shifted out onto GSSOUT with the GSSCK rising edge after GSLAT is input for a GS data write. These SID are loaded into the 288-bit common shift register after data in the 288-bit common shift register are copied to the data latch.
Thanks for the pointers. With regards to your question about XBLNK I have include a few additional figures below. These figures include the XBLNK and GSCKR signals relative to GSLAT and GSSCK. The later two are expanded timescales to better show timing with respect to GSLAT, and timing between XBLNK being pulled low and the start of GSSCK. I should note that I produce a single GSCK clock signal from the Arduino and tie pins 4,5, and 6 to this single line to drive the separate TLC counters.
Eager to resolve this,
Thanks for your help,
What did you write into the DC and BC registers? These registers are random when the IC turns on.
For dot correction (DC) I am transmitting: [1, 0, 0, 0, 0, 0, 1] along with 161 additional zeros.
For brightness control (BC) I am transmitting: [1, 1, 1, 1, 1, 1, 1, 1] and with 16 additional zeros
For function control (FC) I am transmitting: [1, 1, 1, 0, 0, 0, 0]. This sequence I assume based on the manual will set:
A). Dot correction adjustment range for the RED, GREEN, and BLUE color output to the high range.
B). Auto display repeat mode to the disabled state.
C). Display timing reset mode to the disabled state.
D). Grayscale counter mode select to 12-bit counter mode.
Last, the UD bits are all set to zero. I set all these values only once by generating a DCSCK clock sequence at start-up.
Thanks in advance,
I checked attached waveform and it seems no problem for input.But GSSOUT is send out SID data after latched.
So I'd like to check again between input data and output data whether it's same or not.
I attached a file how to check output data.
If input data and output data are same, maybe we have to check input pattern again.
If it's possible, I'd like to see picture for your issue.
I have included four oscilloscope screen images below. The second and third are zoomed in version of the first. The first one shows GSSOUT in the case where I did not generate a GSLAT signal.
A) As I am trying to produce a ~50% duty cycle signal on only LED R0, it is odd that the GSSOUT remains high.
B) In the zoomed in plots the GSSOUT seems to start early and end late!
C) In the fourth image I have included the GSCKR clock signal on one channel. My understanding is that the GSSOUT should be output with each GSCKR clock pulse, but the GSSOUT seems starts before and ends after the pulses.
I'll forward the DC Signals in a next post.
Thanks for your assistance,
Thank you for your waveform.
I checked your waveform and I couldn't see any issue, and also I checked with your condition in our lab and I got same waveforms for yours.
Please see attaching file.
I think GSDATA is no problem.
If it's possible, could you please show me timing to input DCdata.
DC data is latched automatically by internal latch pulse during 3ms to 7ms.
And that data is generated at latch timing. If internal latch works in blanking time, DC data is changed at that timng.
Please check this.
Here are figures showing the timing of DCdata. In my current program I use a clock period of 200us. As a result it takes 57.6ms to clock in the 288 bits of GS data. I chose to have my XBLNK low for this period of time plus remain low till after GSLAT. Since the DCSIN data is only 216 bits in length, and I use a 200us clock period for DCSCK, DC data should be clocked in well ahead of the GS data.
Hopefully the figures helping in diagnosing my difficulties.
Thanks for your continued assistance,
I checked your waveform. Data communication is no problem, but input data is wrong,
Especially, MSB and LSB were opposite.
Could you please try to input attaching data?
Thank you & Best Regards
My apologies for the delayed response. As you suggested I flipped the order of my DC/BC/FC/UD sequence. I did not get the anticipated LED activation. But then I _also_ flipped the GS bit pattern, and the LED behavior was correct! Perhaps I was sending all the signals in reverse order.
Thank you for your valuable assistance, informative plots, and steady feedback. I'll keep testing the system, and feel confident I'm on the right track.
If you need any help, please let me know any time.
I'll support you until you succeed.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.