📄 main.c.ori
字号:
{
if ((data >> j) & 0x0001) // DATA HIGH or LOW
LCD_DSERI_Hi;
else
LCD_DSERI_Lo;
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
if(j != 0)
{
LCD_DCLK_Lo;
delayLoop(DELAY); // CLOCK = Low
}
}
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
}
void InitLDI_LTS222(void)
{
volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FALSE);
SetGPIOforLDI();
LCD_DEN_Hi;
LCD_DCLK_Hi;
LCD_DSERI_Hi;
// jylee_20051005
//LCD_RESET_Hi; // no meanings...
//LCD CLK is about 4.05Mhz
//rDIRGBIFR1=(18<<0); //LCLK=HCLK/(CDR+2)=81/(18+2)=4.05Mhz
//rDIRGBIFR0|=(1<<12); //LCD panel on
// LCD Reset high
// jylee_20051005
//LCD_RESET_Hi; // no meanings...
// delayLoop(50000);
///////////////////////////////////////////////////////////////////
// Power Setting Function 1
//////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x22,0x01); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
WriteLDI_LTS222(0x03,0x01); // RESET REGISTER
///////////////////////////////////////////////////////////////////
// Initializing Function 1
///////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x00,0x0a); // CONTROL REGISTER 1
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x01,0x10); // CONTROL REGISTER 2
delayLoop(5); // delay about 300ns
// WriteLDI_LTS222(0x02,0x00); // RGB INTERFACE REGISTER
WriteLDI_LTS222(0x02,0x06); // RGB INTERFACE REGISTER
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x05,0x00); // DATA ACCESS CONTROL REGISTER
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x0D,0x00); //
// delay about 40ms
// delayLoop(700000);
delayLoop(7000); // DonGo
///////////////////////////////////////////////////////////////////
// Initializing Function 2
///////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x0E,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x0F,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x10,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x11,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x12,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x13,0x00); // DISPLAY SIZE CONTROL REGISTER
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x14,0x00); // PARTIAL-OFF AREA COLOR REGISTER 1
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x15,0x00); // PARTIAL-OFF AREA COLOR REGISTER 2
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x16,0x00); // PARTIAL 1 DISPLAY AREA STARTING REGISTER 1
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x17,0x00); // PARTIAL 1 DISPLAY AREA STARTING REGISTER 2
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x34,0x01); // POWER SUPPLY SYSTEM CONTROL REGISTER 14
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x35,0x00); // POWER SUPPLY SYSTEM CONTROL REGISTER 7
// delay about 30ms
//delayLoop(500000);
delayLoop(5000); // DonGo
////////////////////////////////////////////////////////////////////
// Initializing Function 3
////////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x8D,0x01); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x8B,0x28); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x4B,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x4C,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x4D,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x4E,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x4F,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x50,0x00); // ID CODE REGISTER 2 Check it out
// delay about 50 us
delayLoop(900);
WriteLDI_LTS222(0x86,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x87,0x26); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x88,0x02); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x89,0x05); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x33,0x01); // POWER SUPPLY SYSTEM CONTROL REGISTER 13
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x37,0x06); // POWER SUPPLY SYSTEM CONTROL REGISTER 12 Check it out
// delay about 50 us
delayLoop(900);
WriteLDI_LTS222(0x76,0x00); // SCROLL AREA START REGISTER 2
// delay about 30ms
//delayLoop(500000);
delayLoop(5000); // DonGo
/////////////////////////////////////////////////////////////////////
// Initializing Function 4
/////////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x42,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x43,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x44,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x45,0x00); // CALIBRATION REGISTER
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x46,0xef); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x47,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x48,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x49,0x01); // ID CODE REGISTER 1 check it out
// delay about 50 us
delayLoop(900);
WriteLDI_LTS222(0x4A,0x3f); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x3C,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x3D,0x00); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x3E,0x01); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x3F,0x3f); //
delayLoop(5); // delay about 300ns
// WriteLDI_LTS222(0x40,0x03); // horizontal back porch
WriteLDI_LTS222(0x40,0x01); // horizontal back porch //050105 Boaz.Kim
delayLoop(5); // delay about 300ns
// WriteLDI_LTS222(0x41,0x04); // vertical back porch
WriteLDI_LTS222(0x41,0x0a); // horizontal back porch //050105 Boaz.Kim
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x8F,0x05); //
// delay about 30ms
// delayLoop(500000);
delayLoop(5000); // DonGo
/////////////////////////////////////////////////////////////////////
// Initializing Function 5
/////////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x90,0x05); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x91,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x92,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x93,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x94,0x33); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x95,0x05); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x96,0x05); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x97,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x98,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x99,0x44); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x9A,0x33); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x9B,0x33); //
delayLoop(5); // delay about 300ns
WriteLDI_LTS222(0x9C,0x33); //
delayLoop(5); // delay about 300ns
#if 1
WriteLDI_LTS222(0x9D,0x80); // 16 or 18bit RGB
#else
WriteLDI_LTS222(0x9D,0x81); // 6bit RGB
#endif
// delay about 30ms
//delayLoop(500000);
delayLoop(5000); // DonGo
/////////////////////////////////////////////////////////////////////
// Power Setting 2
/////////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x1D,0x08); //
// delay about 30ms
//delayLoop(500000);
delayLoop(5000); // DonGo
WriteLDI_LTS222(0x23,0x00); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
// delay about 50 us
delayLoop(900);
WriteLDI_LTS222(0x24,0x94); // POWER SUPPLY SYSTEM CONTROL REGISTER 1
// delay about 50 us
delayLoop(900);
WriteLDI_LTS222(0x25,0x6f); // POWER SUPPLY SYSTEM CONTROL REGISTER 2
// delay about 40ms
//delayLoop(700000);
delayLoop(7000); // DonGo
/////////////////////////////////////////////////////////////////////
// Power Setting 3
/////////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x28,0x1e); //
WriteLDI_LTS222(0x1A,0x00); //
WriteLDI_LTS222(0x21,0x10); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
WriteLDI_LTS222(0x18,0x25); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 40ms
//delayLoop(700000);
delayLoop(7000); // DonGo
WriteLDI_LTS222(0x19,0x48); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 2
WriteLDI_LTS222(0x18,0xe5); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 10ms
//delayLoop(200000);
delayLoop(2000); // DonGo
WriteLDI_LTS222(0x18,0xF7); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 40ms
//delayLoop(700000);
delayLoop(7000); // DonGo
WriteLDI_LTS222(0x1B,0x07); // org
// WriteLDI_LTS222(0x1B,0x01); // 90 rotate
// WriteLDI_LTS222(0x1B,0x02); // 90 rotate
// WriteLDI_LTS222(0x1B,0x03); // 90 rotate
// delay about 80ms
//delayLoop(1400000);
delayLoop(14000); // DonGo
WriteLDI_LTS222(0x1F,0x6b); // org
// WriteLDI_LTS222(0x1F,0x5E); // 90 rotate
WriteLDI_LTS222(0x20,0x51); // org, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
// WriteLDI_LTS222(0x20,0x5F); // 90 rotate, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
WriteLDI_LTS222(0x1E,0xc1); //
// delay about 10ms
//delayLoop(200000);
delayLoop(20000); // DonGo
WriteLDI_LTS222(0x21,0x00); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
WriteLDI_LTS222(0x3B,0x01); //
// delay about 20ms
//delayLoop(400000);
delayLoop(4000); // DonGo
WriteLDI_LTS222(0x00,0x20); // CONTROL REGISTER 1
WriteLDI_LTS222(0x02,0x01); // RGB INTERFACE REGISTER
// delay about 10ms
//delayLoop(200000);
delayLoop(2000); // DonGo
// Reg16_OPCLK_DIV = 0x0201; // 6.4
}
#endif // #if WIDE_LCD==1
/*
@func void | InitDisplay | Initializes the LCD controller and displays a splashscreen image.
@rdesc N/A.
@comm
@xref
*/
static void InitDisplay(void)
{
volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FALSE);
volatile S3C2413_LCD_REG *s2413LCD = (S3C2413_LCD_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_LCD, FALSE);
unsigned int clkval_calc; // 040507
#if WIDE_LCD==1
RETAILMSG(1, (TEXT("WIDE_LCD is defined...\r\n")));
// LCD Reset
s2413IOP->GPEDAT |= (1<<11); // Reset High
s2413IOP->GPECON &= ~(3<<22);
s2413IOP->GPECON |= (1<<22);
delayLoop(500);
s2413IOP->GPEDAT &= ~(1<<11); // Reset Low
delayLoop(1000);
s2413IOP->GPEDAT |= (1<<11); // Reset High
InitLDI_LTV350(); // Initializing LDI
#else
// Set up the LCD controller registers to display a power-on bitmap image.
//
// From firmware code.
InitLDI_LTS222();
#endif
// LCD Port Init.
s2413IOP->GPCDN=0xffff; // Disable Pull-up register
s2413IOP->GPCCON=0xaaaaaaa8; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
s2413IOP->GPDDN=0xffff; // Disable Pull-up register
s2413IOP->GPDCON=0xaaaaaaaa; //Initialize VD[23:8]
s2413IOP->GPBDN |= (0x1<<5);
s2413IOP->GPBCON = (s2413IOP->GPBCON & ~(0x3<<10))|(0x1<<10);
// LCD Power Enable
//Now, BACKLIGHT_PWM is always on. It should be changed to controlling PWM Timer @ September 24, 2005
s2413IOP->GPBDN |= 0x1;
s2413IOP->GPBDAT |= 0x1;
// s2413IOP->GPBCON = (s2413IOP->GPBCON & ~(0x3<<10))|(0x1);
s2413IOP->GPBCON = (s2413IOP->GPBCON & ~(0x3<<2))|(0x1<<2);
clkval_calc = (WORD)((float)(S3C2413_HCLK)/(2.0*5000000)+0.5)-1; // 9 or 12
s2413LCD->LCDCON1 = (clkval_calc << 8) | /* VCLK = HCLK / ((CLKVAL + 1) * 2) -> About 7 Mhz */
(LCD_MVAL_USED << 7) | /* 0 : Each Frame */
(3 << 5) | /* TFT LCD Pannel */
(12 << 1) | /* 16bpp Mode */
(0 << 0) ; /* Disable LCD Output */
s2413LCD->LCDCON2 = (LCD_VBPD << 24) | /* VBPD : 1 */
(LCD_LINEVAL_TFT << 14) | /* Vertical Size : 320 - 1 */
(LCD_VFPD << 6) | /* VFPD : 2 */
(LCD_VSPW << 0) ; /* VSPW : 1 */
s2413LCD->LCDCON3 = (LCD_HBPD << 19) | /* HBPD : 6 */
(LCD_HOZVAL_TFT << 8) | /* HOZVAL_TFT : 240 - 1 */
(LCD_HFPD << 0) ; /* HFPD : 2 */
s2413LCD->LCDCON4 = (LCD_MVAL << 8) | /* MVAL : 13 */
(LCD_HSPW << 0) ; /* HSPW : 4 */
s2413LCD->LCDCON5 = (0 << 12) | /* BPP24BL : LSB valid */
(1 << 11) | /* FRM565 MODE : 5:6:5 Format */
(0 << 10) | /* INVVCLK : VCLK Falling Edge */
(1 << 9) | /* INVVLINE : Inverted Polarity */
(1 << 8) | /* INVVFRAME : Inverted Polarity */
(0 << 7) | /* INVVD : Normal */
(0 << 6) | /* INVVDEN : Normal */
(0 << 5) | /* INVPWREN : Normal */
(0 << 4) | /* INVENDLINE : Normal */
(1 << 3) | /* PWREN : Disable PWREN */
(0 << 2) | /* ENLEND : Disable LEND signal */
(0 << 1) | /* BSWP : Swap Disable */
(1 << 0) ; /* HWSWP : Swap Enable */
s2413LCD->LCDSADDR1 = ((IMAGE_FRAMEBUFFER_DMA_BASE >> 22) << 21) |
((M5D(IMAGE_FRAMEBUFFER_DMA_BASE >> 1)) << 0);
s2413LCD->LCDSADDR2 = M5D((IMAGE_FRAMEBUFFER_DMA_BASE + (LCD_XSIZE_TFT * LCD_YSIZE_TFT * 2)) >> 1);
s2413LCD->LCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT / 1);
s2413LCD->LCDINTMSK|=(3); // MASK LCD Sub Interrupt
s2413LCD->TCONSEL&=(~7); // Disable LPC3600
s2413LCD->TPAL=0; // Disable Temp Palette
// Display a bitmap image on the LCD...
//
//memcpy((void *)IMAGE_FRAMEBUFFER_UA_BASE, ScreenBitmap, LCD_ARRAY_SIZE_TFT_16BIT);
s2413LCD->LCDCON1|=1; // ENVID=ON
//while (1) ;//
}
//================================================================
/*
@func void | SetIP | Accepts IP address from user input.
@rdesc N/A.
@comm
@xref
*/
static void SetIP(PBOOT_CFG pBootCfg)
{
CHAR szDottedD[16]; // The string used to collect the dotted decimal IP address.
USHORT cwNumChars = 0;
USHORT InChar = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -