全志平台SPI接口LCD屏驱动(GC9300,GC9306,ST7789,HX8357C)

1 引言

LCD分辨率240x320适合:GC9300,GC9306,ST7789
LCD分辨率480x320适合:HX8357C

2 下载地址

3 LCD驱动代码

1)GC9300驱动

/*
*********************************************************************************************************
*                            sys_config.fex 配置示例
lcd_bl_en_used           = 0
lcd_bl_en                = 0

lcd_power_used           = 0
lcd_power                = 0

lcd_pwm_used             = 1
lcd_pwm                  = port:PA08<2><0><default><default>
*********************************************************************************************************
*/
#include "lcd_panel_cfg.h"

#define GC9300_CMD(V)   LCD_CPU_WR_INDEX(0, V)
#define GC9300_DATA(D)  LCD_CPU_WR_DATA(0, D)

#define __inf eLIBs_printf
void  Lcd_cpuisr_proc(void);

static void LCD_cfg_panel_info(__panel_para_t * info)
{
    memset(info,0,sizeof(__panel_para_t));

	//屏的基本信息 lcd gc9300
	#if 1 //横屏分辨率
    info->lcd_x              = 320;
    info->lcd_y              = 240;
	#else //竖屏分辨率
	info->lcd_x              = 240;
    info->lcd_y              = 320;	
	#endif
	
    info->lcd_dclk_freq      = 12;   //MHz  

    info->lcd_pwm_freq       = 1; 	//KHz 
    info->lcd_srgb           = 0; 	//0x00202020; 
    info->lcd_swap           = 0;
                             
    //屏的接口配置信息
    info->lcd_if             = 1;   //0:HV , 1:8080 I/F, 2:TTL I/F, 3:LVDS
            
    //屏的HV模块相关信息
    info->lcd_hv_if          = 0;
    info->lcd_hv_hspw        = 0;
    info->lcd_hv_lde_iovalue = 0;
    info->lcd_hv_lde_used    = 0;
    info->lcd_hv_smode       = 0;
    info->lcd_hv_syuv_if     = 0;
    info->lcd_hv_vspw        = 0;
        
    //屏的HV配置信息
    info->lcd_hbp            = 3;
    info->lcd_ht             = 480;
    info->lcd_vbp            = 3;
    info->lcd_vt             = (2 * 450);

    //屏的IO配置信息
    info->lcd_io_cfg0        = 0x00000000;
    info->lcd_io_cfg1        = 0x00000000;
    info->lcd_io_strength    = 0;

    //TTL屏幕的配置信息
    info->lcd_ttl_ckvd       = 0;
    info->lcd_ttl_ckvh       = 0;
    info->lcd_ttl_ckvt       = 0;
    info->lcd_ttl_datainv_en = 0;
    info->lcd_ttl_datainv_sel= 0;
    info->lcd_ttl_datarate   = 0;
    info->lcd_ttl_oehd       = 0;
    info->lcd_ttl_oehh       = 0;
    info->lcd_ttl_oevd       = 0;
    info->lcd_ttl_oevh       = 0;
    info->lcd_ttl_oevt       = 0;
    info->lcd_ttl_revd       = 0;
    info->lcd_ttl_revsel     = 0;
    info->lcd_ttl_sthd       = 0;
    info->lcd_ttl_sthh       = 0;
    info->lcd_ttl_stvdl      = 0;
    info->lcd_ttl_stvdp      = 0;
    info->lcd_ttl_stvh       = 0; 

	//gc9300 的配置信息
    info->lcd_frm 			 = 0;  //0: disable; 1: enable rgb666 dither; 2:enable rgb656 dither    
    info->lcd_cpu_if         = 4;  //16: color will become red;  
}

static void LCD_init_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, Lcd_cpuisr_proc);
}

static void LCD_exit_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, 0);
}

static __s32 LCD_open_flow(__u32 sel)
{
	LCD_OPEN_FUNC(sel, LCD_power_on	, 10); 	//打开LCD供电,并延时10ms
	LCD_OPEN_FUNC(sel, TCON_open	, 200); //打开LCD控制器,并延时200ms
	LCD_OPEN_FUNC(sel, LCD_open_cmd	, 100); //通过IO配置LCD模组为工作模式,并延时100ms
	LCD_OPEN_FUNC(sel, LCD_bl_close	, 0); 	//打开背光,并延时0ms  
	LCD_OPEN_FUNC(sel, LCD_init_isr , 0);   //初始化CPU PANEL 中断服务程序,并延时 0ms

	return 0;
}

static __s32 LCD_close_flow(__u32 sel)
{	
	LCD_CLOSE_FUNC(sel, LCD_exit_isr    , 0);    //关闭CPU PANEL中断服务程序,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_bl_close    , 0); 	 //关闭背光,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_close_cmd   , 0); 	 //通过IO配置LCD模组为掉电/休眠模式,并延时0ms
	LCD_CLOSE_FUNC(sel, TCON_close	    , 0); 	 //关闭LCD 控制器,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_power_off   , 1700); //关闭LCD供电,并延时1700ms

	return 0;
}

/*
*********************************************************************************************************
*                                           POWER ON
*
* Description: 
*
* Arguments  : 
*
* Returns    : 
*
* Note       :
*********************************************************************************************************
*/
static void LCD_power_on(__u32 sel)
{
    LCD_POWER_EN(sel, 1);	
}

static void LCD_power_off(__u32 sel)
{
	LCD_POWER_EN(sel, 0);
}

/*
*********************************************************************************************************
*                                           BACK LIGHT ON
*
* Description: 
*
* Arguments  : 
*
* Returns    :
*
* Note       :
*********************************************************************************************************
*/
static void LCD_bl_open(__u32 sel)
{
	LCD_BL_EN(sel, 1);
}

