📄 lcd.c.bak
字号:
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,endx);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x47);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-endy)&0xff00)>>8);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x48);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-endy)&0x00ff));
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x49);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-starty)&0xff00)>>8);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x4A);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-starty)&0x00ff));
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x42);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,(startx&0x00ff));
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x43);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-starty)&0xff00)>>8);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x44);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,((319-starty)&0x00ff));
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(cnt);
#if 0
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x50);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((startx&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(startx&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x51);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((endx&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(endx&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x52);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((starty&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(starty&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x53);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((endy&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(endy&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x20);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((startx&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(startx&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x21);
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)((starty&0xff00)>>8));
SET_LCD_CMD_PARAMETER(counter++,LCD_DATA,(unsigned char)(starty&0xff));
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x22);
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(counter);
#endif
*/
//lks start
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((kal_uint8)(0x0016&0xFF00)>>8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD,(kal_uint8)(0x0016&0xFF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(kal_uint8) endx);
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(kal_uint8) startx);
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((kal_uint8)(0x0017&0xFF00)>>8));
SET_LCD_CMD_PARAMETER(5,LCD_CMD,(kal_uint8)(0x0017&0xFF));
SET_LCD_CMD_PARAMETER(6,LCD_DATA,(kal_uint8) endy);
SET_LCD_CMD_PARAMETER(7,LCD_DATA,(kal_uint8) starty);
SET_LCD_CMD_PARAMETER(8,LCD_CMD,((kal_uint8)(0x0021&0xFF00)>>8));
SET_LCD_CMD_PARAMETER(9,LCD_CMD,(kal_uint8)(0x0021&0xFF));
SET_LCD_CMD_PARAMETER(10,LCD_DATA,(kal_uint8) starty);
SET_LCD_CMD_PARAMETER(11,LCD_DATA,(kal_uint8) startx);
SET_LCD_CMD_PARAMETER(12,LCD_CMD,((kal_uint8)(0x0022&0xFF00)>>8));
SET_LCD_CMD_PARAMETER(13,LCD_CMD,(kal_uint8)(0x0022&0xFF));
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(14);
/*
ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
*/
//lks end
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
#if 0
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00))|((0x0044&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((endx&0xFF)<<8)|((startx&0xFF)));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00))|((0x0045&0xFF)));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((endy&0xFF)<<8)|((starty&0xFF)));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00))|((0x0021&0xFF)));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((starty&0xFF)<<8)|((startx&0xFF)));
SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00))|((0x0022&0xFF)));
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(7);
#endif
/*
LCD_CtrlWrite_S6D0154(0x0036); // horizontal window send address
LCD_DataWrite_S6D0154(endx);
LCD_CtrlWrite_S6D0154(0x0037); //horizontal windows start address
LCD_DataWrite_S6D0154(startx);
LCD_CtrlWrite_S6D0154(0x0038); // vertical windows end address
LCD_DataWrite_S6D0154(endy);
LCD_CtrlWrite_S6D0154(0x0039); // vertical windows start address
LCD_DataWrite_S6D0154(starty);
LCD_CtrlWrite_S6D0154(0x0020); //RAM address set
LCD_DataWrite_S6D0154(startx); //horizontial address
LCD_CtrlWrite_S6D0154(0x0021); // RAM address set
LCD_DataWrite_S6D0154(starty); //vertical address
LCD_CtrlWrite_S6D0154(0x0022);
*/
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(0x02));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((startx)&0xFF00)>>8);
SET_LCD_CMD_PARAMETER(2,LCD_CMD,(0x03));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((startx)&0xFF));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,(0x04));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((endx)&0xFF00)>>8);
SET_LCD_CMD_PARAMETER(6,LCD_CMD,(0x05));
SET_LCD_CMD_PARAMETER(7,LCD_DATA,((endx)&0xFF));
SET_LCD_CMD_PARAMETER(8,LCD_CMD,(0x06));
SET_LCD_CMD_PARAMETER(9,LCD_DATA,((starty)&0xFF00)>>8);
SET_LCD_CMD_PARAMETER(10,LCD_CMD,(0x07));
SET_LCD_CMD_PARAMETER(11,LCD_DATA,((starty)&0xFF));
SET_LCD_CMD_PARAMETER(12,LCD_CMD,(0x08));
SET_LCD_CMD_PARAMETER(13,LCD_DATA,((endy)&0xFF00)>>8);
SET_LCD_CMD_PARAMETER(14,LCD_CMD,(0x09));
SET_LCD_CMD_PARAMETER(15,LCD_DATA,((endy)&0xFF));
SET_LCD_CMD_PARAMETER(16,LCD_CMD,(0x22));
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(17);
#elif (defined(LCD_18BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00)<<2)|((0x0044&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((endx&0xFF)<<10)|((startx&0xFF)<<1));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00)<<2)|((0x0045&0xFF)<<1));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((endy&0xFF)<<10)|((starty&0xFF)<<1));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00)<<2)|((0x0021&0xFF)<<1));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((starty&0xFF)<<10)|((startx&0xFF)<<1));
SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00)<<2)|((0x0022&0xFF)<<1));
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(7);
#endif
ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
#else /* LCD_CMD_DMA_MODE */
LCD_CtrlWrite_S6D0154(0x0044);
LCD_DataWrite_S6D0154((((endx&0xFF)<<8)|(startx&0xFF)));
LCD_CtrlWrite_S6D0154(0x0045);
LCD_DataWrite_S6D0154((((endy&0xFF)<<8)|(starty&0xFF)));
LCD_CtrlWrite_S6D0154(0x0021);
LCD_DataWrite_S6D0154((((starty&0xFF)<<8)|(startx&0xFF)));
LCD_CtrlWrite_S6D0154(0x0022);
DISABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
START_LCD_TRANSFER;
#endif /* LCD_CMD_DMA_MODE */
lcd_assert_fail = KAL_FALSE;
}
void LCD_Size_S6D0154(kal_uint16 *out_LCD_width, kal_uint16 *out_LCD_height)
{
*out_LCD_width = LCD_WIDTH;
*out_LCD_height = LCD_HEIGHT;
}
/*Engineering mode*/
kal_uint8 LCD_GetParm_S6D0154(lcd_func_type type)
{
switch(type) {
case lcd_Bais_func:
return 1;
case lcd_Contrast_func:
return 1;
case lcd_LineRate_func:
return 4;
case lcd_Temperature_Compensation_func:
return 4;
default:
ASSERT(0);
}
return 100;
}
void LCD_SetBias_S6D0154(kal_uint8 *bias)
{
}
void LCD_Contrast_S6D0154(kal_uint8 *contrast)
{
}
void LCD_LineRate_S6D0154(kal_uint8 *linerate)
{
}
void LCD_Temp_Compensate_S6D0154(kal_uint8 *compensate)
{
}
kal_bool LCD_ESD_check_S6D0154()
{
volatile kal_uint16 data_value = 0;
kal_uint16 data_addr = 0;
kal_uint8 i, reg_start_idx, reg_end_idx;
if (lcd_reg_index > 2) {
lcd_reg_index = 0;
}
while (LCD_IS_RUNNING);
if (lcd_reg_index == 0) {
reg_start_idx = 0;
reg_end_idx = 7;
}else if (lcd_reg_index == 1) {
reg_start_idx = 8;
reg_end_idx = 14;
}else{
reg_start_idx = 15;
reg_end_idx = N_lcd_reg - 1;
}
for (i = reg_start_idx; i <= reg_end_idx; i++) {
if (lcd_check == 1) {
data_addr = lcd_check_reg.reg[i].addr;
data_value = readreg_S6D0154(data_addr);
kal_prompt_trace(MOD_ENG, "--read %x as %x", data_addr, data_value);
if (data_value != lcd_check_reg.reg[i].para) {
kal_prompt_trace(MOD_ENG, "ESD FAIL read %x as %x", data_addr, data_value);
return KAL_FALSE;
}
}
}
lcd_reg_index++;
while (LCD_IS_RUNNING);
return KAL_TRUE;
}
/*===================The above is LCD dependent==========*/
#if ( (defined(MT6205B)) || (defined(MT6218)) )
void LCD_memcpy(void *dst /*s1*/, const void *src /*s2*/, kal_uint16 size)
{
#ifdef LCD_DMAENABLE
kal_uint32 srcaddr=(kal_uint32)src;
kal_uint32 dstaddr=(kal_uint32)dst;
kal_uint16 size_MSB = (kal_uint16)(size >> 9);
kal_uint16 size_LSB = (kal_uint16)(size & 0x01ff);
ASSERT(lcd_assert_fail==KAL_FALSE);
lcd_assert_fail = KAL_TRUE;
ASSERT(DRV_Reg(LCD_REFR)==0x00);
if(size_MSB)
{
DRV_WriteReg(LCD_MSBSRC,(kal_uint16)(srcaddr >> 16));
DRV_WriteReg(LCD_LSBSRC,(kal_uint16)srcaddr);
DRV_WriteReg(LCD_REFR,0x0000);
DRV_WriteReg(LCD_MSBDST,(kal_uint16)(dstaddr >> 16));
DRV_WriteReg(LCD_LSBDST,(kal_uint16)(dstaddr));
DRV_WriteReg(LCD_CADDRSET,512);
DRV_WriteReg(LCD_PADDRSET,size_MSB);
DRV_WriteReg(LCD_CHOP,0);
DRV_WriteReg(LCD_PCON,LCD_PCON_DINC);
DRV_WriteReg(LCD_START,LCD_START_BIT);
while(DRV_Reg(LCD_GSTA)&LCD_GSTA_PRUN);
DRV_WriteReg(LCD_START,LCD_STOP_BIT);
}
if (size_LSB)
{
srcaddr = (srcaddr + size - size_LSB);
dstaddr = (dstaddr + size - size_LSB);
DRV_WriteReg(LCD_MSBSRC,(kal_uint16)(srcaddr >> 16));
DRV_WriteReg(LCD_LSBSRC,(kal_uint16)srcaddr);
DRV_WriteReg(LCD_REFR,0x0000);
DRV_WriteReg(LCD_MSBDST,(kal_uint16)(dstaddr >> 16));
DRV_WriteReg(LCD_LSBDST,(kal_uint16)(dstaddr));
DRV_WriteReg(LCD_CADDRSET,size_LSB);
DRV_WriteReg(LCD_PADDRSET,1);
DRV_WriteReg(LCD_CHOP,0);
DRV_WriteReg(LCD_PCON,LCD_PCON_DINC);
DRV_WriteReg(LCD_START,LCD_START_BIT);
while(DRV_Reg(LCD_GSTA)&LCD_GSTA_PRUN);
DRV_WriteReg(LCD_START,LCD_STOP_BIT);
}
lcd_assert_fail = KAL_FALSE;
#else /*!LCD_DMAENABLE*/
kal_mem_cpy(dst,src,size);
#endif /*LCD_DMAENABLE*/
}
#else /*!(MT6205B,MT6218)*/
void LCD_memcpy(void *dst /*s1*/, const void *src /*s2*/, kal_uint16 size)
{
kal_mem_cpy(dst,src,size);
}
#endif /*(MT6205B,MT6218)*/
LCD_Funcs LCD_func_S6D0154 = {
LCD_Init_S6D0154,
LCD_PWRON_S6D0154,
LCD_SetContrast_S6D0154,
LCD_ON_S6D0154,
LCD_BlockWrite_S6D0154,
LCD_Size_S6D0154,
LCD_EnterSleep_S6D0154,
LCD_ExitSleep_S6D0154,
LCD_Partial_On_S6D0154,
LCD_Partial_Off_S6D0154,
LCD_Partial_line_S6D0154,
/*Engineering mode*/
LCD_GetParm_S6D0154,
LCD_SetBias_S6D0154,
LCD_Contrast_S6D0154,
LCD_LineRate_S6D0154,
LCD_Temp_Compensate_S6D0154
#ifdef __LCD_ESD_RECOVERY__
,LCD_ESD_check_S6D0154
#endif
};
void LCD_FunConfig(void)
{
MainLCD = &LCD_func_S6D0154;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -