MTK LCD+KEYPAD背光驱动
来源:互联网 发布:弱点 知乎 编辑:程序博客网 时间:2024/05/01 17:35
Tango+3G背光电路示意图如下:
由于Tango+3G的背光电路没有加上背光芯片,所以上图中的Backlight IC为虚线框。但在硬件电路上是预留出了背光IC的位置,只是没有焊上芯片而已。
由上图可知,Tango+3G的LCD背光和KEYPAD背光是由KPLED引脚一起控制的。KPLED实际上是一个外设的引脚,隶属于电源管理模块PMU,而非BB端的GPIO引脚。
KPLED的内部电路如下图所示:
通过设置KPLED_SEL的值(取值范围:0~7),可依次开启CH0~CH7的通道,如:
KPLED_SEL 开启的通道
0 CH0
1 CH0~CH1
2 CH0~CH2
... ...
7 CH0~CH7
当8路通道都开启时,亮度达到最大,当只开启CH0时,亮度最小。
既然KPLED属于外设,则需要通过相应的外设寄存器去控制该引脚。在PMU中,有一个专门的寄存器用来控制KPLED,它叫KPLED_CON0寄存器:
该寄存器最常用的字段为KPLED_SEL,KPLED_MODE和KPLED_EN。
KPLED_SEL:用于设置开启的通道数;
KPLED_MODE:0为PWM控制模式;1为寄存器控制模式。
KPLED_EN:KPLED模块使能位。
关于该寄存器更详细的描述,请参考MTK6276芯片手册中的PMU章节。
这里需要注意:如果KPLED_MODE被设置为0(即默认值),则KPLED引脚直接由PWM1控制,上面的KPLED电路不工作。如果KPLED_MODE被设置为1,则KPLED引脚由上述KPLED电路驱动。
所以,在驱动代码中就有了2种方式驱动背光:
第一种:由PWM1控制背光亮度;
第二种:由KPLED寄存器中的KPLED_SEL值控制背光的亮度。
无论哪种方式,首先都要对KPLED控制寄存器中的KPLED_MODE位进行设置。
编写驱动代码
PWM控制方式:
1. 在pmu_custom.c中,修改PMU客制化函数pmu_customization_init():
(1)配置KPLED模块为PWM控制模式;
(2)使能KPLED模块。
2. 在uem_gpio.c中的custom_cfg_gpio_set_level函数中,添加如下代码:
当参数gpio_dev_level为0时,PWM1停止工作。
寄存器控制方式:
1. 在pmu_custom.c中,修改PMU客制化函数pmu_customization_init():
(1)配置KPLED模块为寄存器控制模式;
(2)将亮度调到最低;
(3)使能KPLED模块。
2. 在uem_gpio.c中的custom_cfg_gpio_set_level函数中,添加如下代码:
(1)如果gpio_dev_level为0,即关闭背光,则关闭KPLED模块,使其不工作;
(2)如果gpio_dev_level不为0,则通过改变寄存器中KPLED_SEL的值来调节背光的亮度。
关键代码免费下载:
点击打开链接
- MTK LCD+KEYPAD背光驱动
- MTK LCD背光驱动——背光芯片
- MTK Keypad驱动框架
- LCD背光灯驱动
- LCD 背光驱动移植
- LCD背光驱动 --Backlight
- 添加LCD背光驱动
- MTK LCD背光LCD工作原理
- Android中LCD背光驱动
- Android中LCD背光驱动
- android中背光LCD驱动
- Android中LCD背光驱动
- Android中LCD背光驱动
- Android中LCD背光驱动
- Android中LCD背光驱动
- MTK android配置LCD背光和LED
- mtk lcd驱动检测
- linux led驱动,lcd背光驱动
- 基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
- 执行体线程--ETHREAD
- 多线程
- java农历/旧历的计算代码
- ORA-01950: 表空间'USERS'中无权限
- MTK LCD+KEYPAD背光驱动
- 面向对象的3个基本要素和5个基本设计原则(整理)
- 程序中unicode与多字节字符集的相关问题
- 【CSDN常见问题解答】Java Socket通信(TCP/UDP)
- C语言中结构体在函数中的应用
- Sicily 1500. Prime Gap
- NODEjs完整项目实践
- Delphi7 中类说明
- 网络安全技术简介