static void LCD_bl_close(__u32 sel)
{
	LCD_BL_EN(sel, 0);
}

static void lcd_cpu_cmdset(void)
{
	//------------end Reset Sequence-----------//
	GC9300_CMD(0xfe);
	GC9300_CMD(0xef);

	GC9300_CMD(0x36);
	GC9300_DATA(0x28); //0x48竖屏  //0x38或者0x28横屏

	GC9300_CMD(0x3a);
	GC9300_DATA(0x05);

	//------end display control setting----//
	//------Power Control Registers Initial----//
	GC9300_CMD(0xa4);
	GC9300_DATA(0x44);
	GC9300_DATA(0x44);
	GC9300_CMD(0xa5);
	GC9300_DATA(0x42);
	GC9300_DATA(0x42);
	GC9300_CMD(0xaa);
	GC9300_DATA(0x88);
	GC9300_DATA(0x88);
	GC9300_CMD(0xe8);
	GC9300_DATA(0x11);
	GC9300_DATA(0x0b);
	GC9300_CMD(0xe3);
	GC9300_DATA(0x01);
	GC9300_DATA(0x10);
	GC9300_CMD(0xff);
	GC9300_DATA(0x61);
	GC9300_CMD(0xAC);
	GC9300_DATA(0x00);
	GC9300_CMD(0xad);
	GC9300_DATA(0x33);

	GC9300_CMD(0xae);
	GC9300_DATA(0x2b);

	GC9300_CMD(0xAf);
	GC9300_DATA(0x55);
	GC9300_CMD(0xa6);
	GC9300_DATA(0x2a);
	GC9300_DATA(0x2a);
	GC9300_CMD(0xa7);
	GC9300_DATA(0x2b);
	GC9300_DATA(0x2b);
	GC9300_CMD(0xa8);
	GC9300_DATA(0x18);
	GC9300_DATA(0x18);
	GC9300_CMD(0xa9);
	GC9300_DATA(0x2a);
	GC9300_DATA(0x2a);

	GC9300_CMD(0x35);
	GC9300_DATA(0x00);

	GC9300_CMD(0x44);
	GC9300_DATA(0x00);
	GC9300_DATA(0x0a);

	//------------window setting------------------//
	#if 1//横屏窗口设置
	GC9300_CMD(0x2b);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0xef); 

	GC9300_CMD(0x2a);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x01);
	GC9300_DATA(0x3f); 
	#else //竖屏窗口设置
	GC9300_CMD(0x2a); 
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0xef); 

	GC9300_CMD(0x2b); 
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x01);
	GC9300_DATA(0x3f); 	
	#endif
	
	GC9300_CMD(0x2c);

	//------------gamma setting------------------//
	GC9300_CMD(0xF0);
	GC9300_DATA(0x02);
	GC9300_DATA(0x01);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x07);

	GC9300_CMD(0xF1);
	GC9300_DATA(0x01);
	GC9300_DATA(0x01);
	GC9300_DATA(0x00);
	GC9300_DATA(0x0F);
	GC9300_DATA(0x22);
	GC9300_DATA(0x12);

	GC9300_CMD(0xF2);
	GC9300_DATA(0x09);
	GC9300_DATA(0x07);
	GC9300_DATA(0x22);
	GC9300_DATA(0x04);
	GC9300_DATA(0x04);
	GC9300_DATA(0x33);

	GC9300_CMD(0xF3);
	GC9300_DATA(0x13);
	GC9300_DATA(0x0B);
	GC9300_DATA(0x56);
	GC9300_DATA(0x03);
	GC9300_DATA(0x02);
	GC9300_DATA(0x65);

	GC9300_CMD(0xF4);
	GC9300_DATA(0x0B);
	GC9300_DATA(0x19);
	GC9300_DATA(0x17);
	GC9300_DATA(0x04);
	GC9300_DATA(0x07);
	GC9300_DATA(0x0F);

	GC9300_CMD(0xF5);
	GC9300_DATA(0x05);
	GC9300_DATA(0x10);
	GC9300_DATA(0x11);
	GC9300_DATA(0x34);
	GC9300_DATA(0x34);
	GC9300_DATA(0x0F);

	//--------end gamma setting--------------//
	GC9300_CMD(0x11);
	LCD_delay(120*60000); 
	GC9300_CMD(0x29);
	LCD_delay(120*60000); 
	GC9300_CMD(0x2c);
}


static void  LCD_open_cmd(__u32 sel)
{	
	 __u32 id = 0;
	
	LCD_CPU_AUTO_FLUSH(0,0);
	__inf("LCD_BOOT: disable auto mode for setting!!!!!!!!!!!!!!!!\n");
	
	LCD_delay(600);
	      
	LCD_CPU_RD(0, 0x0004, &id);
    __inf("==LCD_BOOT: id to read back is %x\n",id);
	
	//setting panel
	lcd_cpu_cmdset();
	__inf("LCD_BOOT: lcd_cpu_cmdset!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");

	LCD_CPU_AUTO_FLUSH(0,1);
	__inf("LCD_BOOT: LCD_CPU_AUTO_FLUSH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
} 

static void  LCD_close_cmd(__u32 sel)
{
}

void  Lcd_cpuisr_proc(void)
{
	#if 1 //横屏窗口设置
	GC9300_CMD(0x2b);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0xef); 

	GC9300_CMD(0x2a);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x01);
	GC9300_DATA(0x3f); 
	#else //竖屏窗口设置
	GC9300_CMD(0x2a);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0xef); 

	GC9300_CMD(0x2b);
	GC9300_DATA(0x00);
	GC9300_DATA(0x00);
	GC9300_DATA(0x01);
	GC9300_DATA(0x3f); 	
	#endif
	
	GC9300_CMD(0x2c);
}

void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

