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

📄 lcd_test.c

📁 三星 s3c6400测试代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		else if ( i >= uNofPixel/8*7 && i < uNofPixel/8*8) *(u32*)(uLcdFbAddr+i*4) = uColor[7];	
	}
			
	LCD_Start();

	Disp("Window %d (Background) Is Displayed\n", (int)eBgWin);
	
	Disp("Enter Any Key To Exit.\n");
	UART_Getc();
		
}

static void Palette(void)
{
	u32 uColor[16];
	u32 uHSz, uVSz, uNofPixel;
	
	int i;
	
	bIsRev = false;
	bIsAllWin = false;

	LCD_ChangePaletteClk(1);
	
	Disp("Window 0 Palette RAM Test. \n");
		if(LCD_CheckPaletteRAM(WIN0) == true)
			Disp("Window 0 Palette RAM W/R OK.\n");
		else
			Disp("Window 0 Palette RAM W/R Fail!\n");

	Disp("Window 1 Palette RAM Test. \n");
		if(LCD_CheckPaletteRAM(WIN1) == true)
			Disp("Window 1 Palette RAM W/R OK.\n");
		else
			Disp("Window 1 Palette RAM W/R Fail!\n");

	LCD_ChangePaletteClk(0);	
	
	LCD_InitDISPC(ePalBpp, uLcdFbAddr, eBgWin, false);	
	LCD_SetWinOnOff(1, eBgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
	
	LCD_SetPaletteCtrl(ePalDataBpp, eBgWin); 
	GLIB_Init(uLcdFbAddr, uHSz, uVSz, ePalBpp);
	GLIB_SetPalDataFormat(ePalDataBpp);

	LCD_Start();
	///////////////////////////////////////////////////////////
	// Palette Data BPP
	if (ePalDataBpp == RGB16)
	{
		uColor[0] = 0x0;	// Black
		uColor[1] = 0xffff; // White
		uColor[2] = 0x1f<<0; // Blue	
		uColor[3] = (0x1f<<11)|(0x3f<<6); // Yellow
		uColor[4] = (0x1f<<11)|(0x1f<<0); // Magenta
		uColor[5] = (0x3f<<6)|(0x1f<<0); // Cyan
		uColor[6] = 0x1f<<11; // Red
		uColor[7] = (0x23<<6)|(0x1f<<0); // Cyan2
		uColor[8] = (0x07<<11)|(0x15<<0); // Magenta1	
		uColor[9] =	(0x18<<11)|(0x17<<6); // Yellow1
		uColor[10] = 0x7777; // Gray	
		uColor[11] = 0x3f<<6; // Green	
		uColor[12] = (0x03<<11)|(0x1f<<0); // Magenta2		
		uColor[13] = (0x1f<<11)|(0x1a<<6); // Yellow2
		uColor[14] = (0x3f<<6)|(0x16<<0); // Cyan2
		uColor[15] = (0x10<<11)|(0x1d<<6)|(0x1f<<0); // Gray2							
	}

	///////////////////////////////////////////////////////////
	// Palette Depth
	if (ePalBpp == PAL8)
	{
		Disp("Palette 8bpp Test. \n");
		
		LCD_ChangePaletteClk(1);
		
		GLIB_GetPalDataFormat(C_RED, &uColor[0]);		
		LCD_SetPaletteData(C_RED, uColor[0], eBgWin);
		
		GLIB_GetPalDataFormat(C_GREEN, &uColor[0]);
		LCD_SetPaletteData(C_GREEN, uColor[0], eBgWin);

		GLIB_GetPalDataFormat(C_BLUE, &uColor[0]);
		LCD_SetPaletteData(C_BLUE, uColor[0], eBgWin);
		
		GLIB_GetPalDataFormat(C_CYAN, &uColor[0]);
		LCD_SetPaletteData(C_CYAN, uColor[0], eBgWin);
		
		GLIB_GetPalDataFormat(C_MAGENTA, &uColor[0]);
		LCD_SetPaletteData(C_MAGENTA, uColor[0], eBgWin);
		
		GLIB_GetPalDataFormat(C_YELLOW, &uColor[0]);
		LCD_SetPaletteData(C_YELLOW, uColor[0], eBgWin);

		GLIB_GetPalDataFormat(C_BLACK, &uColor[0]);
		LCD_SetPaletteData(C_BLACK, uColor[0], eBgWin);
		
		GLIB_GetPalDataFormat(C_WHITE, &uColor[0]);
		LCD_SetPaletteData(C_WHITE, uColor[0], eBgWin);

		LCD_ChangePaletteClk(0);
		
		GLIB_DrawPattern(uHSz, uVSz);

		LCD_Trigger();		
			
	}
	else if (ePalBpp == PAL4)
	{
		Disp("Palette 4bpp Test. \n");
		
		LCD_ChangePaletteClk(1);		

		for (i=0; i<16; i++)
			LCD_SetPaletteData(i, uColor[i], eBgWin);
		
		LCD_ChangePaletteClk(0);


		uNofPixel = uHSz*uVSz/8;
		
		for (i=0; i<uNofPixel; i++)
		{
			
			if ( i < uNofPixel/16) *(u32*)(uLcdFbAddr+i*4) = 0x0;
			else if ( i >= uNofPixel/16 && i < uNofPixel/16*2) *(u32*)(uLcdFbAddr+i*4) = 0x11111111;
			else if ( i >= uNofPixel/16*2 && i < uNofPixel/16*3) *(u32*)(uLcdFbAddr+i*4) = 0x22222222;
			else if ( i >= uNofPixel/16*3 && i < uNofPixel/16*4) *(u32*)(uLcdFbAddr+i*4) = 0x33333333;
			else if ( i >= uNofPixel/16*4 && i < uNofPixel/16*5) *(u32*)(uLcdFbAddr+i*4) = 0x44444444;
			else if ( i >= uNofPixel/16*5 && i < uNofPixel/16*6) *(u32*)(uLcdFbAddr+i*4) = 0x55555555;
			else if ( i >= uNofPixel/16*6 && i < uNofPixel/16*7) *(u32*)(uLcdFbAddr+i*4) = 0x66666666;
			else if ( i >= uNofPixel/16*7 && i < uNofPixel/16*8) *(u32*)(uLcdFbAddr+i*4) = 0x77777777;
			else if ( i >= uNofPixel/16*8 && i < uNofPixel/16*9) *(u32*)(uLcdFbAddr+i*4) = 0x88888888;
			else if ( i >= uNofPixel/16*9 && i < uNofPixel/16*10) *(u32*)(uLcdFbAddr+i*4) = 0x99999999;
			else if ( i >= uNofPixel/16*10 && i < uNofPixel/16*11) *(u32*)(uLcdFbAddr+i*4) = 0xaaaaaaaa;
			else if ( i >= uNofPixel/16*11 && i < uNofPixel/16*12) *(u32*)(uLcdFbAddr+i*4) = 0xbbbbbbbb;
			else if ( i >= uNofPixel/16*12 && i < uNofPixel/16*13) *(u32*)(uLcdFbAddr+i*4) = 0xcccccccc;
			else if ( i >= uNofPixel/16*13 && i < uNofPixel/16*14) *(u32*)(uLcdFbAddr+i*4) = 0xdddddddd;
			else if ( i >= uNofPixel/16*14 && i < uNofPixel/16*15) *(u32*)(uLcdFbAddr+i*4) = 0xeeeeeeee;
			else if ( i >= uNofPixel/16*15 && i < uNofPixel/16*16) *(u32*)(uLcdFbAddr+i*4) = 0xffffffff;
			
		}
			
		LCD_Trigger();

		Disp("Enter Any Key To Exit Current Display.\n");
		UART_Getc();

	}
	else if (ePalBpp == PAL2)
	{
		Disp("Palette 2bpp Test. \n");
		
		LCD_ChangePaletteClk(1);
		for (i=0; i<4; i++)
			LCD_SetPaletteData(i, uColor[i], eBgWin);
		
		LCD_ChangePaletteClk(0);

		uNofPixel = uHSz*uVSz/16;
		
		for (i=0; i<uNofPixel ; i++)
		{
			if ( i < uNofPixel/4) *(u32*)(uLcdFbAddr+i*4) = 0x0;
			else if ( i >= uNofPixel/4 && i < uNofPixel/4*2) *(u32*)(uLcdFbAddr+i*4) = 0x55555555;
			else if ( i >= uNofPixel/4*2 && i < uNofPixel/4*3) *(u32*)(uLcdFbAddr+i*4) = 0xaaaaaaaa;
			else if ( i >= uNofPixel/4*3 && i < uNofPixel/4*4) *(u32*)(uLcdFbAddr+i*4) = 0xffffffff;
		}
		LCD_Trigger();
	}
	else // ePalBpp == 1Bpp
	{
		Disp("Palette 1bpp Test. \n");
		
		LCD_ChangePaletteClk(1);
		for (i=0; i<2; i++)
			LCD_SetPaletteData(i, uColor[i], eBgWin);
		
		LCD_ChangePaletteClk(0);

		uNofPixel = uHSz*uVSz/32;
		
		for (i=0; i<uNofPixel ; i++)
		{
			if ( i < uNofPixel/2) *(u32*)(uLcdFbAddr+i*4) = 0x0;
			else if ( i >= uNofPixel/2 && i < uNofPixel/2*2) *(u32*)(uLcdFbAddr+i*4) = 0xffffffff;
		}
		LCD_Trigger();	
	}

	Disp("Enter Any Key To Exit.\n");
	UART_Getc();
}

static void Swap(void)
{
	u32 uColor[16];
	u32 uHSz, uVSz, uNofPixel;
	u32 uFgAddr;
	LCD_WINDOW eWinTemp0, eWinTemp1;
	CSPACE eCspaceTemp;
	
	int i;

	#if (LCD_MODULE_TYPE== LTV350QV_RGB)	
		uHSz=320;
		uVSz=240;
	
	#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
		uHSz=240;
		uVSz=320;

	#elif (LCD_MODULE_TYPE == LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
		uHSz=800;
		uVSz=480;
		
	#elif (LCD_MODULE_TYPE == LTV300GV_RGB)
		uHSz=640;
		uVSz=480;
	#else
		Assert(0);
	#endif

	bIsRev = false;
	bIsAllWin = false;

	eWinTemp0 = eBgWin;
	eWinTemp1 = eFgWin;
	eCspaceTemp = ePalBpp;
	
	eBgWin = WIN2;
	eFgWin = WIN3;
	ePalBpp = PAL4;

	LCD_InitBase();
	LCD_InitWin(ePalBpp, uHSz, uVSz, 0, 0, uHSz, uVSz*3/4, 0, 0, uLcdFbAddr, eBgWin, false);
	
	LCD_SetWinOnOff(1, eBgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
	
	LCD_SetPaletteCtrl(ePalDataBpp, eBgWin); 

	GLIB_Init(uLcdFbAddr, uHSz, uVSz, ePalBpp);
	GLIB_SetPalDataFormat(ePalDataBpp);

	LCD_Start();
	///////////////////////////////////////////////////////////
	// Palette Data BPP
	if (ePalDataBpp == RGB16)
	{
		uColor[0] = 0x0;	// Black
		uColor[1] = 0xffff; // White
		uColor[2] = 0x1f<<0; // Blue	
		uColor[3] = (0x1f<<11)|(0x3f<<6); // Yellow
		uColor[4] = (0x1f<<11)|(0x1f<<0); // Magenta
		uColor[5] = (0x3f<<6)|(0x1f<<0); // Cyan
		uColor[6] = 0x1f<<11; // Red
		uColor[7] = (0x23<<6)|(0x1f<<0); // Cyan2
		uColor[8] = (0x07<<11)|(0x15<<0); // Magenta1	
		uColor[9] =	(0x18<<11)|(0x17<<6); // Yellow1
		uColor[10] = 0x7777; // Gray	
		uColor[11] = 0x3f<<6; // Green	
		uColor[12] = (0x03<<11)|(0x1f<<0); // Magenta2		
		uColor[13] = (0x1f<<11)|(0x1a<<6); // Yellow2
		uColor[14] = (0x3f<<6)|(0x16<<0); // Cyan2
		uColor[15] = (0x10<<11)|(0x1d<<6)|(0x1f<<0); // Gray2							
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	Disp("Byte Swap Test. \n");
	
	LCD_ChangePaletteClk(1);	

	for (i=0; i<16; i++)
		LCD_SetPaletteData(i, uColor[i], eBgWin);
	
	LCD_ChangePaletteClk(0);


	LCD_SetByteSwap(SWAP_BIT_DISABLE, SWAP_BYTE_ENABLE, SWAP_HALFWORD_DISABLE, eBgWin);

	uNofPixel = uHSz*uVSz/8;
	
	for (i=0; i<uNofPixel; i++)
	{

		if(i<uNofPixel/16*4) *(u32*)(uLcdFbAddr+i*4) = 0x22;
		else if ( i >= uNofPixel/16*4 && i < uNofPixel/16*8) *(u32*)(uLcdFbAddr+i*4) = 0x33;
		else if ( i >= uNofPixel/16*8 && i < uNofPixel/16*12) *(u32*)(uLcdFbAddr+i*4) = 0x44;
		else if ( i >= uNofPixel/16*12 && i < uNofPixel/16*16) *(u32*)(uLcdFbAddr+i*4) = 0x0;
	}

	LCD_GetFbEndAddr(&uFgAddr, eBgWin);

	LCD_InitWin(ePalBpp, uHSz, uVSz, 0, 0, uHSz, uVSz/4, 0, uVSz*3/4, uFgAddr, eFgWin, false);
	LCD_SetWinOnOff(1, eFgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);

	LCD_SetPaletteCtrl(ePalDataBpp, eFgWin); 

	GLIB_Init(uFgAddr, uHSz, uVSz, ePalBpp);
	GLIB_SetPalDataFormat(ePalDataBpp);

	LCD_ChangePaletteClk(1);	

	uNofPixel = uHSz*uVSz/8;
	for (i=0; i<16; i++)
		LCD_SetPaletteData(i, uColor[i], eFgWin);
	
	LCD_ChangePaletteClk(0);
	LCD_SetByteSwap(SWAP_BIT_DISABLE, SWAP_BYTE_DISABLE, SWAP_HALFWORD_DISABLE, eFgWin);

		for (i=0 ; i<uNofPixel/16*4; i++)
	{
		*(u32*)(uFgAddr+i*4) = 0x11000000;
	}

	Disp("Enter Any Key To Exit Current Display. (BYTE SWAP)\n");
	UART_Getc();
	////////////////////////////////////////////////////////////////////////////////////////////////////

	////////////////////////////////////////////////////////////////////////////////////////////////////
	Disp("HW Swap Test. \n");
	LCD_ChangePaletteClk(1);		

	for (i=0; i<16; i++)
		LCD_SetPaletteData(i, uColor[i], eBgWin);
	
	LCD_ChangePaletteClk(0);


	LCD_SetByteSwap(SWAP_BIT_DISABLE, SWAP_BYTE_DISABLE, SWAP_HALFWORD_ENABLE, eBgWin);

	uNofPixel = uHSz*uVSz/8;
	
	for (i=0; i<uNofPixel; i++)
	{

		if(i<uNofPixel/16*4) *(u32*)(uLcdFbAddr+i*4) = 0x22;
		else if ( i >= uNofPixel/16*4 && i < uNofPixel/16*8) *(u32*)(uLcdFbAddr+i*4) = 0x33;
		else if ( i >= uNofPixel/16*8 && i < uNofPixel/16*12) *(u32*)(uLcdFbAddr+i*4) = 0x44;
		else if ( i >= uNofPixel/16*12 && i < uNofPixel/16*16) *(u32*)(uLcdFbAddr+i*4) = 0x0;
	}

	Disp("Enter Any Key To Exit Current Display. (HW SWAP)\n");
	UART_Getc();
	////////////////////////////////////////////////////////////////////////////////////////////////////

	////////////////////////////////////////////////////////////////////////////////////////////////////
	Disp("Bit Swap Test. \n");
	LCD_ChangePaletteClk(1);		

	for (i=0; i<16; i++)
		LCD_SetPaletteData(i, uColor[i], eBgWin);
	
	LCD_ChangePaletteClk(0);

	LCD_SetByteSwap(SWAP_BIT_ENABLE, SWAP_BYTE_DISABLE, SWAP_HALFWORD_DISABLE, eBgWin);

	uNofPixel = uHSz*uVSz/8;
	
	for (i=0; i<uNofPixel; i++)
	{

		if(i<uNofPixel/16*4) *(u32*)(uLcdFbAddr+i*4) = 0x80000000;
		else if ( i >= uNofPixel/16*4 && i < uNofPixel/16*8) *(u32*)(uLcdFbAddr+i*4) = 0x80000000;
		else if ( i >= uNofPixel/16*8 && i < uNofPixel/16*12) *(u32*)(uLcdFbAddr+i*4) = 0x80000000;
		else if ( i >= uNofPixel/16*12 && i < uNofPixel/16*16) *(u32*)(uLcdFbAddr+i*4) = 0x0;
	}

	Disp("Enter Any Key To Exit Current Display. (BIT SWAP)\n");
	UART_Getc();
	////////////////////////////////////////////////////////////////////////////////////////////////////
	
	eBgWin = eWinTemp0;
	eFgWin = eWinTemp1;
	ePalBpp = eCspaceTemp;
}


static void VDMABurstLength(void)
{
	u32 j;
	u32 uHSz, uVSz;
	BURST_LENGTH eBurstLen;
	FIFO_INT_LEVEL eFifoIntLevel;
	FIFO_INT_SEL eFifoIntSel;

	bIsRev = false;
	bIsAllWin = false;

	eFifoIntLevel = FIFO_EMPTY; 
	INTC_SetVectAddr(NUM_LCD0, Isr_LCD_FifoEmptyInt);
	
	for(j=0;j<3;j++)
	{
		if(j==0)
		{
			eBurstLen = BURST_16WORD;
			Disp("\nVDMA Burst 16 Word.");
		}
		else if(j==1) 
		{
			eBurstLen = BURST_8WORD;
			Disp("\nVDMA Burst 8 Word.");
		}
		else if(j==2) 
		{
			eBurstLen = BURST_4WORD;
			Disp("\nVDMA Burst 4 Word.");
		}

		LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
		LCD_SetBurstLength(eBurstLen, eBgWin);
		LCD_SetWinOnOff(1, eBgWin);
		LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
		GLIB_InitInstance(uLcdFbAddr, uHSz, uVSz, eBgBpp);
		GLIB_DrawPattern(uHSz, uVSz);	
		
		 eFifoIntSel=
		(eBgWin == WIN0) ? FIFO_INT_WIN0 :
		(eBgWin == WIN1) ? FIFO_INT_WIN1 :
		(eBgWin == WIN2) ? FIFO_INT_WIN2 :
		(eBgWin == WIN3) ? FIFO_INT_WIN3 : FIFO_INT_WIN4;

		//Disp("Background: WINDOW %d\n", (int)eBgWin);

		LCD_InitInt(LCD_FIFO_INT, eLcdCpuifInt, eFifoIntLevel, eFifoIntSel, FINT_BACKPORCH);
		LCD_EnableInt();
		INTC_Enable(NUM_LCD0);
					
		LCD_Start();
		
		while(!(UART_Getc()));
		
		LCD_DisableInt();
		INTC_Disable(NUM_LCD0);
		Disp("\n");
	}	
}


static void WvgaDis(void)
{
	u32 uHSz, uVSz;
	u32 i, j, k;
	
	bIsRev = false;
	bIsAllWin = false;
	
	Disp("Enter Any Key To Test Simple Display\n");
	UART_Getc();

	LCD_InitDISPC(RGB24, uLcdFbAddr, eBgWin, false);
	LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
	GLIB_InitInstance(uLcdFbAddr, uHSz, uVSz, RGB24);
	LCD_SetWinOnOff(1, eBgWin);
	
	k=0;
	for(i=0; i<uVSz; i++)
	for(j=0; j<uHSz; j++)
		GLIB_PutPixel2(j, i, pSmileAgain[k++]);

	/*
	LCD_GetFbEndAddr(&uFbEndAddr, WIN0);
	
	LCD_InitWin(RGB24, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFbEndAddr, WIN1, false);
	LCD_SetWinOnOff(1, WIN1);

	LCD_GetFrmSz(&uHSz, &uVSz, WIN1);
	GLIB_InitInstance(uFbEndAddr, uHSz, uVSz, WIN1);
	GLIB_DrawPattern2(uHSz, uVSz);

	LCD_SetBlendingType(PER_PLANE, ALPHA0_PLANE, WIN1);
	LCD_SetAlpha(0x7, 0x7, 0x7, 0x0, 0x0, 0x0, WIN1);
	*/

	LCD_Start();

	Disp("Window %d (Background) Is Displayed\n", (int)eBgWin);

	Disp("Enter Any Key To Exit.\n");
	UART_Getc();

}

static void ParallelBGR(void)
{
	u32 uHSz, uVSz, uNofPixel;
	u32 uColor[16];
	u32 i;
	
	bIsRev = false;
	bIsAllWin = false;

	#if (LCD_MODULE_TYPE== LT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -