根据TRM手册,我们知道,如果PWM0或者PWM1控制背光,在需要关闭背光的时候,可以关闭PWM的时钟信号,用于省电,PWM的控制分两部分;
比如说PWM0,一部分是使能,也就是enable,寄存器GPBR1的第2位,另一部分是时钟输出,也就是GPBR1寄存器的第0位,关于这一块的控制,TRM手册有一点没有说明,比如说打开或者关闭PWM0的时候,这两个位不要同时设置,有人这样设置:
#define PWM1_ENABLE (1 << 3)
#define PWM0_ENABLE (1 << 2)
#define PWM1_CLK_ENABLE (1 << 1)
#define PWM0_CLK_ENABLE (1 << 0)
Tps659xxRead(handle, GPBR1, &data);
data |= PWM0_ENABLE | PWM0_CLK_ENABLE;
Tps659xxWrite(handle, GPBR1, data);
这样设置有个问题,就是如果关闭PWM也是这样设置的话,就会出现某些情况下,PWM引脚输出一直为高的问题,应该关闭之后,电平为低,所以应该分开设置,比如:
//enable PWM0 and clock output
Tps659xxReadRegs(handle, GPBR1, &data,1);
data &= ~(PWM0_CLK_ENABLE);
Tps659xxWriteRegs(handle, GPBR1, &data,1); //enable clock output
Tps659xxReadRegs(handle, GPBR1, &data,1);
data &= ~(PWM0_ENABLE);
Tps659xxWriteRegs(handle, GPBR1, &data,1); //enable PWM0
//disable PWM0 and clock output
Tps659xxReadRegs(handle, GPBR1, &data,1);
data &= ~(PWM0_ENABLE);
Tps659xxWriteRegs(handle, GPBR1, &data,1); //disable output of PWM0
Tps659xxReadRegs(handle, GPBR1, &data,1);
data &= ~(PWM0_CLK_ENABLE);
Tps659xxWriteRegs(handle, GPBR1, &data,1); //disable PWM0_CLK32K clock to save power
本文详细介绍了如何正确使用PWM控制背光的方法。重点讲述了PWM0的使能(enable)与时钟输出(clock output)的独立控制,避免了关闭PWM时可能出现的输出高电平问题,确保了关闭后的低电平状态。
1435

被折叠的 条评论
为什么被折叠?