void LCD_get_panel_funs_1(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info1;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

2)GC9306驱动

/*
*********************************************************************************************************
*                            sys_config.fex 配置示例
lcd_bl_en_used           = 0
lcd_bl_en                = 0

lcd_power_used           = 0
lcd_power                = 0

lcd_pwm_used             = 1
lcd_pwm                  = port:PA08<2><0><default><default>
*********************************************************************************************************
*/
#include "lcd_panel_cfg.h"

#define GC9306_CMD(V)   LCD_CPU_WR_INDEX(0, V)
#define GC9306_DATA(D)  LCD_CPU_WR_DATA(0, D)

#define __inf eLIBs_printf
void  Lcd_cpuisr_proc(void);

static void LCD_cfg_panel_info(__panel_para_t * info)
{
    memset(info,0,sizeof(__panel_para_t));

	//屏的基本信息 lcd gc9306
	#if 1 //横屏分辨率
    info->lcd_x              = 320;  
    info->lcd_y              = 240;  
	#else //竖屏分辨率
	info->lcd_x              = 240;  
    info->lcd_y              = 320;  	
	#endif
	
    info->lcd_dclk_freq      = 12;   //MHz  
	
    info->lcd_pwm_freq       = 1;    //KHz 
    info->lcd_srgb           = 0;    //0x00202020; 
    info->lcd_swap           = 0;
                             
    //屏的接口配置信息
    info->lcd_if             = 1;   //0:HV , 1:8080 I/F, 2:TTL I/F, 3:LVDS
            
    //屏的HV模块相关信息
    info->lcd_hv_if          = 0;
    info->lcd_hv_hspw        = 0;
    info->lcd_hv_lde_iovalue = 0;
    info->lcd_hv_lde_used    = 0;
    info->lcd_hv_smode       = 0;
    info->lcd_hv_syuv_if     = 0;
    info->lcd_hv_vspw        = 0;
        
    //屏的HV配置信息
    info->lcd_hbp            = 3;
    info->lcd_ht             = 480;
    info->lcd_vbp            = 3;
    info->lcd_vt             = (2 * 450);

    //屏的IO配置信息
    info->lcd_io_cfg0        = 0x00000000;
    info->lcd_io_cfg1        = 0x00000000;
    info->lcd_io_strength    = 0;

    //TTL屏幕的配置信息
    info->lcd_ttl_ckvd       = 0;
    info->lcd_ttl_ckvh       = 0;
    info->lcd_ttl_ckvt       = 0;
    info->lcd_ttl_datainv_en = 0;
    info->lcd_ttl_datainv_sel= 0;
    info->lcd_ttl_datarate   = 0;
    info->lcd_ttl_oehd       = 0;
    info->lcd_ttl_oehh       = 0;
    info->lcd_ttl_oevd       = 0;
    info->lcd_ttl_oevh       = 0;
    info->lcd_ttl_oevt       = 0;
    info->lcd_ttl_revd       = 0;
    info->lcd_ttl_revsel     = 0;
    info->lcd_ttl_sthd       = 0;
    info->lcd_ttl_sthh       = 0;
    info->lcd_ttl_stvdl      = 0;
    info->lcd_ttl_stvdp      = 0;
    info->lcd_ttl_stvh       = 0; 

	//gc9306 的配置信息
    info->lcd_frm 			 = 0;  //0: disable; 1: enable rgb666 dither; 2:enable rgb656 dither    
    info->lcd_cpu_if         = 4;  //16: color will become red;  
}

static void LCD_init_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, Lcd_cpuisr_proc);
}

static void LCD_exit_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, 0);
}

static __s32 LCD_open_flow(__u32 sel)
{
	LCD_OPEN_FUNC(sel, LCD_power_on	, 10); 	//打开LCD供电,并延时10ms
	LCD_OPEN_FUNC(sel, TCON_open	, 200); //打开LCD控制器,并延时200ms
	LCD_OPEN_FUNC(sel, LCD_open_cmd	, 100); //通过IO配置LCD模组为工作模式,并延时100ms
	LCD_OPEN_FUNC(sel, LCD_bl_close	, 0); 	//打开背光,并延时0ms 
	LCD_OPEN_FUNC(sel, LCD_init_isr , 0);   //初始化CPU PANEL 中断服务程序,并延时 0ms

	return 0;
}

static __s32 LCD_close_flow(__u32 sel)
{	
	LCD_CLOSE_FUNC(sel, LCD_exit_isr    , 0);    //关闭CPU PANEL中断服务程序,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_bl_close    , 0); 	 //关闭背光,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_close_cmd   , 0); 	 //通过IO配置LCD模组为掉电/休眠模式,并延时0ms
	LCD_CLOSE_FUNC(sel, TCON_close	    , 0); 	 //关闭LCD 控制器,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_power_off   , 1700); //关闭LCD供电,并延时1700ms

	return 0;
}

/*
*********************************************************************************************************
*                                           POWER ON
*
* Description: 
*
* Arguments  : 
*
* Returns    : 
*
* Note       :
*********************************************************************************************************
*/
static void LCD_power_on(__u32 sel)
{
    LCD_POWER_EN(sel, 1);	
}

static void LCD_power_off(__u32 sel)
{
	LCD_POWER_EN(sel, 0);
}

/*
*********************************************************************************************************
*                                           BACK LIGHT ON
*
* Description: 
*
* Arguments  : 
*
* Returns    :
*
* Note       :
*********************************************************************************************************
*/
static void LCD_bl_open(__u32 sel)
{
	LCD_BL_EN(sel, 1);
}

static void LCD_bl_close(__u32 sel)
{
	LCD_BL_EN(sel, 0);
}

