⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.ori

📁 支持三星原产的S3C2413开发板
💻 ORI
📖 第 1 页 / 共 5 页
字号:
	{

		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 + -