LCM 调试入门 一. 概述 调试一款LCM,也就是我们平常所说的调屏是我们做驱动的的一项最基本的工作任务。 LCM 是通常由屏厂已经封装好的一个模组,即我们见到的屏。它一般由几部分组成: 1. 玻璃。也就是我们看到的显示图像的部分,是 LCM 里最重要的器件。它内部含有液晶,电极等。 2. IC。 也就是我们通常说的显示芯片。它是控制让玻璃能显示图像的器件,我们调屏其实就是让该显示芯片与我们的BB 能配合起来工作。 3. 外围器件。包括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_...