static void lcd_cpu_cmdset(void)
{
	GC9306_CMD(0xfe);
	GC9306_CMD(0xef);
		
	GC9306_CMD(0x36); 
	GC9306_DATA(0x28);  //0x48竖屏  //0x38或者0x28横屏
	//GC9306_DATA(0xe8); //横屏 翻转180
	
	GC9306_CMD(0x3a);
	GC9306_DATA(0x05);
		
	//------end display control setting----//
	//------Power Control Registers Initial----//
	GC9306_CMD(0xa4);
	GC9306_DATA(0x44);
	GC9306_DATA(0x44);
	
	GC9306_CMD(0xa5);
	GC9306_DATA(0x42);
	GC9306_DATA(0x42);
	
	GC9306_CMD(0xaa);
	GC9306_DATA(0x88);
	GC9306_DATA(0x88);

	GC9306_CMD(0xe8);
	GC9306_DATA(0x11);
	GC9306_DATA(0x0b);
	
	GC9306_CMD(0xe3);
	GC9306_DATA(0x01);
	GC9306_DATA(0x10);
	
	GC9306_CMD(0xff);
	GC9306_DATA(0x61);

	GC9306_CMD(0xac);
	GC9306_DATA(0x00);
	GC9306_CMD(0xad);
	GC9306_DATA(0x33);

	GC9306_CMD(0xae);
	GC9306_DATA(0x2b);

	GC9306_CMD(0xaf);
	GC9306_DATA(0x55);
	
	GC9306_CMD(0xa6);
	GC9306_DATA(0x2a);
	GC9306_DATA(0x2a);
	
	GC9306_CMD(0xa7);
	GC9306_DATA(0x2b);
	GC9306_DATA(0x2b);
	
	GC9306_CMD(0xa8);
	GC9306_DATA(0x18);
	GC9306_DATA(0x18);
	
	GC9306_CMD(0xa9);
	GC9306_DATA(0x2a);
	GC9306_DATA(0x2a);

	#if 1 //横屏窗口设置
	GC9306_CMD(0x2b);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0xef); 
	
	GC9306_CMD(0x2a);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x01);
	GC9306_DATA(0x3f); 

	GC9306_CMD(0x2c);
	#else //竖屏窗口设置
	GC9306_CMD(0x2a);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0xef); 
	
	GC9306_CMD(0x2b);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x01);
	GC9306_DATA(0x3f); 

	GC9306_CMD(0x2c);
	#endif

	GC9306_CMD(0xF0);
	GC9306_DATA(0x02);
	GC9306_DATA(0x01);
	GC9306_DATA(0x00);
	GC9306_DATA(0x06);
	GC9306_DATA(0x09);
	GC9306_DATA(0x0c);
	
	GC9306_CMD(0xF1);
	GC9306_DATA(0x01);
	GC9306_DATA(0x03);
	GC9306_DATA(0x00);
	GC9306_DATA(0x3a);
	GC9306_DATA(0x3e);
	GC9306_DATA(0x09);
	
	GC9306_CMD(0xF2);
	GC9306_DATA(0x0c);
	GC9306_DATA(0x09);
	GC9306_DATA(0x26);
	GC9306_DATA(0x07);
	GC9306_DATA(0x07);
	GC9306_DATA(0x30);
	
	GC9306_CMD(0xF3);
	GC9306_DATA(0x09);
	GC9306_DATA(0x06);
	GC9306_DATA(0x57);
	GC9306_DATA(0x03);
	GC9306_DATA(0x03);
	GC9306_DATA(0x6b);
	
	GC9306_CMD(0xF4);
	GC9306_DATA(0x0d);
	GC9306_DATA(0x1d);
	GC9306_DATA(0x1c);
	GC9306_DATA(0x06);
	GC9306_DATA(0x08);
	GC9306_DATA(0x0F);
	
	GC9306_CMD(0xF5);
	GC9306_DATA(0x0c);
	GC9306_DATA(0x05);
	GC9306_DATA(0x06);
	GC9306_DATA(0x33);
	GC9306_DATA(0x31);
	GC9306_DATA(0x0F);

//------------------------------------end gamma setting-----------------------------------------//
	GC9306_CMD(0x11);
	LCD_delay(120*60000); 
	GC9306_CMD(0x29);
	LCD_delay(120*60000); 

	GC9306_CMD(0x2c);
}

static void  LCD_open_cmd(__u32 sel)
{	
	 __u32 id = 0;
	
	LCD_CPU_AUTO_FLUSH(0,0);
	__inf("LCD_BOOT: disable auto mode for setting!!!!!!!!!!!!!!!!\n");
	
	LCD_delay(600);
	      
    //LCD_CPU_RD(0, 0x0000,&id);
    //__inf("==LCD_BOOT: id to read back is %x\n",id);
	LCD_CPU_RD(0, 0x0004, &id);
    __inf("==LCD_BOOT: id to read back is %x\n",id);
	
	//setting panel
	lcd_cpu_cmdset();
	__inf("LCD_BOOT: lcd_cpu_cmdset!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");

	LCD_CPU_AUTO_FLUSH(0,1);
	__inf("LCD_BOOT: LCD_CPU_AUTO_FLUSH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
} 

static void  LCD_close_cmd(__u32 sel)
{
}

void  Lcd_cpuisr_proc(void)
{
	#if 1 //横屏窗口设置
	GC9306_CMD(0x2b);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0xef); 
	
	GC9306_CMD(0x2a);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x01);
	GC9306_DATA(0x3f); 

	GC9306_CMD(0x2c);
	#else //竖屏窗口设置
	GC9306_CMD(0x2a);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0xef); 
	
	GC9306_CMD(0x2b);
	GC9306_DATA(0x00);
	GC9306_DATA(0x00);
	GC9306_DATA(0x01);
	GC9306_DATA(0x3f); 

	GC9306_CMD(0x2c);	
	#endif
   
}

void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

