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

📄 tft_driver.c

📁 Taiwan sunplus develop spce3200, it is a test program ----- testboard source code
💻 C
字号:
//====================================================================================
//File Name:	TFT_Driver.c
//Description:	TFT driver
//Update:		2007.01.17 V0.1 by wangtao <wangtao@sunnorth.com.cn>
//====================================================================================
#include "TFT_Driver.h"

STR_TFT TFT_Settings;
STR_TFT *pTFT_Settings = &TFT_Settings;	
unsigned short *pTFT_WorkBuf;
unsigned short *pTFT_DispBuf;

//=============================================================
// Prototype:		void TFT_SetSettings(void);
// Description:		Set TFT buffer format and address.
// Arguments:		None 
// Return Value:	None
//=============================================================
void TFT_SetSettings(void)
{
	*P_TFT_FRAME_FMT1 = pTFT_Settings->Buf_Format1;
	*P_TFT_FRAME_FMT2 = pTFT_Settings->Buf_Format2;
	*P_LCD_BUFFER_SA1 = (unsigned int)pTFT_Settings->Buf0;
	*P_LCD_BUFFER_SA2 = (unsigned int)pTFT_Settings->Buf1;
	*P_LCD_BUFFER_SA3 = (unsigned int)pTFT_Settings->Buf2;
}

//=============================================================
// Prototype:		unsigned short *TFT_SelDispBuf(unsigned char Buf_Cursor);
// Description:		Select a buffer as the display buffer.
// Arguments:		Buf_Cursor - The number (0~2) of the buffer to be used as display buffer  
// Return Value:	Start address of buffer (display buffer)
//=============================================================
unsigned short *TFT_SelDispBuf(unsigned char Buf_Cursor)
{
	*P_LCD_BUFFER_SEL = Buf_Cursor;
	switch(Buf_Cursor)
	{
		case 0:
			pTFT_DispBuf = pTFT_Settings->Buf0;
			break;
		case 1:
			pTFT_DispBuf = pTFT_Settings->Buf1;
			break;
		case 2:
			pTFT_DispBuf = pTFT_Settings->Buf2;
			break;
		default:
			break;		
	}
	return pTFT_DispBuf;
}

//=============================================================
// Prototype:		unsigned short *TFT_SelWorkBuf(unsigned char Buf_Cursor);
// Description:		Select a buffer as the work buffer. 
//					(Note that buffer operations of the functions described in TFT_API.c are all on the work buffer.)
// Arguments:		Buf_Cursor - The number (0~2) of the buffer to be used as display buffer  
// Return Value:	Start address of buffer (work buffer)
//=============================================================
unsigned short *TFT_SelWorkBuf(unsigned char Buf_Cursor)
{
	switch(Buf_Cursor)
	{
		case 0:
			pTFT_WorkBuf = pTFT_Settings->Buf0;
			break;
		case 1:
			pTFT_WorkBuf = pTFT_Settings->Buf1;
			break;
		case 2:
			pTFT_WorkBuf = pTFT_Settings->Buf2;
			break;
		default:
			break;		
	}
	return pTFT_WorkBuf;
}

//=============================================================
// Prototype:		void TFT_InitHardware(void);
// Description:		Initialize TFT hardware registers. 
// Arguments:		None
// Return Value:	None
//=============================================================
void TFT_InitHardware(void)
{
	int i;

 	*P_LCD_INTERFACE_SEL |= TFT_INTERFACE;				// Select TFT_AUO mode
	*P_LCD_CLK_CONF = C_LCD_RST_DIS | C_LCD_CLK_EN;		// Enable LCD clock

	// Set TFT-LCD data mode
	*P_TFT_DATA_SEQ = TFT_DATA_SEQ;						// TFT-LCD output data sequence
	*P_TFT_DATA_FMT = TFT_DATA_FMT;						// TFT-LCD output data format

	// TFT-LCD line signal setting
	*P_TFT_HOR_ACT = TFT_HOR_ACT;
	*P_TFT_HOR_FRONT = TFT_HOR_FRONT;
	*P_TFT_HOR_BACK = TFT_HOR_BACK;
	*P_TFT_HOR_SYNC = TFT_HOR_SYNC;
	
	// TFT-LCD field signal setting
	*P_TFT_VER_ACT = TFT_VER_ACT;
	*P_TFT_VER_FRONT = TFT_VER_FRONT;
	*P_TFT_VER_BACK = TFT_VER_BACK;
	*P_TFT_VER_SYNC = TFT_VER_SYNC;

	// Set start position for TFT-LCD display
	*P_TFT_ROW_START = TFT_ROW_START;
	*P_TFT_COL_START = TFT_COL_START;
	*P_TFT_COL_WIDTH = TFT_COL_WIDTH;
	*P_TFT_DUMMY_WIDTH = TFT_DUMMY_WIDTH;
	
	// Buffer Ctrl setting
	*P_BUFCTRL_CLK_CONF = 0x03;
	
	pTFT_Settings->Buf_Format1 = C_TFT_BUF_RGB565;
	pTFT_Settings->Buf_Format2 = C_TFT_BUF_YUV;
	pTFT_Settings->Buf0 = (unsigned short*)TFT_BUFFER0_SA;
	pTFT_Settings->Buf1 = (unsigned short*)TFT_BUFFER1_SA;
	pTFT_Settings->Buf2 = (unsigned short*)TFT_BUFFER2_SA;
	TFT_SetSettings();

	for(i=0; i<TFT_WIDTH*TFT_HEIGHT; i++)
	{
		pTFT_Settings->Buf0[i] = 0x0000;
		pTFT_Settings->Buf1[i] = 0x0000;
		pTFT_Settings->Buf2[i] = 0x0000;
	}
	TFT_SelWorkBuf(0);
	TFT_SelDispBuf(0);
	
	// Set TFT-LCD control register
	*P_TFT_INT_STATUS = ~C_TFT_INT_EN;					// Disable interrupt
	// Enable TFT module, not zoom in image, select 6.75MHz clock
	*P_TFT_MODE_CTRL = C_TFT_CTRL_EN | TFT_CLK_SET;
}

⌨️ 快捷键说明

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