MTK feature phone LCD开机显示花屏调试

一.背景分析:
1.可以显示花屏,表明你已经初始化了LCD DRIVER IC,但不一定是完全正确的初始化。但是可以确保硬件的cs,wr,reset和低8位数据线肯定没有任何问题,不然不可能初始化。
2.这些问题最好是自己刷屏验证,因为可以排除你的LCD数据根本没有送过来这种情况。
3.能花屏的一般都没有什么大问题,解决它迟早的事情,需要仔细检查软件驱动代码。


二.解决方案:
1.检查一下硬件连接,包括数据线,CS,RS,RESET的连接.


2.如果硬件连接没问题,LCD驱动就应该先刷一个全色的屏来验证.
LCD_BlockWrite_ILI9163C()
{
    LCD_ClearAll_ILI9163C(0xf800);//全屏刷成红色
    return; 
    //////////////////////////////////
}
3.LCD输出格式配置错误,比如16位配置成8位,因为很多IC,写寄存器中的命令的时候都只用了8位,所以配错了照样能初始化,但是显示数据肯定就不对了。这个检查IC规格书与你的LCD接口电路,一般会有一个IM脚选择。
#define MAIN_LCD_8BIT_MODE
//#define MAIN_LCD_9BIT_MODE
//#define MAIN_LCD_16BIT_MODE
//#define MAIN_LCD_18BIT_MODE
4.LCD初始化代码中关于对比度,VCOM,窗口等设定的寄存器写入的值不对,这个与IC供应商确认,如果他们给你的初始化代码能在demo板正常显示,那么就排除这些问题。


5.确认LCD屏显示的颜色格式,一般为:
#define MAIN_LCD_OUTPUT_FORMAT  LCM_8BIT_16_BPP_RGB565_1
//#define MAIN_LCD_OUTPUT_FORMAT  LCM_16BIT_16_BPP_RGB565_1
//#define MAIN_LCD_OUTPUT_FORMAT  LCM_8BIT_18_BPP_RGB666_1
//#define MAIN_LCD_OUTPUT_FORMAT  LCM_8BIT_24_BPP_RGB888_1
//#define MAIN_LCD_OUTPUT_FORMAT  LCM_8BIT_16_BPP_RGB565_1

//#define MAIN_LCD_OUTPUT_FORMAT  LCM_8BIT_16_BPP_RGB565_1

备注:LCM_8BIT_16_BPP_RGB565_1 中:
8BIT:表示为lcd为8位数据线输出。
16_8PP_RGB565_1:表示颜色格式为16位,5+6+5 =16


6.检查LCD_BlockWrite_XXXX()函数:
void LCD_BlockWrite_ILI9163C(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
#if 0
LCD_ClearAll_ILI9163C(0xf800);//全屏刷成红色
return; 
#endif 
ASSERT(lcd_assert_fail==KAL_FALSE);
lcd_assert_fail = KAL_TRUE;


#if defined(LCD_CMD_DMA_MODE)
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x2A);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((startx & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(startx & 0xFF));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((endx & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(4,LCD_DATA,(endx & 0xFF));


SET_LCD_CMD_PARAMETER(5,LCD_CMD,0x2B);
SET_LCD_CMD_PARAMETER(6,LCD_DATA,((starty & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(7,LCD_DATA,(starty & 0xFF));
SET_LCD_CMD_PARAMETER(8,LCD_DATA,((endy & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(9,LCD_DATA,(endy & 0xFF));

SET_LCD_CMD_PARAMETER(10,LCD_CMD,0x2C);
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(11);

ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
START_LCD_TRANSFER;
#else
LCD_CtrlWrite_ILI9163C(0x2A);
LCD_DataWrite_ILI9163C(0x00);
LCD_DataWrite_ILI9163C(startx);
LCD_DataWrite_ILI9163C(0x00);
LCD_DataWrite_ILI9163C(endx); 

LCD_CtrlWrite_ILI9163C(0x2B);
LCD_DataWrite_ILI9163C(0x00);
LCD_DataWrite_ILI9163C(starty);
LCD_DataWrite_ILI9163C(0x00);
LCD_DataWrite_ILI9163C(endy); 

LCD_CtrlWrite_ILI9163C(0x2C); 

ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
START_LCD_TRANSFER;      
#endif

lcd_assert_fail = KAL_FALSE;
}

7.检查init_lcd_interface()中关于  和时序(TIMING)部分
void init_lcd_interface(void)
{
/////////////////////////////////////////////////////////////////////////////////////
#if (defined(MT6250)||defined(MT6260))
SET_LCD_PARALLEL_DATA_BUS(0,1);
#endif


#if (defined(MT6250)||defined(MT6260))
SET_LCD_PARALLEL_IF_TIMING(0, LCD_PARALLEL_CLOCK_104MHZ, 0, 1, 3, 2, 2, 16, 1);
#else
SET_LCD_PARALLEL_CE2WR_SETUP_TIME(2);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);//1);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(1);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(5);//5);
SET_LCD_PARALLEL_READ_LATENCY_TIME(10);
SET_LCD_ROI_CTRL_CMD_LATENCY(5)

#endif
/////////////////////////////////////////////////////////////////////////////////////
}

你可能感兴趣的:(MTK feature phone LCD开机显示花屏调试)