void LCD_get_panel_funs_1(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info1;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

3)ST7789驱动

/*
*********************************************************************************************************
*                            sys_config.fex 配置示例
lcd_bl_en_used           = 0
lcd_bl_en                = 0

lcd_power_used           = 0
lcd_power                = 0

lcd_pwm_used             = 1
lcd_pwm                  = port:PA08<2><0><default><default>
*********************************************************************************************************
*/
#include "lcd_panel_cfg.h"

#define ST7789_CMD(V) 	LCD_CPU_WR_INDEX(0, V)
#define ST7789_DATA(D)	LCD_CPU_WR_DATA(0, D)

#define __inf eLIBs_printf
void  Lcd_cpuisr_proc(void);

static void LCD_cfg_panel_info(__panel_para_t * info)
{
    memset(info,0,sizeof(__panel_para_t));

	//屏的基本信息 ST7789
	#if 1 //横屏分辨率
    info->lcd_x              = 320;
    info->lcd_y              = 240;
	#else //竖屏分辨率
	info->lcd_x              = 240;
    info->lcd_y              = 320;	
	#endif
	
	info->lcd_dclk_freq      = 12;   //MHz
	
    info->lcd_pwm_freq       = 1; //KHz 
	
    info->lcd_srgb           = 0; //0x00202020; 
    info->lcd_swap           = 0;
                             
    //屏的接口配置信息
    info->lcd_if             = 1;   //0:HV , 1:8080 I/F, 2:TTL I/F, 3:LVDS
            
    //屏的HV模块相关信息
    info->lcd_hv_if          = 0;
    info->lcd_hv_hspw        = 0;
    info->lcd_hv_lde_iovalue = 0;
    info->lcd_hv_lde_used    = 0;
    info->lcd_hv_smode       = 0;
    info->lcd_hv_syuv_if     = 0;
    info->lcd_hv_vspw        = 0;
        
    //屏的HV配置信息
    info->lcd_hbp            = 3;
    info->lcd_ht             = 480;
    info->lcd_vbp            = 3;
    info->lcd_vt             = (2 * 450);

    //屏的IO配置信息
    info->lcd_io_cfg0        = 0x00000000;
    info->lcd_io_cfg1        = 0x00000000;
    info->lcd_io_strength    = 0;

    //TTL屏幕的配置信息
    info->lcd_ttl_ckvd       = 0;
    info->lcd_ttl_ckvh       = 0;
    info->lcd_ttl_ckvt       = 0;
    info->lcd_ttl_datainv_en = 0;
    info->lcd_ttl_datainv_sel= 0;
    info->lcd_ttl_datarate   = 0;
    info->lcd_ttl_oehd       = 0;
    info->lcd_ttl_oehh       = 0;
    info->lcd_ttl_oevd       = 0;
    info->lcd_ttl_oevh       = 0;
    info->lcd_ttl_oevt       = 0;
    info->lcd_ttl_revd       = 0;
    info->lcd_ttl_revsel     = 0;
    info->lcd_ttl_sthd       = 0;
    info->lcd_ttl_sthh       = 0;
    info->lcd_ttl_stvdl      = 0;
    info->lcd_ttl_stvdp      = 0;
    info->lcd_ttl_stvh       = 0; 
	
	//st7789屏幕的配置信息    
    info->lcd_frm 			 = 0;  //2;    //0: disable; 1: enable rgb666 dither; 2:enable rgb656 dither    
    info->lcd_cpu_if         = 4;  //16: color will become red;  
}

static void LCD_init_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, Lcd_cpuisr_proc);
}

static void LCD_exit_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, 0);
}

static __s32 LCD_open_flow(__u32 sel)
{
	LCD_OPEN_FUNC(sel, LCD_power_on	, 10); 	//打开LCD供电,并延时10ms
	LCD_OPEN_FUNC(sel, TCON_open	, 200); //打开LCD控制器,并延时200ms
	LCD_OPEN_FUNC(sel, LCD_open_cmd	, 100); //通过IO配置LCD模组为工作模式,并延时100ms
	LCD_OPEN_FUNC(sel, LCD_bl_close	, 0); 	//打开背光,并延时0ms 
	LCD_OPEN_FUNC(sel, LCD_init_isr , 0);   //初始化CPU PANEL 中断服务程序,并延时 0ms

	return 0;
}

static __s32 LCD_close_flow(__u32 sel)
{	
	LCD_CLOSE_FUNC(sel, LCD_exit_isr    , 0);    //关闭CPU PANEL中断服务程序,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_bl_close    , 0); 	 //关闭背光,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_close_cmd   , 0); 	 //通过IO配置LCD模组为掉电/休眠模式,并延时0ms
	LCD_CLOSE_FUNC(sel, TCON_close	    , 0); 	 //关闭LCD 控制器,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_power_off   , 1700); //关闭LCD供电,并延时1700ms

	return 0;
}

/*
*********************************************************************************************************
*                                           POWER ON
*
* Description: 
*
* Arguments  : 
*
* Returns    : 
*
* Note       :
*********************************************************************************************************
*/
static void LCD_power_on(__u32 sel)
{
    LCD_POWER_EN(sel, 1);	
}

static void LCD_power_off(__u32 sel)
{
	LCD_POWER_EN(sel, 0);
}

/*
*********************************************************************************************************
*                                           BACK LIGHT ON
*
* Description: 
*
* Arguments  : 
*
* Returns    :
*
* Note       :
*********************************************************************************************************
*/
static void LCD_bl_open(__u32 sel)
{
	LCD_BL_EN(sel, 1);
}

static void LCD_bl_close(__u32 sel)
{
	LCD_BL_EN(sel, 0);
}

