主题中讨论的其他器件: TIDA-03026
如果通过 GRPPWM 寄存器动态调暗 LED、则会出现一些 LED 的未通电短闪。
背景:
我们希望显示某种"呼吸效果"、即连接到三个 TLC59116的16个 RGB-LED 的缓慢持续调光。
VLED 为5V;Vcc 为3.3V
Rext 为1k69
这是 IC 的初始化:
setChipRegister (I2C_ADR_LED_DRIVER_1、MODE1、1);
setChipRegister (I2C_ADR_LED_DRIVER_2、MODE1、1);
setChipRegister (I2C_ADR_LED_DRIVER_3、MODE1、1);
/* LED 驱动器芯片内部的振荡器需要大约0.5ms 的启动时间*/
CyDelay (1);//延迟1ms
setChipRegister (I2C_ADR_LED_DRIVER_ALL、MODE2、0);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、GRPPWM、0);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、LEDOUT0、0xFF);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、LEDOUT1、0xFF);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、LEDOUT2、0xFF);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、LEDOUT3、0xFF);
setChipRegister (I2C_ADR_LED_DRIVER_ALL、IREF、0x3F);
使用的 I2C 地址如下:
#define I2C_ADR_LED_DRIVER_1 (0xC0)
#define I2C_ADR_LED_DRIVER_2 (0xC2)
#define I2C_ADR_LED_DRIVER_3 (0xC4)
#define I2C_ADR_LED_DRIVER_ALL (0xD0)
在将各个亮度寄存器 PWM0设置为 PWM15后、
我们每30ms 发送一次以下命令、其中亮度从0增加到最大值(即0x40)、然后以1的步长再次恢复到零:
setChipRegister (I2C_ADR_LED_DRIVER_ALL、GRPPWM、亮度);
但是、亮度会发生不必要的间歇性(非常短)变化、看起来像短暂闪烁。
如有必要、我可以准备一个视频。
我们检查了 I2C 通信、命令都正确发送。
测试是在100kBit 和400kBit 上完成的。
没有区别、I2C 线路上也没有错误。
我们的行为是否有问题?
是否有其他方法可以实现所需的效果?
提前感谢、致以诚挚的问候、
Martin