6515内置背光无法调节亮度?
你的FLASH 是EMMC 的,还是NAND的?
加PWM控制
你是用的哪种Mode?
boost 模式 ?
{"lcd-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_LCD_BOOST
flash是nand
上层 给出来的等级是0 -255
boost 等级只有0- 15 级 所以要除以17
你的FLASH 是EMMC 的,还是NAND的?----另有目的,与此问题无关。
加PWM控制----这个跟问题有关。
背光一般都用PWM进行控制吧,对于智能机而言,一般都有8颗以上的灯
背光一般分pwm和线控(实际上也是模拟pwm)2种控制方式:
共同点:都要在kernel里面cust_leds.c文件中做相应的配置,对应的uboot也要做与kernel一样的配置;
不同点:
1.pwm模式:(通过调节pwm的占空比来控制背光灯的电流,达到调节背光的目的)
上层传下来的是0~255,我们可以在leds.c文件中将其转行成0~64(0~32和32~64),这样做就是要把与占空比的算法对应起来,eg:pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = (1 << level) - 1;这个就是用来算占空比的。
2.线控模式:(查看背光Ic中用来模拟pwm的对应的gpio脚,通过拉高拉低延时来模拟出一个周期的方波,所谓的线控就是不同级别的光(0~255)对应多少个周期方波的问题)
这里面通常所说的多少个级别,这要看相关的datasheet ,它让你分y级别,你就分y个级别,即把0~255 分成y份(不是均分,类似一个等差数列),不同的级别对应不同的周期数目的方波,从而达到调节背光的目的。
需要 修 改 一下 等級映射, 我 是 直接除以17
else if(pmic_type == MT65XX_LED_PMIC_LCD_BOOST)
{
/*
if(backlight_init_flag[1] == false)
{
hwBacklightBoostTuning(PMIC_PWM_0, 0xC, 0);
backlight_init_flag[1] = true;
}
*/
if (level)
{
level = brightness_mapping(tmp_level);
if(level == ERROR_BL_LEVEL)
level = tmp_level/17;
upmu_boost_isink_hw_sel(0x1);
upmu_boost_mode(PMIC_PWM_0);
upmu_boost_cabc_en(0);
好的 谢谢 学习了
我现在 在 划动 背光 调节亮度 的时候出现 屛 闪的 情 况 ,
{"lcd-backlight", MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight},
Cust_SetBacklight
mapped_level = 16 - (level - 25)/15 ; ///level:30~255, mapped_level:1~16
n = mapped_level<=16 ? mapped_level : 0;
你是一线脉冲方式的控制的背光还是PWM控制的背光?
有些一些脉冲方式IC是要记住上次脉冲个数的,需要发的脉冲个数不是这次新算出来的个数,如果这个没算对,背光就会跳,亮的会变暗的,暗的会变亮的
mark
学习了