static void lcd_cpu_cmdset(void)
{
	//-----------------------------------ST7789 reset sequence------------------------------------//
	/*
	LCD_RESET=1;  
	Delayms(1);  //Delay 1ms  
	LCD_RESET=0;  
	Delayms(10);  //Delay 10ms  
	LCD_RESET=1;  
	Delayms(120);  //Delay 120ms  
	*/
	//--------------------------------------------------------------------------------------------//
	ST7789_CMD(0x11);
	LCD_delay(120*60000); //Delay 120ms
	//--------------------------------ST7789S Frame rate setting----------------------------------//
	ST7789_CMD(0xb2);
	ST7789_DATA(0x0c); //0x05
	ST7789_DATA(0x0c); //0x05
	ST7789_DATA(0x00);
	ST7789_DATA(0x33);
	ST7789_DATA(0x33);

	ST7789_CMD(0xb7);
	ST7789_DATA(0x35);

	//---------------------------------ST7789S Power setting--------------------------------------//
	ST7789_CMD(0xbb);
	ST7789_DATA(0x1c); //(0x35);//10
	ST7789_CMD(0xc0);
	ST7789_DATA(0x2c);
	ST7789_CMD(0xc2);
	ST7789_DATA(0x01);
	ST7789_CMD(0xc3);
	ST7789_DATA(0x12); //(0x17);
	ST7789_CMD(0xc4);
	ST7789_DATA(0x20);
	ST7789_CMD(0xc6);
	ST7789_DATA(0x0f); //(0x15);//0F
	ST7789_CMD(0xca);
	ST7789_DATA(0x0f);
	ST7789_CMD(0xc8);
	ST7789_DATA(0x08);
	ST7789_CMD(0x55);
	ST7789_DATA(0x90);
	ST7789_CMD(0xd0);
	ST7789_DATA(0xa4);
	ST7789_DATA(0xa2); //(0xa1);

	ST7789_CMD(0x3a);
	ST7789_DATA(0x55);

	ST7789_CMD(0x36); 
	ST7789_DATA(0x60); //0x60 horizontal show   // 0x00 vertical show
	//ST7789_DATA(0xa0); //横屏翻转180

	//--------------------------------ST7789S gamma setting---------------------------------------//
	ST7789_CMD(0xe0);
	ST7789_DATA(0xf0);
	ST7789_DATA(0x00);
	ST7789_DATA(0x0a);
	ST7789_DATA(0x10);
	ST7789_DATA(0x12);
	ST7789_DATA(0x1b);
	ST7789_DATA(0x39);
	ST7789_DATA(0x44);
	ST7789_DATA(0x47);
	ST7789_DATA(0x28);
	ST7789_DATA(0x12);
	ST7789_DATA(0x10);
	ST7789_DATA(0x16);
	ST7789_DATA(0x1b);

	ST7789_CMD(0xe1);
	ST7789_DATA(0xf0);
	ST7789_DATA(0x00);
	ST7789_DATA(0x0a);
	ST7789_DATA(0x10);
	ST7789_DATA(0x11);
	ST7789_DATA(0x1a);
	ST7789_DATA(0x3b);
	ST7789_DATA(0x34);
	ST7789_DATA(0x4e);
	ST7789_DATA(0x3a);
	ST7789_DATA(0x17);
	ST7789_DATA(0x16);
	ST7789_DATA(0x21);
	ST7789_DATA(0x22); 

	#if 1 //横屏窗口设置
	ST7789_CMD(0x2b); 
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0xef); 

	ST7789_CMD(0x2a);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x01);
	ST7789_DATA(0x3f); 

	ST7789_CMD(0x2c);
	#else //竖屏窗口设置
	ST7789_CMD(0x2a); 
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0xef); 

	ST7789_CMD(0x2b);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x01);
	ST7789_DATA(0x3f); 

	ST7789_CMD(0x2c);	
	#endif
}

static void  LCD_open_cmd(__u32 sel)
{	
	 __u32 id = 0;
	
	LCD_CPU_AUTO_FLUSH(0,0);
	__inf("LCD_BOOT: disable auto mode for setting!!!!!!!!!!!!!!!!\n");
	
	LCD_delay(600);
	      
    //LCD_CPU_RD(0, 0x0000,&id);
    //__inf("==LCD_BOOT: id to read back is %x\n",id);
	LCD_CPU_RD(0, 0x0004, &id);
    __inf("==LCD_BOOT: id to read back is %x\n",id);
	
	//setting panel
	lcd_cpu_cmdset();
	__inf("LCD_BOOT: lcd_cpu_cmdset!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");

	LCD_CPU_AUTO_FLUSH(0,1);
	__inf("LCD_BOOT: LCD_CPU_AUTO_FLUSH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
} 

static void  LCD_close_cmd(__u32 sel)
{
}

void  Lcd_cpuisr_proc(void)
{
	#if 1  //横屏窗口设置
	ST7789_CMD(0x2b);   
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0xef); 

	ST7789_CMD(0x2a); 
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x01);
	ST7789_DATA(0x3f); 
	 
	ST7789_CMD(0x2c);
	#else //竖屏窗口设置
	ST7789_CMD(0x2a);  
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0xef); 

	ST7789_CMD(0x2b);
	ST7789_DATA(0x00);
	ST7789_DATA(0x00);
	ST7789_DATA(0x01);
	ST7789_DATA(0x3f); 
	 
	ST7789_CMD(0x2c);	
	#endif
}

void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

void LCD_get_panel_funs_1(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info1;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

4)HX8357C驱动

/*
*********************************************************************************************************
*                            sys_config.fex 配置示例
lcd_bl_en_used           = 0
lcd_bl_en                = 0

lcd_power_used           = 0
lcd_power                = 0

lcd_pwm_used             = 1
lcd_pwm                  = port:PA08<2><0><default><default>
*********************************************************************************************************
*/
#include "lcd_panel_cfg.h"

