找回密码
 注册
搜索
楼主: ShorminHsu

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

[复制链接]
 楼主| 发表于 2007-6-25 09:49:58 | 显示全部楼层
【不好意思,代码直接复制上来没有检查,我再发一次】
我的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
}
帮我看一下,谢谢了!
点评回复

使用道具 举报

发表于 2007-6-25 16:17:49 | 显示全部楼层
iDelay = 200;太长了,我搞过这个,延时太长芯片就不知道你输入了几个高电平.iDelay = 5就可以了.
点评回复

使用道具 举报

 楼主| 发表于 2007-6-25 17:34:12 | 显示全部楼层
谢谢楼上的,你的经验肯定对我有帮助!
---------
可是问题似乎不在这儿,我把iDelay设为5,背光依然会无故熄灭。
仔细观察,好像是屏幕刷新的时候才会背光熄灭:
      1.在工程模式的设置duty那一页面,屏幕背光完全正常,从不无故熄灭;
      2.当返回到程模式主菜单那一页时,返回的瞬间背光就熄灭了,只有等键盘灯也熄灭后才能触发点亮;
      3.在进入拍照时,快捷键按下的同时背光就灭了,无法唤起,只有退出拍照才能有背光。

疑惑中。。。
点评回复

使用道具 举报

发表于 2007-6-28 09:33:53 | 显示全部楼层
背光一直会有间隔性的熄灭的问题解决了没有?是怎样解决的?我的屏现在也出现这样的问题,不知怎样解决.
点评回复

使用道具 举报

 楼主| 发表于 2007-6-28 09:35:47 | 显示全部楼层
尚未解决,现在在一边学习,一边等待高手的指点。[em08]
点评回复

使用道具 举报

 楼主| 发表于 2007-7-4 21:12:29 | 显示全部楼层
现在23楼的状况还有没有人帮忙指点一下呢?
[em14]
点评回复

使用道具 举报

发表于 2007-9-28 20:19:40 | 显示全部楼层
我们用过的ATT的背光驱动都是脉冲计数控制亮度的,16楼说的是正解.
23楼的问题是,你改成脉冲控制了,怎么还在pwm控制里改?
应该在custom_cfg_gpio_set_level()函数里改.
switch(gpio_dev_type)     
   {
   case GPIO_DEV_LED_MAINLCD:
        if( gpio_dev_level == LED_LIGHT_LEVEL0)
        {
           GPIO_WriteIO(GPIO_OFF, custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN) );                  
        }
        else
        {
//这里放你的脉冲计数控制代码
       }
......
点评回复

使用道具 举报

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


这个问题我也遇到过,有时pwm的占空比延时也有一定的影响。gpio的控制再看看吧
点评回复

使用道具 举报

发表于 2007-10-9 19:39:21 | 显示全部楼层
同意27楼的,脉冲计数不应该修改pwm函数,而且等级可以根据脉冲的个数来设置的
点评回复

使用道具 举报

发表于 2007-10-12 16:23:23 | 显示全部楼层
曾经碰见过一个类似的bug,就是脉冲计数多少个使屏亮的code看起来没有问题
其实是在delay是被其他中断打断了,我们修改代码使得被打断之后立刻重发脉冲 这样似乎就没有问题了
[em12]
点评回复

使用道具 举报

发表于 2007-10-13 12:54:22 | 显示全部楼层
我没有做过MTK平台,我说一下LCD背光的控制的一些东西,供大家参考,不对的地方请大家提出来!
      我前段时间做LCD和背光方面的东西,我是用GPIO来输出脉冲的方式来控制背光的,脉冲个数为0~32,每个脉冲都是由低电平到高电平,设置的时候送的第一个脉冲与后面的不相同,第一个为开始脉冲,这个脉冲低电平的延时一定要长,它的主要功能是断开先前的脉冲(SPEC上有他的时间),开始一个新的脉冲串,随后跟着的脉冲高低电平延时是不一样的,这个你自己调一下就好了,方法可以通过示波器来抓GPIO输出的脉冲,看其延时。送完脉冲后GPIO端应该是保持为高的,直到下次设置或者关屏的时候才拉低。
     由于设置过程中对延时要求很高,所以设置期间要关中断。
点评回复

使用道具 举报

发表于 2007-10-13 12:56:12 | 显示全部楼层
高低电平的延时时间SPEC上有
点评回复

使用道具 举报

发表于 2008-3-14 00:48:04 | 显示全部楼层
我们用AAT3140,背光控制为:

kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
   kal_bool res=KAL_TRUE;
   kal_uint8 port,i,idelay,iplus;
   kal_uint16 savedIRQMask;

   switch(gpio_dev_type)     
   {
   case GPIO_DEV_LED_MAINLCD:
              GPIO_ModeSetup((kal_uint16)custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN),0);
              if(gpio_dev_level == LED_LIGHT_LEVEL0)
          GPIO_WriteIO(GPIO_OFF,custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN));
       else
           {
             iplus=16 + 4*(gpio_dev_level-1);
                 savedIRQMask=SaveAndSetIRQMask();   
                 GPIO_WriteIO(GPIO_OFF,custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN));
                 for(idelay=0;idelay<100;idelay++){};       
                 while(iplus--)
                 {
                    GPIO_WriteIO(GPIO_OFF,custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN));
                        for(idelay=0;idelay<5;idelay++){};
                        GPIO_WriteIO(GPIO_ON,custom_cfg_outward_gpio_port(GPIO_LABEL_LCM_BL_EN));
                        for(idelay=0;idelay<5;idelay++){};
                 }       
                 for(idelay=0;idelay<100;idelay++){};
                 RestoreIRQMask(savedIRQMask);
           }
       break;
......
点评回复

使用道具 举报

发表于 2008-3-24 21:04:19 | 显示全部楼层
lcm背光驱动分为两种控制方式:
1。pwm这个是通过调占空比来调节亮度的持续信号;
2。PFM这个是通过脉冲的个数来控制LCM背光亮度。这个会有很小的几率造成亮度调节出错。在送多个脉冲的过程中不能保证不会出现什么中断什么的异常情况。
点评回复

使用道具 举报

发表于 2008-3-24 21:32:48 | 显示全部楼层
RT9365??
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-11-15 21:51 , Processed in 0.059818 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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