找回密码
 注册
搜索
查看: 8443|回复: 34

[讨论] 手机屏幕亮度可调节,但是亮度太暗,求各位帮忙!

[复制链接]
发表于 2007-6-8 14:16:33 | 显示全部楼层 |阅读模式
平台MTK 6226
原理图上LCM_PWM连接的是GPIO_21 / PWM1,
在GPIO_init中核对了21号脚的PWM1是打开了,
然后在Custom_equipment.c中的gpio_map_tbl[]也核对过了,custom_cfg_gpio_set_level函数中也用的PWM1。

调节比率如下:
kal_uint16 PWM1_Level_Info[PWM_MAX_LEVEL][2] = {                  
                  200, 20,  /* PWM 1  Level 1 */
                  200, 40,  /* PWM 1  Level 2*/
                  200, 60,  /* PWM 1  Level 3*/
                  200, 80,  /* PWM 1  Level 4*/
                  200, 100, /* PWM 1 Level 5 */
};
现在的症状是:LCD的背光调节1-5级均有变化,但是总体的亮度不够,偏暗,Level3以下的基本就看不清了。
在工厂模式下检测LCD背光,打开、关闭,正常,唯亮度不够。
在工程模式下检测PWM,其中PWM1中的duty值的变化能改变LCD的背光强度,但是如同在PWM1_Level_Info[][]数组中的,整体亮度偏暗。
然后拆机测了电压:
VDD为4.37V,低于正常的4.6V,(有其他正常的软件版本在同一台手机上作对比参考)
几个LED在duty=20时为2.45V,低于正常的2.75V。

现在的数据显示是电压偏低,但是有其他的软件版本可以正常亮度的背光,说明硬件没有错误。可是在软件这边,除了PWM调控,我不知道哪里可以控制到电压值,希望各位大哥大姐帮帮我!
[之前想起过在LCD的Drv里有一块PowerControl,不知道这个能否控制到背光的电压,然仔细想想这应该是两码事,但还想寻求确认一下。]

[em19][em19][em19]
 楼主| 发表于 2007-6-23 11:51:25 | 显示全部楼层
我的IC是AAT3113的,就是要靠发送32个脉冲来获得最高亮度。
我现在也把原来的PWM改成了控制脉冲,结果亮度正常了、背光sleep也正常了,
但是,这个背光一直会有间隔性的熄灭!
就说开机动画,在动画的播放过程中每个1~2秒就会背光熄灭,然后马上又亮起来。然后在使用过程中也会有频繁性的背光熄灭。
我想问一下是我延时错了?频率错了?还是整个控制就写错了?
请各位大哥指点指点哪。。
------------------------------------------------------------------------------------------------------------
附:我把pwm.c中的pwm1_config()函数改写如下
void PWM1_Configure(kal_uint32 freq, kal_uint8 duty)
{
BL_Port = custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN);

GPIO_ModeSetup(BL_Port, 0);
GPIO_InitIO(1, BL_Port);
     
GPIO_WriteIO(GPIO_ON, BL_Port);
for (iDelay = 0;iDelay < 12000; iDelay++);
GPIO_WriteIO(GPIO_OFF, BL_Port );
for (iDelay =0; iDelay <12000;>32 )
   iPulse = 32;

if ( iDelay < 0 )
   iDelay = 0;
if ( iDelay > 200 )
   iDelay = 200;
   
savedMask = SaveAndSetIRQMask(); //disable interrupt
while(iPulse--)
{
     GPIO_WriteIO(GPIO_OFF, BL_Port );
    for(j=0;j<iDelay;j++);
     GPIO_WriteIO(GPIO_ON, BL_Port );
    for(j=0;j<iDelay/5;j++);
}
   
RestoreIRQMask(savedMask); // turn on interrupt
}
帮我看一下,谢谢了!
[em06]
点评回复 0 1

使用道具 举报

发表于 2007-6-8 15:22:47 | 显示全部楼层
我也在调....不知道为什么5时黑屏了
点评回复

使用道具 举报

 楼主| 发表于 2007-6-8 15:30:44 | 显示全部楼层
你看一下你的PWM1_Level_Info[][1]呢,是不是从100——>0的?
点评回复

使用道具 举报

 楼主| 发表于 2007-6-9 11:30:07 | 显示全部楼层
昨天没有进展,今天继续关注!
[em25]
点评回复

使用道具 举报

发表于 2007-6-9 12:00:16 | 显示全部楼层
哈哈。是的。。還有LCD背光的時間也不對。。
点评回复

使用道具 举报

 楼主| 发表于 2007-6-10 10:13:40 | 显示全部楼层
唉,为什么没有高手来帮帮忙呢。。
[em19]
点评回复

使用道具 举报

发表于 2007-6-10 14:09:33 | 显示全部楼层
PWM1_Level_Info 跳过这个直接跟踪到lcd寄存器读写那边
然后看看lcd的spec
点评回复

使用道具 举报

 楼主| 发表于 2007-6-12 21:04:53 | 显示全部楼层
LCD背光 应该跟LCD的寄存器没有关系吧。
点评回复

使用道具 举报

发表于 2007-6-13 23:20:07 | 显示全部楼层
楼主直接测一下单个背光LED灯的电流吧,调整软件,是单个LED灯电流在20mA左右。如果还觉得亮度不行,就让LCM模组厂商再送样吧。
点评回复

使用道具 举报

发表于 2007-6-15 00:31:03 | 显示全部楼层
呵呵,我前两天也在弄这个.
我用的LED电源芯片也是用PWM驱动的,我的是PWM1_Level_Info[PWM_MAX_LEVEL][2]第2个值越小,亮度越大,我看芯片资料 是此芯片有个接地R-set的电阻, Led的电流大小不仅和 PWM 的duty时间有关还和这个电阻有关,试着调下这个电阻.
我当时碰到的是PWM1 设置似乎无效,其实是以前的mtk软件上用PWM1来驱动KeyPad Led,而Lcd背光是用GPIO产生脉冲驱动的.
点评回复