#define HX8357C_CMD(V) 	  LCD_CPU_WR_INDEX(0, V)
#define HX8357C_DATA(D)   LCD_CPU_WR_DATA(0, D)

#define __inf eLIBs_printf
void  Lcd_cpuisr_proc(void);

static void LCD_cfg_panel_info(__panel_para_t * info)
{
    memset(info,0,sizeof(__panel_para_t));

	//屏的基本信息 HX8357C
	#if 1 //横屏分辨率
    info->lcd_x              =  320;  
    info->lcd_y              =  480;
	#else //竖屏分辨率
	info->lcd_x              =  480;  
    info->lcd_y              =  320; 	
	#endif 
	
	info->lcd_dclk_freq      = 	12;  //MHz
	
    info->lcd_pwm_freq       = 1; 	 //KHz 
    info->lcd_srgb           = 0; 	 //0x00202020; 
    info->lcd_swap           = 0;
                             
    //屏的接口配置信息
    info->lcd_if             = 1;    //0:HV , 1:8080 I/F, 2:TTL I/F, 3:LVDS
            
    //屏的HV模块相关信息
    info->lcd_hv_if          = 0;
    info->lcd_hv_hspw        = 0;
    info->lcd_hv_lde_iovalue = 0;
    info->lcd_hv_lde_used    = 0;
    info->lcd_hv_smode       = 0;
    info->lcd_hv_syuv_if     = 0;
    info->lcd_hv_vspw        = 0;
        
    //屏的HV配置信息
    info->lcd_hbp            = 3;
    info->lcd_ht             = 480;
    info->lcd_vbp            = 3;
    info->lcd_vt             = (2 * 450);

    //屏的IO配置信息
    info->lcd_io_cfg0        = 0x00000000;
    info->lcd_io_cfg1        = 0x00000000;
    info->lcd_io_strength    = 0;

    //TTL屏幕的配置信息
    info->lcd_ttl_ckvd       = 0;
    info->lcd_ttl_ckvh       = 0;
    info->lcd_ttl_ckvt       = 0;
    info->lcd_ttl_datainv_en = 0;
    info->lcd_ttl_datainv_sel= 0;
    info->lcd_ttl_datarate   = 0;
    info->lcd_ttl_oehd       = 0;
    info->lcd_ttl_oehh       = 0;
    info->lcd_ttl_oevd       = 0;
    info->lcd_ttl_oevh       = 0;
    info->lcd_ttl_oevt       = 0;
    info->lcd_ttl_revd       = 0;
    info->lcd_ttl_revsel     = 0;
    info->lcd_ttl_sthd       = 0;
    info->lcd_ttl_sthh       = 0;
    info->lcd_ttl_stvdl      = 0;
    info->lcd_ttl_stvdp      = 0;
    info->lcd_ttl_stvh       = 0; 

	//hx8357c屏幕的配置信息    
	info->lcd_frm			 = 0;  //2;  	//0: disable; 1: enable rgb666 dither; 2:enable rgb656 dither	 
	//info->lcd_cpu_if		 = 4;  //16: color will become red;	
}

static void LCD_init_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, Lcd_cpuisr_proc);
}

static void LCD_exit_isr(__u32 sel)
{
	LCD_cpu_register_irq(sel, 0);
}

static __s32 LCD_open_flow(__u32 sel)
{
	LCD_OPEN_FUNC(sel, LCD_power_on	, 10); 	//打开LCD供电,并延时10ms
	LCD_OPEN_FUNC(sel, TCON_open	, 200); //打开LCD控制器,并延时200ms
	LCD_OPEN_FUNC(sel, LCD_open_cmd	, 100); //通过IO配置LCD模组为工作模式,并延时100ms
	LCD_OPEN_FUNC(sel, LCD_bl_close	, 0); 	//打开背光,并延时0ms 
	LCD_OPEN_FUNC(sel, LCD_init_isr , 0);   //初始化CPU PANEL 中断服务程序,并延时 0ms

	return 0;
}

static __s32 LCD_close_flow(__u32 sel)
{	
	LCD_CLOSE_FUNC(sel, LCD_exit_isr    , 0);    //关闭CPU PANEL中断服务程序,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_bl_close    , 0); 	 //关闭背光,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_close_cmd   , 0); 	 //通过IO配置LCD模组为掉电/休眠模式,并延时0ms
	LCD_CLOSE_FUNC(sel, TCON_close	    , 0); 	 //关闭LCD 控制器,并延时0ms
	LCD_CLOSE_FUNC(sel, LCD_power_off   , 1700); //关闭LCD供电,并延时1700ms

	return 0;
}

/*
*********************************************************************************************************
*                                           POWER ON
*
* Description: 
*
* Arguments  : 
*
* Returns    : 
*
* Note       :
*********************************************************************************************************
*/
static void LCD_power_on(__u32 sel)
{
    LCD_POWER_EN(sel, 1);	
}

static void LCD_power_off(__u32 sel)
{
	LCD_POWER_EN(sel, 0);
}

/*
*********************************************************************************************************
*                                           BACK LIGHT ON
*
* Description: 
*
* Arguments  : 
*
* Returns    :
*
* Note       :
*********************************************************************************************************
*/
static void LCD_bl_open(__u32 sel)
{
	LCD_BL_EN(sel, 1);
}

static void LCD_bl_close(__u32 sel)
{
	LCD_BL_EN(sel, 0);
}

