📄 天马2。4+1505c initial code.txt
字号:
********************************************************************************/
void LCD_EnterSleep_FT1505C(void)
{
LCD_CtrlWrite_ILI9320(0x0007, 0x0131); // display OFF
delayms(10); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0007, 0x0130); // display OFF
delayms(10); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0007, 0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_ILI9320(0x0010, 0x0080); // SAP, BT[3:0], APE, AP, DSTB, SLP
LCD_CtrlWrite_ILI9320(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ILI9320(0x0012, 0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ILI9320(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delayms(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ILI9320(0x0010, 0x0082); // SAP, BT[3:0], APE, AP, DSTB, SLP
}
void LCD_ExitSleep_FT1505C(void)
{
//*************Power On sequence ******************//
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CtrlWrite_ILI9320(0x002B,0x0003);
LCD_CtrlWrite_ILI9320(0x0000,0x0001);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0007,0x0000);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0012,0x0000);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0060,0xa700);
LCD_CtrlWrite_ILI9320(0x0008,0x0405);
LCD_CtrlWrite_ILI9320(0x0010,0x02C0);
LCD_CtrlWrite_ILI9320(0x0011,0x0047);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0012,0x0116); //16 14
delayms(50);
LCD_CtrlWrite_ILI9320(0x0013,0x1900); //13 1
LCD_CtrlWrite_ILI9320(0x0029,0x002E);//2 `
delayms(30);
LCD_CtrlWrite_ILI9320(0x0098,0x0202);
LCD_CtrlWrite_ILI9320(0x0010,0x12F0);
delayms(20);
LCD_CtrlWrite_ILI9320(0x0007,0x0133);
LCD_CtrlWrite_ILI9320(0x002b,0x000C);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0020,0x0000);
LCD_CtrlWrite_ILI9320(0x0021,0x0000);
}
void LCD_Partial_On_FT1505C(kal_uint16 start_page,kal_uint16 end_page)
{
}
void LCD_Partial_Off_FT1505C(void)
{
}
kal_uint8 LCD_Partial_line_FT1505C(void)
{
return 1; /* partial display in 1 line alignment */
}
void LCD_blockClear_FT1505C(kal_uint16 x1,kal_uint16 y1,kal_uint16 x2,kal_uint16 y2,kal_uint16 data)
{
kal_uint16 LCD_x;
kal_uint16 LCD_y;
#if (defined(MAIN_LCD_18BIT_MODE) || defined(MAIN_LCD_9BIT_MODE))
kal_uint8 r_color, g_color, b_color;
r_color = (data&0xF800)>>10; /* transfer to RGB666 */
g_color = (data>>5)&0x3F;
b_color = ((data)&0x1F)<<1;
#endif
LCD_CtrlWrite_ILI9320(0x0050, x1);
LCD_CtrlWrite_ILI9320(0x0051, x2);
LCD_CtrlWrite_ILI9320(0x0052, y1);
LCD_CtrlWrite_ILI9320(0x0053, y2);
LCD_CtrlWrite_ILI9320(0x0020, x1);
LCD_CtrlWrite_ILI9320(0x0021, y1);
LCD_CMDWrite_ILI9320(0x0022);
for(LCD_y=y1;LCD_y<=y2;LCD_y++)
{
for(LCD_x=x1;LCD_x<=x2;LCD_x++)
{
#if (defined(MAIN_LCD_8BIT_MODE))
*((volatile unsigned char *) LCD_ILI9320_DATA_ADDR)=(kal_uint8)((data&0xFF00)>>8);
*((volatile unsigned char *) LCD_ILI9320_DATA_ADDR)=(kal_uint8)(data&0xFF);
#elif (defined(MAIN_LCD_16BIT_MODE))
*((volatile unsigned short *) LCD_ILI9320_DATA_ADDR)=data;
#elif (defined(MAIN_LCD_18BIT_MODE))
*((volatile unsigned int *) LCD_ILI9320_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
#elif (defined(MAIN_LCD_9BIT_MODE))
*((volatile unsigned short *) LCD_ILI9320_DATA_ADDR)=(r_color<<6)|(g_color>>3);
*((volatile unsigned short *) LCD_ILI9320_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
#endif
}
}
}
void LCD_ClearAll_FT1505C(kal_uint16 data)
{
LCD_blockClear_ILI9325(0, 0, LCD_WIDTH-1, LCD_HEIGHT-1, data);
}
void LCD_Init_FT1505C(kal_uint32 bkground, void **buf_addr)
{
kal_uint16 background = (kal_uint16)bkground;
kal_prompt_trace(MOD_AUX, "lcd_id6 = %x!", lcd_id);
#ifdef _SUPPORT_MULTI_MAINLCD_
kal_wap_trace(MOD_MMI, TRACE_GROUP_7, "[QJHU] lcd_id = %x!", lcd_id);
#endif /* _SUPPORT_MULTI_MAINLCD_ */
delayms(2);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CMDWrite_ILI9320(0x0000);
LCD_CtrlWrite_ILI9320(0x002B,0x0003);
LCD_CtrlWrite_ILI9320(0x0000,0x0001);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0007,0x0000);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0012,0x0000);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0060,0xa700);
LCD_CtrlWrite_ILI9320(0x0008,0x0405);
LCD_CtrlWrite_ILI9320(0x0030,0x0101);
LCD_CtrlWrite_ILI9320(0x0031,0x0103);
LCD_CtrlWrite_ILI9320(0x0032,0x0505);
LCD_CtrlWrite_ILI9320(0x0035,0x0306);
LCD_CtrlWrite_ILI9320(0x0036,0x050B);
LCD_CtrlWrite_ILI9320(0x0037,0x0002);
LCD_CtrlWrite_ILI9320(0x0038,0x0200);
LCD_CtrlWrite_ILI9320(0x0039,0x0707);
LCD_CtrlWrite_ILI9320(0x003c,0x0000);
LCD_CtrlWrite_ILI9320(0x003d,0x0000);
LCD_CtrlWrite_ILI9320(0x0010,0x02C0);
LCD_CtrlWrite_ILI9320(0x0011,0x0147);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0012,0x0116); //16 14
delayms(50);
LCD_CtrlWrite_ILI9320(0x0013,0x1900); //13 1
LCD_CtrlWrite_ILI9320(0x0029,0x002E);//2-3 2f
delayms(30);
LCD_CtrlWrite_ILI9320(0x0001,0x0100);
LCD_CtrlWrite_ILI9320(0x0002,0x0700);
LCD_CtrlWrite_ILI9320(0x0003,0x1030);
LCD_CtrlWrite_ILI9320(0x0061,0x0001);
LCD_CtrlWrite_ILI9320(0x0090,0x0010);
LCD_CtrlWrite_ILI9320(0x0092,0x0600);
LCD_CtrlWrite_ILI9320(0x0080,0x0000);
LCD_CtrlWrite_ILI9320(0x0081,0x0000);
LCD_CtrlWrite_ILI9320(0x0082,0x013F);
LCD_CtrlWrite_ILI9320(0x0083,0x0000);
LCD_CtrlWrite_ILI9320(0x0084,0x0000);
LCD_CtrlWrite_ILI9320(0x0085,0x013F);
LCD_CtrlWrite_ILI9320(0x0050,0x0000);
LCD_CtrlWrite_ILI9320(0x0051,0x00ef);
LCD_CtrlWrite_ILI9320(0x0052,0x0000);
LCD_CtrlWrite_ILI9320(0x0053,0x013f);
LCD_CtrlWrite_ILI9320(0x0098,0x0202);
LCD_CtrlWrite_ILI9320(0x0010,0x12F0);
delayms(20);
LCD_CtrlWrite_ILI9320(0x0007,0x0133);
delayms(50);
LCD_CtrlWrite_ILI9320(0x0020,0x0000);
LCD_CtrlWrite_ILI9320(0x0021,0x0000);
LCD_CtrlWrite_ILI9320(0x006a,0x0000);
//LCD_CtrlWrite_ILI9320(0x0093,0x0003);
//LCD_CtrlWrite_ILI9320(0x0095,0x0110);
//LCD_CtrlWrite_ILI9320(0x0097,0x0000);
//LCD_CtrlWrite_ILI9320(0x0098,0x0000);
LCD_CtrlWrite_ILI9320(0x0020,0x0000);
LCD_CtrlWrite_ILI9320(0x0021,0x0000);
LCD_CtrlWrite_ILI9320(0x0022,0x0000);
LCD_ClearAll_ILI9325(background);
}
void LCD_PWRON_FT1505C(kal_bool on)
{
if(on)
{
LCD_ExitSleep_ILI9325();
}
else
{
LCD_EnterSleep_ILI9325();
}
}
void LCD_SetContrast_FT1505C(kal_uint8 level)
{
}
void LCD_ON_FT1505C(kal_bool on)
{
if (on)
{
LCD_ExitSleep_ILI9325();
}
else
{
LCD_EnterSleep_ILI9325();
}
}
void LCD_BlockWrite_FT1505C(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
#if (defined(MT6225) || defined(MT6226)||defined(MT6226M)||defined(MT6227)||defined(MT6228)||defined(MT6229))
while (LCD_IS_RUNNING){};
ASSERT(lcd_assert_fail==KAL_FALSE);
lcd_assert_fail = KAL_TRUE;
#ifndef LCD_CMD_DMA_MODE
ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
START_LCD_TRANSFER;
#else
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(1,LCD_CMD,0x50);
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(kal_uint8)0);
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(kal_uint8)startx);
SET_LCD_CMD_PARAMETER(4,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(5,LCD_CMD,0x51);
SET_LCD_CMD_PARAMETER(6,LCD_DATA,(kal_uint8)0);
SET_LCD_CMD_PARAMETER(7,LCD_DATA,(kal_uint8)endx);
SET_LCD_CMD_PARAMETER(8,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(9,LCD_CMD,0x52);
SET_LCD_CMD_PARAMETER(10,LCD_DATA,(kal_uint8)((starty & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(11,LCD_DATA,(kal_uint8)(starty & 0xFF));
SET_LCD_CMD_PARAMETER(12,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(13,LCD_CMD,0x53);
SET_LCD_CMD_PARAMETER(14,LCD_DATA,(kal_uint8)((endy & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(15,LCD_DATA,(kal_uint8)(endy & 0xFF));
SET_LCD_CMD_PARAMETER(16,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(17,LCD_CMD,0x20);
SET_LCD_CMD_PARAMETER(18,LCD_DATA,(kal_uint8)0);
SET_LCD_CMD_PARAMETER(19,LCD_DATA,(kal_uint8)startx);
SET_LCD_CMD_PARAMETER(20,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(21,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(22,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(23,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(24,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(25,LCD_CMD,0x21);
SET_LCD_CMD_PARAMETER(26,LCD_DATA,(kal_uint8)((starty & 0xFF00)>>8));
SET_LCD_CMD_PARAMETER(27,LCD_DATA,(kal_uint8)(starty & 0xFF));
SET_LCD_CMD_PARAMETER(28,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(29,LCD_CMD,0x22);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(30);
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
#endif
lcd_assert_fail = KAL_FALSE;
#endif
}
void LCD_Size_FT1505C(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height)
{
*out_LCD_width = LCD_WIDTH;
*out_LCD_height = LCD_HEIGHT;
}
// TODO:ILI9325 Functions - Engineering mode
/********************************************************************************/
/* ILI9325 Functions */
/* Engineering mode */
/********************************************************************************/
kal_uint8 LCD_GetParm_FT1505C(lcd_func_type type)
{
switch(type)
{
case lcd_Bais_func:
return 1;
case lcd_Contrast_func:
return 1;
case lcd_LineRate_func:
return 1;
case lcd_Temperature_Compensation_func:
return 1;
default:
ASSERT(0);
return 100;
}
}
void LCD_SetBias_FT1505C(kal_uint8 *bias)
{
}
void LCD_Contrast_FT1505C(kal_uint8 *contrast)
{
}
void LCD_LineRate_FT1505C(kal_uint8 *linerate)
{
}
void LCD_Temp_Compensate_FT1505C(kal_uint8 *compensate)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -