I am a student from Munich in germany. I am using TLC5970 in my labor.
I want to just let the LEDs lighting with SPI. And the LEDs dosent light ,but flash(the LEDs turns on and off quickly ).
I use SPI to transfer the needed data but.....the result is always the same.
I look for help from the datasheet but there are some Modes and i dont know which one i should use.
my program is like that:
first i transfer the FC (Fuction Control) data. This data has 5 Bits that are very important : DATRFH, DSPRPT, EXTCLK, TMGRST, DCENA. I didnt understand all of them.I just put all of them as the default value 0.I send this value 1111 0000 0000 0000 0000 0000 0000 0000 0111 1111
And then i transfer DS data for each LED. I send the buffer this value 1110 0000 0000 0000 0001 1111 1111 1111 0111 1111
In order to let all LEDs with different colors lighting i send the value of GS.
At the end i use a While(1) to let the program go on and on.
while(1)
{
LED1_GS_Send();
LED2_GS_Send();
..........
LED6_GS_Send();
delay();
}
the above part is my program .The LEDs are flahsing and I have no idea to resolve this problem. This program is very important for me.So who can help me,please.
Thanks a lot.
Han
So who can give me a sugestion to resolve my problem.
Hello Han,
Just to make sure that I understand you correct: Which bit in the above data streams are you sending first? You have to send the MSB first and the LSB last. Please define where the MSB is located in the above data stream.
Below descriptions are based on MSB is the most left bit and you are sending this bit first:
DSPRPT: If you set this bit to 0, you have to send the input data fast enough to have it available when 4096 pulses of the internal 10MHz counter are passed, otherwise the IC is stopping the output and is waiting until the new data is available.
Here is some more description from the datasheet:AUTO DISPLAY REPEATAuto display repeat, DSPRPT, allows OUTn to continuously turn on for multiple PWM cycles without the need to continuously reprogram the PWM grayscale registers. When Auto Repeat is enabled, bit 8 in the Function Control Data Latch is '1' and OUTn automatically turns on again at the next rising clock of the internal oscillator. When Auto Display Repeat is disabled by setting the control bit to '0', OUTn do not turn on again until an internal latch pulse is generated and another GS clock pulse goes high. This timing is shown in Figure 19 and Figure 20.
Please check if your problem is gone when you set this bit.
Best regards,Brigitte
thank you very much Brigitte.
I set the Bit DSPRPT and check if i have seted the right MSB and LSB, but the result is not changed.
The leds are flashing but not always lighting.
my hardware is the " No Buck Converter Operating Mode".
But i just want to light my LEDs.Do i need a EEPROM to operate it?
And the LEDs flash that means at least my SPI works well,but where is my fault?????
Best regards,
Hello,Brigitte.
Do I need to send DC and BC?
I send at first DC,then FC with BC, at last i send GS.
after sending 40 bits i need to make a delay for Latch Pluse, do i right understand?
the date sheet is so complex. And as a programer i dont know what should i do from the date sheet.........for example i use EEPROM or not? Do I need to transfer DC and i transfer the data DC and then BC? or first BC and then DC? Or i transfer only GS........
that makes me unhappy surely.
When you take a new TLC5970, the factory default values for DC and BC are 7F and therefore you just need to write the data into the GS PWM registers to turn the LEDs on.
Please try to input the following data.
For FC data, "1111-0000-0000-0000-0000-0000-0000-0001-1111-1111".
The data sets the following status. 1. All BC = '1'. So full BC (7Fh*RGB) 2. Auto data refresh is enabled. 3. Display repeat is enabled. 4. Internal PWM clock is selected. 5. Timing reset is not enabled. 6. DC data is fixed to same data as programmed data in EEPROM. It is '7Fh' (FULL data*RGB).
For writing the GS data, use this: 0000 1111 1111 1111 1111 1111 1111 1111 1111 1111, this turns the LEDs fully on. When you want to reduce the curren through one of the LEDs, please change the GS data only.
I think you can see that LED lamp is turned on-off without any flashing.
Thank you very much Brigitte.
And I have a question about the delay between transfering the Data.
for example I have 6 LEDs, and i must transfer 6 FCs and 6 GS . At first i send the first GS to the first LED and then I need a delay for internal pulse or no?if not ,then i dont need to wait and quickly send the second GS and so on until to the end LED.
I see the datasheet and there is a internal pulse that is very important . So i think i should give the pulse a litte time. So i add a delay after that i send every GS and FC . But I dont know if i am right.
How did you connect the LEDs you have to the TLC5970? Are you using 2 TLC5970 or do you have 2 LEDs in series and just use 1 TLC5970 for 6 LEDs?
Hello Brigitte,
Every TLC5970 controls only 1 LED and there are totally 6 TLC5970 and 6 LEDs.They are connected in series.
Do you need such a high current per LED to just have 1 LED on 1 TLC5970? Generally the part is able to drive 3 LED strings.
If you need such a high current and do not need all the other functions of TLC5970, I wonder if TLC5960 is maybe the easier solution for your application.
The IC detects the time between the clock pulses. As long as this time is shorter than the time programmed into LATTIM which is Fh (around 17us (sorry for this mistake 17ms is correct), given on page 41 in the datahsheet) by default. The internal latch signal is generated when the clock signal is interrupted for at least this time.
So when you want to program the 6 series parts, you have to input all 240 bits of GS or FC data in a row and then wait for at least 17us (no 17ms) before you input the next data stream.
Please make sure that the datastream is never interrupted for more than 10us when not all data for all parts is input, otherwise wrong data will be latched.
Hi Brigitte,
I am working on a project using the TLC5970 IC at the moment and found this thread, one of the few dealing with this IC. I believe that the OP's problem was caused by allowing insufficient time to trigger the internal latch. I set up my code using your explanation here and had the same "flashing" result. After reading through the data sheet more carefully I found that the default timing is actually 17ms, not 17 us. Correcting this in my code resolved the issue.
Now I have to adjust the latch timing to make it suitable for my application and I am having no luck writing to the eeprom. I believe I am following the datasheet instructions correctly. My process is to power up the micro and the VCC on the TLC5970, apply 19V to the VROM pin, transfer 1100 1010 0101 0000 0000 0000 0001 1000 0000 0000b MSB first, delay 1 sec, write FC and then trial GS data with the new latch speed. The EEPROM write does not seem to work as I go back to having the flickering output from the LEDs. Have I made an error somewhere?
Also, there is an error in the datasheet in the adress register chart. It lists the binary equivalent of A5 as 01010101, missing a bit.
Your help is greatly appreciated,
Roger.
Please disregard the issue with the EEPROM write, there was some fairly significant noise on my 19V line. Everything is working as expected now, thanks!
Best Regards,
Hello Roger,
Sorry for the mistake. You are correct with 17ms not us.
For the datasheet mistake, you are correct and we will change this with the next datasheet revision. Thank you.