static void lcd_cpu_cmdset(void)
{
	HX8357C_CMD(0xB9);
	HX8357C_DATA(0xFF);
	HX8357C_DATA(0x83);
	HX8357C_DATA(0x57);
	LCD_delay(120*6000);
	HX8357C_CMD(0xB6); 
	HX8357C_DATA(0x2C); //VCOMDC

	HX8357C_CMD(0x11);  //Exit Sleep
	LCD_delay(120*60000);
	HX8357C_CMD(0x35); // TE ON

	HX8357C_CMD(0x3A);
	HX8357C_DATA(0x05); //262K

	#if 0
	HX8357C_CMD(0x36); 
	HX8357C_DATA(0x00); //0x60 horizontal show   // 0x00 vertical  show
	#endif

	HX8357C_CMD(0xB0);
	HX8357C_DATA(0x68); //70Hz

	HX8357C_CMD(0xCC);  //Set Panel
	HX8357C_DATA(0x09);  

	HX8357C_CMD(0xB1); 
	HX8357C_DATA(0x00);  //DP
	HX8357C_DATA(0x15);  //BT
	HX8357C_DATA(0x13);  //VSPR
	HX8357C_DATA(0x13);  //VSNR
	HX8357C_DATA(0x83);  //AP
	HX8357C_DATA(0x48);  //FS

	HX8357C_CMD(0xC0); 
	HX8357C_DATA(0x50);  //OPON
	HX8357C_DATA(0x50);  //OPON
	HX8357C_DATA(0x01);  //STBA
	HX8357C_DATA(0x3C);  //STBA
	HX8357C_DATA(0x1E);  //STBA
	HX8357C_DATA(0x08);  //GEN

	HX8357C_CMD(0xB4); 
	HX8357C_DATA(0x01);  //NW
	HX8357C_DATA(0x40);  //RTN
	HX8357C_DATA(0x00);  //DIV
	HX8357C_DATA(0x2A);  //DUM
	HX8357C_DATA(0x2A);  //DUM
	HX8357C_DATA(0x0D);  //GDON
	HX8357C_DATA(0x78);  //GDOFF

	HX8357C_CMD(0xE0); 
	HX8357C_DATA(0x02);  //1
	HX8357C_DATA(0x08);  //2
	HX8357C_DATA(0x11);  //3
	HX8357C_DATA(0x23);  //4
	HX8357C_DATA(0x2C);  //5
	HX8357C_DATA(0x40);  //6
	HX8357C_DATA(0x4A);  //7
	HX8357C_DATA(0x52);  //8
	HX8357C_DATA(0x48);  //9
	HX8357C_DATA(0x41);  //10
	HX8357C_DATA(0x3C);  //11
	HX8357C_DATA(0x33);  //12
	HX8357C_DATA(0x2E);  //13
	HX8357C_DATA(0x28);  //14
	HX8357C_DATA(0x27);  //15
	HX8357C_DATA(0x1B);  //16
	HX8357C_DATA(0x02);  //17 v1
	HX8357C_DATA(0x08);  //18
	HX8357C_DATA(0x11);  //19
	HX8357C_DATA(0x23);  //20
	HX8357C_DATA(0x2C);  //21
	HX8357C_DATA(0x40);  //22
	HX8357C_DATA(0x4A);  //23
	HX8357C_DATA(0x52);  //24
	HX8357C_DATA(0x48);  //25
	HX8357C_DATA(0x41);  //26
	HX8357C_DATA(0x3C);  //27
	HX8357C_DATA(0x33);  //28
	HX8357C_DATA(0x2E);  //29
	HX8357C_DATA(0x28);  //30
	HX8357C_DATA(0x27);  //31
	HX8357C_DATA(0x1B);  //32
	HX8357C_DATA(0x00);  //33
	HX8357C_DATA(0x01);  //34

	#if 0 // //竖屏窗口设置
	HX8357C_CMD(0x2a); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0x3f); 

	HX8357C_CMD(0x2b); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0xdf);

	HX8357C_CMD(0x2c);
	#else //横屏窗口设置
	HX8357C_CMD(0x2b); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0x3f); 

	HX8357C_CMD(0x2a); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0xdf);

	HX8357C_CMD(0x2c);
	#endif

	LCD_delay(120*60000); 
	HX8357C_CMD(0x29); // display on
	LCD_delay(120*60000); 
	HX8357C_CMD(0x2c);
}

static void  LCD_open_cmd(__u32 sel)
{	
	__u32 id = 0;
	
	LCD_CPU_AUTO_FLUSH(0,0);
	__inf("LCD_BOOT: disable auto mode for setting!!!!!!!!!!!!!!!!\n");
	
	LCD_delay(600);
	      
    //LCD_CPU_RD(0, 0x0000,&id);
    //__inf("==LCD_BOOT: id to read back is %x\n",id);
	LCD_CPU_RD(0, 0x0004, &id);
    __inf("==LCD_BOOT: id to read back is %x\n",id);
	
	//setting panel
	lcd_cpu_cmdset();
	__inf("LCD_BOOT: lcd_cpu_cmdset!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");

	LCD_CPU_AUTO_FLUSH(0,1);
	__inf("LCD_BOOT: LCD_CPU_AUTO_FLUSH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
} 

static void  LCD_close_cmd(__u32 sel)
{
}

void  Lcd_cpuisr_proc(void)
{
	#if 0 // //竖屏窗口设置
	HX8357C_CMD(0x2a); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0x3f); 

	HX8357C_CMD(0x2b); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0xdf);

	HX8357C_CMD(0x2c);
	#else //横屏窗口设置
	HX8357C_CMD(0x2b); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0x3f); 

	HX8357C_CMD(0x2a); 
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x00);
	HX8357C_DATA(0x01);
	HX8357C_DATA(0xdf);

	HX8357C_CMD(0x2c);
	#endif
}

void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}

void LCD_get_panel_funs_1(__lcd_panel_fun_t * fun)
{
    fun->cfg_panel_info = LCD_cfg_panel_info1;
    fun->cfg_open_flow = LCD_open_flow;
    fun->cfg_close_flow = LCD_close_flow;
}
  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值