Other Parts Discussed in Thread:TLC5941
//TLC上电
void tlc_init(void)
{
unsigned int i;
for(i=0;i<192;i++)
{
tlc_gs_data[i]=i%2;
}
for(i=0;i<96;i++)
{
tlc_dc_data[i]=1;
}
TLC_XLAT =0;
TLC_SIN =1;
TLC_SCLK =0;
TLC_MODE=1;
TLC_GSCLK=0;
TLC_BLANK=1;
}
//初始化TLC5941芯片的GS部分
void tlc_setup_gs_reg(void)
{
unsigned int i;
TLC_BLANK=1;//
delay_us(10);
TLC_MODE =0;//gs mode
delay_us(10);
for(i=0;i<192;i++)//192个数据
{
TLC_SIN =(tlc_gs_data[i]==0)?0:1;
delay_us(10);
TLC_SCLK =0;
delay_us(10);
TLC_SCLK =1;
delay_us(10);
}
TLC_SCLK =0; delay_us(10);
TLC_XLAT =1;//更新数据
delay_us(10);
TLC_XLAT =0;//锁存数据
delay_us(10);
TLC_SCLK =0;//额外一个脉冲
delay_us(10);
TLC_SCLK =1;
delay_us(10);
TLC_SCLK =0;
}
//初始化TLC5941芯片的dc部分
void tlc_setup_dc_reg(void)
{
unsigned int i;
TLC_BLANK=1;
TLC_MODE =1;//dc mode
delay_us(10);
for(i=0;i<96;i++)//96个数据
{
TLC_SIN =(tlc_dc_data[i]==0) ? 0 : 1 ;
delay_us(10);
TLC_SCLK =0;
delay_us(10);
TLC_SCLK =1;
delay_us(10);
}
TLC_SCLK =0;
delay_us(10);
TLC_XLAT =1;//更新数据
delay_us(10);
TLC_XLAT =0;//锁存数据
delay_us(10);
TLC_MODE =0;
}
//控制灯的PWM闪烁,暂时使用恒定频率
void tlc_pwm(void)
{
unsigned int i;
TLC_MODE =0;
delay_us(10);
TLC_BLANK=1;elay_us(10);
TLC_BLANK=0;
for(i=0;i<4096;i++)//产生4096个脉冲
{
delay_us(10);
TLC_GSCLK=1;
delay_us(10);
TLC_GSCLK=0;
}
TLC_BLANK=1;
delay_us(10);
}
int main(void)
{
CPUM_PD_Init();
tlc_init();
tlc_setup_gs_reg();//
tlc_setup_dc_reg();
nextloop:
delay_ms(500);
tlc_pwm();
goto nextloop;
}
Johnsin Tao:
HI这个芯片主要是时序与配置的问题,你可以结合datasheet上的时序来确认,例如Figure 12。然后再确认配置是否正确?
,
mm w:
按照那个重新弄了,还是没有反应。从协议看很简单。但是就没有反应。OUT引脚测量为2v,没有变化。我也按照官方的一个demo板文档里面写的弄了,也不行。
我怀疑是否硬件芯片有问题。我用两个芯片测试都一样。
那个POWERPAD我接GND了。
,
Johnsin Tao:
Hi
将VLED电压调高到6V看看?