TLC5940(16Channel led driver grayscale pwm control) SPI control
.
point(概要)
TLC5940(16CH LED Driver)をSPI機能を使用して制御します。 Grayscale data の送信と、LEDへのPWM出力もSPI機能を使用するため、mbedとTLC5940の接続は最小限で済ますことができます。
SPI は 12bit data,30MHzでの送信設定としています。
schematic(回路図)
/media/uploads/suupen/schematic_design__spi_drivesample.pdf
sample program
http://mbed.org/users/suupen/programs/SPI_TLC5940/lqnmnq
#include "mbed.h" // TLC5940 control pin setting SPI spi(p5, p6, p7); //SIN (p6), SCLK,GSCLK(p7) DigitalOut XLAT(p20); DigitalOut BLANK(p19); // debug LED DigitalOut myled1(LED1); DigitalOut myled3(LED3); /********************************* * gray data set *********************************/ void grayDataSet(int* p){ static int lightWait = 0; static int D_gray = 0; #define Z_kasan (1) static int kasan = Z_kasan; lightWait++; if(lightWait == 1){ lightWait = 0; D_gray += kasan; if(D_gray > 4095){ D_gray = 4095; kasan = -Z_kasan; myled1 = 1; } else if(D_gray <= 0){ D_gray = 0; kasan = Z_kasan; myled1 = 0; } } for(int i = 0; i < 16; i++){ *(p + i) = D_gray; } } /********************************** * SPI Initalize (for TLC5960 control) **********************************/ void tlc5940SpiInitalize(void){ spi.format(12,0); spi.frequency(30000000); } /********************************* * TLC5940 Gray Data clear *********************************/ void tlc5940GrayDataClear(void){ for(int i = 0; i < 24; i++){ int whoami = spi.write(0); } XLAT = 1; XLAT = 0; } /********************************** * TLC5940 Gray Data Display & next data send ***********************************/ void tlc5940GrayDataDisplayAndSend(int* p){ BLANK = 1; BLANK = 0; for(int i = 0; i < 326; i++){ spi.write(0); } for(int i = 0; i < 16; i++){ spi.write(*(p + i)); } XLAT = 1; XLAT = 0; } /************************************ * main ************************************/ int main() { int D_grayData[16]; // gray data = 0 to 4095 [0]:OUT0, [1]:OUT1, ...,[14]:OUT14, [15]:OUT15 // SPI initalize tlc5940SpiInitalize(); tlc5940GrayDataClear(); while(1) { grayDataSet(D_grayData); tlc5940GrayDataDisplayAndSend(D_grayData); } }
3 comments on TLC5940(16Channel led driver grayscale pwm control) SPI control:
Please log in to post comments.
Does this work when cascading 6 Tlc5940?