使用道具 举报

发表于 2007-6-15 09:35:28 | 显示全部楼层
如果背光芯片是pwm控制的,理论上设置pwm是有效果的,但是需要注意的是,在nvram也需要加。如果都加了,还是没有效果,可以直接修改pwm控制函数,直接向pwm控制寄存器写值,freq, duty.
点评回复

使用道具 举报

 楼主| 发表于 2007-6-15 13:46:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>jasonjiang</I>在2007-6-15 0:31:03的发言:</B>
呵呵,我前两天也在弄这个.
我用的LED电源芯片也是用PWM驱动的,我的是PWM1_Level_Info[PWM_MAX_LEVEL][2]第2个值越小,亮度越大,我看芯片资料 是此芯片有个接地R-set的电阻, Led的电流大小不仅和 PWM 的duty时间有关还和这个电阻有关,试着调下这个电阻.
我当时碰到的是PWM1 设置似乎无效,其实是以前的mtk软件上用PWM1来驱动KeyPad Led,而Lcd背光是用GPIO产生脉冲驱动的.
</DIV>


多谢你给我启发!
我这里原来的MTK用的是PWM2来驱动LCD_LED的,我照着原理图改成了PWM1,然而这个PWM1虽然能调节亮暗但总体亮度都不够(duty值都调过了)。
我看了LED的芯片资料,发现它好像不是用PWM1驱动而是如你所说的“用GPIO产生脉冲驱动的”。

[upload=jpg]UploadFile/2007-6/07615@52RD_LCD_LED.JPG[/upload]


所以看来得重新写函数来控制GPIO口了。然而我对于其中的延时不太懂,比如50ns、75&micro;s等该如何去计算? 与Clock_DIV 以及 Clock_SEL 有关吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
点评回复

使用道具 举报

 楼主| 发表于 2007-6-15 13:57:14 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>powl</I>在2007-6-15 9:35:28的发言:</B>
如果背光芯片是pwm控制的,理论上设置pwm是有效果的,但是需要注意的是,在nvram也需要加。如果都加了,还是没有效果,可以直接修改pwm控制函数,直接向pwm控制寄存器写值,freq, duty.</DIV>



对的!直接向pwm控制寄存器写值是个不错的建议!原来的MTK就是被人这样直接写值了,导致无法调节亮度,害我找了半天才发现。
你给的前提是“如果背光芯片是pwm控制的”,但现在看LED的芯片资料怀疑是GPIO口控制脉冲来驱动的,[芯片是AAT3113]。

不过我的疑惑是,如果是GPIO口控制脉冲来驱动的,那为何我用PWM1也能够去成功调节而只是LED亮度不够?如果我仍用PWM1的话,能否从PWM_Config()这里做文章呢?
   DRV_WriteReg(PWM1_COUNT,(kal_uint16)tmp);
   DRV_WriteReg(PWM1_THRESHOLD,(kal_uint16)tmp);
谢谢大家的回复指点了!!!   
[em22]
点评回复

使用道具 举报

 楼主| 发表于 2007-6-18 14:51:27 | 显示全部楼层
哎,发现52RD的人气还是不够,帮忙指点的人还是不够多呢。

一个人在这边自己摸索,还是没能吃透。
哎,只好采取下下策,像Powl老兄所说的,直接向pwm控制寄存器写值。
可惜,这样就不能调节亮度了,只能永远显示为特定亮度。

现在我修改的就是上一楼所说的那两句:
   DRV_WriteReg(PWM1_COUNT,(kal_uint16)tmp);
   DRV_WriteReg(PWM1_THRESHOLD,(kal_uint16)tmp);
直接赋值:
   DRV_WriteReg(PWM1_COUNT,1);
   DRV_WriteReg(PWM1_THRESHOLD,1);

这样背光亮度就完全亮了,且是1/1即100%的。

现在这样暂且缓解了难题,不过我还是希望能彻底解决,各位大哥大姐你如果看到这里,若有任何想法的话,都请麻烦回个帖子指点我一下,我实在是感激不尽哪!

[em25]
点评回复

使用道具 举报

发表于 2007-6-18 18:28:09 | 显示全部楼层
不要写死,写入freq,duty即可。6225的PWM不好使用,其它的倒是没有弄过
点评回复

使用道具 举报

发表于 2007-6-18 18:31:11 | 显示全部楼层
脉冲计数的不能用pwm控制,应该发脉冲。
点评回复

使用道具 举报

发表于 2007-6-20 08:37:57 | 显示全部楼层
我想其实用PWM方式和GPIO方式输出都一样,LED驱动芯片是靠脉冲个数来区分亮度的,从0到32个,只要你把5级亮度分部在0到32个脉冲输出之间也行啦。
这个我做过。
点评回复

使用道具 举报

 楼主| 发表于 2007-6-23 11:56:22 | 显示全部楼层
GPIO_LABEL_LCM_BL_EN = port 21;
Clock_div = pwmclk_8MHZ;
clk_sel = pwmclk_32k;
点评回复

使用道具 举报

发表于 2007-6-24 15:28:36 | 显示全部楼层
while(iPulse--)
{
     GPIO_WriteIO(GPIO_OFF, BL_Port );
    for(j=0;j     GPIO_WriteIO(GPIO_ON, BL_Port );
    for(j=0;j }
   
???先把代码写好吧。
高低电平的延时,和TOFF的时间很重要,注意它的上下限。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-5 23:19 , Processed in 0.090968 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表