- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MTK_LCM调试入门
LCM调试入门
概述
调试一款LCM,也就是我们平常所说的调屏是我们做驱动的的一项最基本的工作任务。
LCM是通常由屏厂已经封装好的一个模组,即我们见到的屏。它一般由几部分组成:
玻璃。也就是我们看到的显示图像的部分,是LCM里最重要的器件。它内部含有液晶,电极等。
IC。也就是我们通常说的显示芯片。它是控制让玻璃能显示图像的器件,我们调屏其实就是让该显示芯片与我们的BB能配合起来工作。
外围器件。包括PCB板,在PCB板上的电容电阻,背光等。
调屏前的注意事项
在真正调屏之前,我们一般要做一些前期准备工作,这将有助于我们今后调屏时少走弯路。
先看原理图,确认该屏的信号控制线连接是否正确,看数据线连的是几位的,8位、16位、18位的数据传输方式是不一样的,程序中由不同的宏来控制。
大致看一下IC的spec,看一下里面的寄存器设置方式;寄存器中控制各个功能的分布情况,比如控制电压的,控制位置的,控制效果的等等;还要看看它的时序是否和我们的BB配合。
MTK接口定义
在我们的MTK平台里,它的接口函数都由一个结构来封装。该结构在文件lcd_if.h里:
typedef struct
{
void (* Init)(kal_uint32 background, void **buf_addr);
void (* PWRON)(kal_bool on);
void (* BrightLevel)(kal_uint8 level);
void (* SCREENON)(kal_bool on);
void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy);
void (* GetSize)(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height);
void (* SleepIn)(void);
void (* SleepOut)(void);
void (* PartialOn) (kal_uint16 start_page,kal_uint16 end_page);
void (* PartialOff) (void);
kal_uint8 (*partial_display_align) (void);
/*Engineering mode*/
kal_uint8 (* get_param_number)(lcd_func_type type);
void (* set_bias)(kal_uint8 *bias);
void (* set_contrast)(kal_uint8 *contrast);
void (* set_linerate)(kal_uint8 *linerate);
void (* set_temp_compensate)(kal_uint8 *compensate);
#ifdef __LCD_ESD_RECOVERY__
kal_bool (* esd_check)(void);
#endif
}LCD_Funcs;
在lcd.c文件内有相应的LCD_Funcs实例:
LCD_Funcs LCD_func_HX8306A = {
LCD_Init_HX8306A,
LCD_PWRON_HX8306A,
LCD_SetContrast_HX8306A,
LCD_ON_HX8306A,
LCD_BlockWrite_HX8306A,
LCD_Size_HX8306A,
LCD_EnterSleep_HX8306A,
LCD_ExitSleep_HX8306A,
LCD_Partial_On_HX8306A,
LCD_Partial_Off_HX8306A,
LCD_Partial_line_HX8306A,
/*Engineering mode*/
LCD_GetParm_HX8306A,
LCD_SetBias_HX8306A,
LCD_Contrast_HX8306A,
LCD_LineRate_HX8306A,
LCD_Temp_Compensate_HX8306A
};
在lcd.c中实现了该结构的各个成员。下面一节将具体介绍跟我们调试一款LCM有关的函数,其他函数我们可以置空。
MTK各函数介绍
我们现在要真正进入到调试LCM了,下面以显示芯片HD66789为例说明。
一般LCM的正常启动(工作)流程是这样的:
上电
硬件复位
初始化
开始显示数据
LCM的电源都是电源芯片直接供应的,所以这部分我们可以不考虑。
硬
文档评论(0)