📄 lcd.c
字号:
Assert(0);
#endif
}
void LCD_InitDISPC(CSPACE eBpp, u32 uFbAddr, LCD_WINDOW eWin, bool bIsDoubleBuf)
{
LCD_InitBase();
LCD_InitWin(eBpp, oLcdc.m_uLcdHSz, oLcdc.m_uLcdVSz, 0, 0, oLcdc.m_uLcdHSz, oLcdc.m_uLcdVSz,
0, 0, uFbAddr, eWin, bIsDoubleBuf);
}
void LCD_InitDISPC1(u32 uHSize, u32 uVSize, CSPACE eBpp, u32 uFbAddr, LCD_WINDOW eWin, bool bIsDoubleBuf)
{
LCD_InitBase1(uHSize, uVSize);
LCD_InitWin(eBpp, oLcdc.m_uLcdHSz, oLcdc.m_uLcdVSz, 0, 0, oLcdc.m_uLcdHSz, oLcdc.m_uLcdVSz,
0, 0, uFbAddr, eWin, bIsDoubleBuf);
}
//------------------------------------------------------------
// Function Name : LCDC_GetFrmSz
//
// Function Desctiption :
// This function turns lcd on
//
// Input :
//
// Output :
//
// Version :
//------------------------------------------------------------
void LCD_GetFrmSz(u32* uFrmHSz, u32* uFrmVSz, LCD_WINDOW eWin)
{
*uFrmHSz = oLcdc.m_uFrmHSz[eWin];
*uFrmVSz = oLcdc.m_uFrmVSz[eWin];
}
//------------------------------------------------------------
// Function Name : LCD_Start
//
// Function Desctiption :
// This function turns lcd on
//
// Input :
//
// Output :
//
// Version :
//------------------------------------------------------------
void LCD_Start(void)
{
u32 uLcdCon;
uLcdCon=Inp32(LCD_BASE+rVIDCON0);
uLcdCon |= 0x3<<0;
LcdcOutp32(rVIDCON0, uLcdCon);
}
//-----------------------------------------------------------
// Function Name : LCD_Stop
//
// Function Desctiption :
// This function turns lcd off
//
// Input :
//
// Output :
//
// Version :
//-----------------------------------------------------------
void LCD_Stop(void)
{
u32 uLcdCon;
uLcdCon=Inp32(LCD_BASE+rVIDCON0);
uLcdCon &= ~(0x3<<0);
LcdcOutp32(rVIDCON0, uLcdCon);
}
void LCD_PerFrameOff(void)
{
u32 uLcdCon;
uLcdCon=Inp32(LCD_BASE+rVIDCON0);
uLcdCon &= ~(0x1<<0);
LcdcOutp32(rVIDCON0, uLcdCon);
}
///////////////////////////////////////////////////////////////////
// Middle Layer
///////////////////////////////////////////////////////////////////
//------------------------------------------------------------
// Function Name : LCD_InitBase
//
// Function Desctiption :
// This function sets essential values according to LCD Type
//
// Input : g_eSysLcd, global variable for lcd type
//
// Output : oLcdc, global struct for lcd
//
// Version :
//------------------------------------------------------------
void LCD_InitBase(void)
{
u32 uLcdCon;
u32 uILcdIntCon;
u32 uClkVal, uClkDir;
u32 uVidconReg;
u32 i;
LCD_WINDOW eWin;
CLK_SRC eVClkSrc;
oLcdc.m_bIsAutoBuf = false;
oLcdc.m_uScanMode = 0; // progressive mode
oLcdc.m_bIsLocalCalled[0] = false;
oLcdc.m_bIsLocalCalled[1] = false;
oLcdc.m_bIsLocalCalled[2] = false;
#if (LCD_CLOCK_SOURCE == LCLK_HCLK)
Disp("LCD Clock Source: HCLK\n");
oLcdc.m_uVideoClockSource = CLKSEL_F_HCLK;
eVClkSrc = SRC_HCLK;
#elif (LCD_CLOCK_SOURCE == LCLK_MOUT_EPLL)
Disp("LCD Clock Source: EPLL OUT\n");
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_MOUT_EPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_DOUT_MPLL)
Disp("LCD Clock Source: MPLL OUT\n");
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_DOUT_MPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_FIN_EPLL)
Disp("LCD Clock Source: FIN\n");
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_FIN_EPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_27M)
Disp("LCD Clock Source: 27M\n");
oLcdc.m_uVideoClockSource = CLKSEL_F_EXTCLK;
eVClkSrc = SRC_27M;
#endif
#if (LCD_MODULE_TYPE == LTV350QV_RGB)
oLcdc.m_uLcdHSz = 320;
oLcdc.m_uLcdVSz = 240;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_8BIT|GDITHPOS_8BIT|BDITHPOS_8BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IHSYNC_INVERT | IVSYNC_INVERT |IVDEN_INVERT); //Check
LcdcOutp32(rVIDTCON0, VBPDE(VBPD_LTV350QV) | VBPD(VBPD_LTV350QV) | VFPD(VFPD_LTV350QV) | VSPW(VSPW_LTV350QV));
LcdcOutp32(rVIDTCON1, VFPDE(VFPD_LTV350QV) | HBPD(HBPD_LTV350QV) | HFPD(HFPD_LTV350QV) | HSPW(HSPW_LTV350QV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
oLcdc.m_uLcdHSz = 240;
oLcdc.m_uLcdVSz = 320;
oLcdc.m_uVidOutFormat =
(LCD_CPUIF_CS == MAIN) ? VIDOUT_I80IF0: VIDOUT_I80IF1;
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
#elif (LCD_MODULE_TYPE == LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
oLcdc.m_uLcdHSz = 800;
oLcdc.m_uLcdVSz = 480;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_8BIT|GDITHPOS_8BIT|BDITHPOS_8BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IHSYNC_INVERT | IVSYNC_INVERT |IVDEN_NORMAL);
LcdcOutp32(rVIDTCON0, VBPDE(VBPD_LTP700WV) | VBPD(VBPD_LTP700WV) | VFPD(VFPD_LTP700WV) | VSPW(VSPW_LTP700WV));
LcdcOutp32(rVIDTCON1, VFPDE(VFPD_LTP700WV) | HBPD(HBPD_LTP700WV) | HFPD(HFPD_LTP700WV) | HSPW(HSPW_LTP700WV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#elif (LCD_MODULE_TYPE == LTS222QV_SRGB)
oLcdc.m_uLcdHSz = 240;
oLcdc.m_uLcdVSz = 320;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_5BIT|GDITHPOS_6BIT|BDITHPOS_5BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IVCLK_FALL_EDGE | IHSYNC_INVERT | IVSYNC_INVERT | IVDEN_NORMAL);
LcdcOutp32(rVIDTCON0, VBPDE(0) | VBPD(VBPD_LTS222QV) | VFPD(VFPD_LTS222QV) | VSPW(VSPW_LTS222QV));
LcdcOutp32(rVIDTCON1, VFPDE(0) | HBPD(HBPD_LTS222QV) | HFPD(HFPD_LTS222QV) | HSPW(HSPW_LTS222QV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#elif (LCD_MODULE_TYPE == LTV300GV_RGB)
oLcdc.m_uLcdHSz = 640;
oLcdc.m_uLcdVSz = 480;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_5BIT|GDITHPOS_6BIT|BDITHPOS_5BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IHSYNC_INVERT | IVSYNC_INVERT |IVDEN_NORMAL);
//LcdcOutp32(rVIDCON1, IHSYNC_NORMAL | IVSYNC_NORMAL |IVDEN_NORMAL);
LcdcOutp32(rVIDTCON0, VBPDE(VBPD_LTV300GV) | VBPD(VBPD_LTV300GV) | VFPD(VFPD_LTV300GV) | VSPW(VSPW_LTV300GV));
LcdcOutp32(rVIDTCON1, VFPDE(VFPD_LTV300GV) | HBPD(HBPD_LTV300GV) | HFPD(HFPD_LTV300GV) | HSPW(HSPW_LTV300GV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#else
Assert(0); // Not yet implemented.
#endif
LCD_Stop();
//Check up LCD to turn off
while (1)
{
uLcdCon=Inp32(LCD_BASE+rVIDCON0);
if( (uLcdCon&0x03) == 0 ) // checking whether disable the video output and the Display control signal or not.
break;
}
LCD_GetClkValAndClkDir(oLcdc.m_uLcdHSz, oLcdc.m_uLcdVSz, &uClkVal, &uClkDir, eVClkSrc);
uVidconReg =
PROGRESSIVE | oLcdc.m_uVidOutFormat | SUB_16_MODE | MAIN_16_MODE | PNRMODE_RGB_P | CLKVALUP_ALWAYS |
CLKVAL_F(uClkVal) | VCLKEN_DISABLE | CLKDIR_F(uClkDir) | oLcdc.m_uVideoClockSource|
ENVID_DISABLE | ENVID_F_DISABLE;
LcdcOutp32(rVIDCON0, uVidconReg);
uILcdIntCon =Inp32(LCD_BASE+rVIDINTCON0);
LcdcOutp32(rVIDINTCON0, uILcdIntCon | FRAMESEL0_BACK | FRAMESEL1_NONE | INTFRMEN_DISABLE |
FIFOSEL_WIN0 | FIFOLEVEL_25 | INTFIFOEN_DISABLE | INTEN_DISABLE);
LCD_SetAllWinOnOff(0); // Turn all windows off
LCD_SetAllWinColorMapOnOff(0); // Turn all windows color map off
LCD_SetAllWinColorKeyOnOff(0); // Turn all windows Color Key off
for (i=1; i<5; i++)
{
eWin =
(i == 1) ? WIN1 :
(i == 2) ? WIN2 :
(i == 3) ? WIN3 : WIN4;
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eWin);
}
}
void LCD_InitBase1(u32 uLcdX, u32 uLcdY)
{
u32 uLcdCon;
u32 uILcdIntCon;
u32 uClkVal, uClkDir;
u32 uVidconReg;
u32 i;
LCD_WINDOW eWin;
CLK_SRC eVClkSrc;
oLcdc.m_bIsAutoBuf = false;
oLcdc.m_uScanMode = 0; // progressive mode
oLcdc.m_bIsLocalCalled[0] = false;
oLcdc.m_bIsLocalCalled[1] = false;
oLcdc.m_bIsLocalCalled[2] = false;
#if (LCD_CLOCK_SOURCE == LCLK_HCLK)
oLcdc.m_uVideoClockSource = CLKSEL_F_HCLK;
eVClkSrc = SRC_HCLK;
#elif (LCD_CLOCK_SOURCE == LCLK_MOUT_EPLL)
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_MOUT_EPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_DOUT_MPLL)
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_DOUT_MPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_FIN_EPLL)
oLcdc.m_uVideoClockSource = CLKSEL_F_SYSCON;
eVClkSrc = SRC_FIN_EPLL;
#elif (LCD_CLOCK_SOURCE == LCLK_27M)
oLcdc.m_uVideoClockSource = CLKSEL_F_EXTCLK;
eVClkSrc = SRC_27M;
#endif
#if (LCD_MODULE_TYPE == LTV350QV_RGB)
oLcdc.m_uLcdHSz = uLcdX;
oLcdc.m_uLcdVSz = uLcdY;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_8BIT|GDITHPOS_8BIT|BDITHPOS_8BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IHSYNC_INVERT | IVSYNC_INVERT ); //Check
LcdcOutp32(rVIDTCON0, VBPDE(VBPD_LTV350QV) | VBPD(VBPD_LTV350QV) | VFPD(VFPD_LTV350QV) | VSPW(VSPW_LTV350QV));
LcdcOutp32(rVIDTCON1, VFPDE(VFPD_LTV350QV) | HBPD(HBPD_LTV350QV) | HFPD(HFPD_LTV350QV) | HSPW(HSPW_LTV350QV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
oLcdc.m_uLcdHSz = uLcdX;
oLcdc.m_uLcdVSz = uLcdY;
oLcdc.m_uVidOutFormat =
(LCD_CPUIF_CS == MAIN) ? VIDOUT_I80IF0: VIDOUT_I80IF1;
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
#elif (LCD_MODULE_TYPE == LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
oLcdc.m_uLcdHSz = 800;
oLcdc.m_uLcdVSz = 480;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_8BIT|GDITHPOS_8BIT|BDITHPOS_8BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IHSYNC_INVERT | IVSYNC_INVERT |IVDEN_NORMAL);
LcdcOutp32(rVIDTCON0, VBPDE(VBPD_LTP700WV) | VBPD(VBPD_LTP700WV) | VFPD(VFPD_LTP700WV) | VSPW(VSPW_LTP700WV));
LcdcOutp32(rVIDTCON1, VFPDE(VFPD_LTP700WV) | HBPD(HBPD_LTP700WV) | HFPD(HFPD_LTP700WV) | HSPW(HSPW_LTP700WV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
LcdcOutp32(rDITHMODE, oLcdc.m_uDitherMode); // Fixed Dithering Matrix
#elif (LCD_MODULE_TYPE == LTS222QV_SRGB)
oLcdc.m_uLcdHSz = 240;
oLcdc.m_uLcdVSz = 320;
oLcdc.m_uVidOutFormat = VIDOUT_RGBIF;
oLcdc.m_uDitherMode = RDITHPOS_5BIT|GDITHPOS_6BIT|BDITHPOS_5BIT;
oLcdc.m_uDitherMode &= ~DITHERING_ENABLE;
LcdcOutp32(rVIDCON1, IVCLK_FALL_EDGE | IHSYNC_INVERT | IVSYNC_INVERT | IVDEN_NORMAL);
LcdcOutp32(rVIDTCON0, VBPDE(0) | VBPD(VBPD_LTS222QV) | VFPD(VFPD_LTS222QV) | VSPW(VSPW_LTS222QV));
LcdcOutp32(rVIDTCON1, VFPDE(0) | HBPD(HBPD_LTS222QV) | HFPD(HFPD_LTS222QV) | HSPW(HSPW_LTS222QV));
LcdcOutp32(rVIDTCON2, LINEVAL(oLcdc.m_uLcdVSz-1) | HOZVAL(oLcdc.m_uLcdHSz-1));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -