|
楼主 |
发表于 2012-6-29 08:32:45
|
显示全部楼层
4.3寸LCD模块的背光是8个白光LED串联,由升压电路(实测22.5V左右)为LED供电。通过调节PWM占空比可以控制白光LED的亮度。
PWM信号可以由STM32的PWM口产生也可以由RA8875的PWM1口产生。硬件缺省选择RA8875的PWM1口控制。
/*
*********************************************************************************************************
* 函 数 名: SetBackLight_by8875
* 功能说明: 配置RA8875芯片的PWM1相关寄存器,控制LCD背光
* 形 参:_bright 亮度,0是灭,255是最亮
* 返 回 值: 无
*********************************************************************************************************
*/
static void SetBackLight_by8875(uint8_t _bright)
{
if (_bright == 0)
{
/* 关闭PWM, PWM1引脚缺省输出LOW
备注:如果直接将占空比寄存器P1DCR设置为0,实际输出的PWM波形还是存在很窄的脉冲,因此亮度0值单独
处理,这样的话,关闭PWM也可以起到省电的目的。
*/
RA8875_WriteReg(0x8A, 0);
}
else if (_bright == BRIGHT_MAX) /* 最大亮度 */
{
/* 关闭PWM, PWM1引脚缺省输出HIGH */
/* 实际测量,不对255最大亮度做特殊处理,PWM波形也能够输出恒定高电平 */
RA8875_WriteReg(0x8A, 1 << 6);
}
else
{
/* 使能PWM1, 进行占空比调节 */
/* REG[8Ah] PWM1 Control Register (P1CR)
Bit7 脉波宽度调变 (PWM1) 设定
0 : 关闭,此状态下,PWM1 输出准位依照此缓存器Bit6 决定。
1 : 开启。
Bit6 PWM1 关闭时的准位
0 : 当PWM 关闭或于睡眠模式时,PWM1 输出为”Low” 状态。
1 : 当PWM 关闭或于睡眠模式时,PWM1 输出为”High” 状态。
Bit5 保留
Bit4 PWM1 功能选择
0 : PWM1 功能。
1 : PWM1 固定输出一频率为外部晶体振荡器Clock (Fin) 频率 1 /16 的Clock
Bit3-0 PWM1 电路的频率来源选择PWM_CLK 【不是PWM输出频率】
0000b : SYS_CLK / 1 1000b : SYS_CLK / 256
0001b : SYS_CLK / 2 1001b : SYS_CLK / 512
0010b : SYS_CLK / 4 1010b : SYS_CLK / 1024
0011b : SYS_CLK / 8 1011b : SYS_CLK / 2048
0100b : SYS_CLK / 16 1100b : SYS_CLK / 4096
0101b : SYS_CLK / 32 1101b : SYS_CLK / 8192
0110b : SYS_CLK / 64 1110b : SYS_CLK / 16384
0111b : SYS_CLK / 128 1111b : SYS_CLK / 32768
“SYS_CLK” 代表系统频率, 例如SYS_CLK 为20MHz, 当Bit[3:0] =0001b 时,PWM1 频率来源为10MHz。
对于安富莱的4.3寸模块,SYS_CLK = 68.75MHz
Bit3-0 选择8时,PWM_CLK = 68.75MHz / 256 = 0.2685546875 MHz = 268.55KHz;
实际输出的PWM波形频率 = PWM_CLK / 256 = 1.049kHz。【用示波器已验证,PWM频率很准】
*/
RA8875_WriteReg(0x8A, (1 << 7) | 8);
/* REG[8Bh] PWM1 Duty Cycle Register (P1DCR) */
RA8875_WriteReg(0x8B, _bright);
}
} |
|