老大说了,下周新的手机要回来了,用的是400*800的屏,到时候就由我来调这个屏了。把屏的spec和背光的spec都给了我让我先看看。
以前分析了LCD(framebuffer)的驱动框架,但是对于背光还没有分析过,其底层到底是怎么工作都不知道。看了两天其间总是不能理解它是怎么工作的,到现在总算有了点感觉。
背光和LCD屏是两个独立的设备。背光也就是放在LCD屏后面的几个LED,LCD模组厂商将他们集成到一个块,从屏那一堆引出的管脚里面就有几个
是led的,如果将这几个相应的管脚接上正负极那背光就亮了。如何来调节这个背光的亮度呢?通过pwm,也就是时而上电时而断电,上电的时间越多(占空
比)也就是越亮。这很容易理解。为了帮助我们控制背光我们这里用了一个芯片RT9379B。从它的spec的 Typical Application
Circuit可以看出 从它的EN管脚输入pwm,然后它的LED管脚也就相应的输出pwm去控制屏上的led。
疑惑一:
一开始我认为需要在EN端不断的输入pwm,LED端才相应不断的输出pwm,但是从代码控制上来看,代码总是在输出了几个设置背光的pulse之
后就不再向EN输入pulse了。我当时就想不明白,为什么只输出几个pulse呢?死活想不通,去问了人,模模糊糊的知道了,原理在设置背光的时候只需
要输入你想要设置的等级的pulse个数,比如你要设置8级背光,就输入8个pulse,10级就输出10个pulse。这样之后芯片也就知道你所想要的
等级了,它就会自动去输出相应的pwm到屏上的led中。说得也是,如果不是这样还要你这个芯片干什么呢,我直接用io管脚模拟pwm不就得了。
疑惑二:
从代码控制上,背光越亮发送的pulse越少,从手机的实验结果也是这样。而我以前想当然的认为发送的pulse越多应该越亮。从spec上也没有
读出来如果控制亮度。从spec的Brightness Control里面有一句话是“the detail operation of
brightness dimming is showed in the figure 1”看了头天figure
1也都没看出来它表达个什么意思。后来和同事讨论一下终于明白它什么意思了。它的这个背光亮度分为32个等级,从那个时序图上可以看到脉冲1下面对应的就
是31/32,脉冲2下面对就的就是30/31,这样对应起来也就懂了,呵呵。