这次主要给大家分享一个工作中需要控制背光上电时间的小技巧,主要是用来防止背光上电过快导致屏幕显示出撕扯的画面,或者上电一瞬间闪屏的状态。虽然对整体的显示没有太大的影响,但是看起来总归不是很舒服。(以启扬i.MX6开发板上电为例)
01、硬件分析
这里主要是分两种,一种是不带有pwm调光,这种一般会将屏幕上的背光使能引脚直接与开发板的GPIO引脚相接,然后在合适的时间给予GPIO一个高电平,背光就会亮起;
另外一种是带有pwm调光的,这种就需要具体分析背光调节IC的控制逻辑,不过一般来说这类驱动IC也都会有一个使能端,那么我们控制该使能端就可以控制具体的上电时间,可以让硬件工程师将使能端与开发板的GPIO引脚连接,这样就可以控制背光亮起的时间。
02、软件配置
综上分析,只要我们对GPIO控制进行调整就可以改变屏幕背光上电时间。从软件层面上面来说控制一个GPIO的电平是非常简单的,但是事情往往没那么简单。
在内核中将该GPIO拉低然后延迟一些时间后再拉高从理论上来说是可以实现这个背光控制的逻辑,但是从实践中上看屏幕并没有很明显的一个亮灭变化。
一开始怀疑驱动没有加载的缘故,后来加上打印信息后发现驱动加载上了,说明引脚的电平也确实发生了变化,只是可能因为速度过快肉眼来不及察觉。但是当把延时拉大后又发现屏幕会出现亮-灭-亮的现象,这说明控制GPIO引脚在上电的一瞬间是拉高的状态,所以在内核态的时候会发生灭亮的现象。
既然找到问题所在,那么解决办法就是在最开始将该GPIO拉低,这样我们就不会看到屏幕亮灭亮的现象了。
开发板最开始上电初始化的执行程序就在uboot中,uboot具体的启动流程这里就不做具体的分析了。一般来说,最开始的汇编阶段用来初始化MMU、时钟等相关外设,这里就在启扬uboot配置文件mx6qiyang.c中初始化GPIO。与在内核中配置GPIO相同,首先配置GPIO的复用功能,使其引脚为GPIO,然后将GPIO引脚的电平拉低。
很多小伙伴会说这里并没有将GPIO拉高的操作。这是因为uboot阶段非常短暂,可能在uboot阶段将GPIO拉高依旧会引起闪屏的现象,所以这里我们还是建议在内核中将GPIO拉高,这样就可以完美的控制背光的亮起时间,这样就不会造成开机闪屏的现象了。