一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來_第1頁
一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來_第2頁
一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來_第3頁
一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來_第4頁
一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一、事先用ADS寫個測試程序,把TFT屏的相關(guān)參數(shù)確定下來.二、platformsmdk2410incs2410.h,更改成如下定義#define VBPD (15)&0xff)#define VFPD (15)&0xff)#define VSPW (15)&0x3f)#define HBPD (32)&0x7f)#define HFPD (32)&0xff)#define HSPW (96)&0xff)#define CLKVAL_TFT (1)三、/*/ Define some values for TFT 16bpp/ LCDTYPE 定義

2、在s2410.h文件中,#define LCDTYPE TFT16BPP/by heiyiya 2010-07-20/#if(LCDTYPE = TFT16BPP) / TFT 640*480 / 16bpp/#define FR_WIDTH 240/#define FR_HEIGHT 320/#define PhysicalVmemSize FR_HEIGHT*FR_WIDTH*LCDTYPE#if(LCDTYPE = TFT16BPP) / TFT 640*480 / 16bpp#define FR_WIDTH 640#define FR_HEIGHT 480#define Physica

3、lVmemSize FR_HEIGHT*FR_WIDTH*LCDTYPEstruct FrameBuffer unsigned short pixelFR_HEIGHTFR_WIDTH;#else if(LCDTYPE = STN8BPP)/ STN 320*240 / 8bpp#define FR_WIDTH 320#define FR_HEIGHT 240#define PhysicalVmemSize FR_HEIGHT*FR_WIDTHstruct FrameBuffer unsigned char pixelFR_HEIGHTFR_WIDTH;#endif*/struct Frame

4、Buffer *FBuf;static void InitDisplay()/int i, j;volatile IOPreg *s2410IOP;volatile LCDreg *s2410LCD; s2410IOP = (IOPreg *)IOP_BASE;s2410LCD = (LCDreg *)LCD_BASE; / LCD port initialize.s2410IOP->rGPCUP = 0xFFFFFFFF;s2410IOP->rGPCCON = 0xAAAAAAAA;s2410IOP->rGPCCON = 0xAAAAAAAA;s2410IOP->rG

5、PDUP = 0xFFFFFFFF;s2410IOP->rGPDCON = 0xAAAAAAAA;s2410IOP->rGPGCON &= (3 << 8); /* Set LCD_PWREN as output */s2410IOP->rGPGCON |= (1 << 8);s2410IOP->rGPGDAT |= (1 << 4); /* Backlight ON */s2410LCD->rLCDCON1=(3<<8)|(MVAL_USED<<7)|(3<<5)|(12<&l

6、t;1)|0;/ TFT LCD panel,16bpp TFT,ENVID=offs2410LCD->rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;s2410LCD->rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);s2410LCD->rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);s2410LCD-&

7、gt;rLCDCON4=(MVAL<<8)|(HSPW);s2410LCD->rLCDCON5=(1<<11)|(1<<9)|(1<<8)|(1<<3)|(1<<0); /FRM5:6:5,HSYNC and VSYNC are inverteds2410LCD->rLCDSADDR1=(FRAMEBUF_DMA_BASE>>22)<<21)|M5D(FRAMEBUF_DMA_BASE>>1);s2410LCD->rLCDSADDR2=M5D( (FRAMEBUF_DM

8、A_BASE+(LCD_XSIZE_TFT*LCD_YSIZE_TFT*2)>>1 );s2410LCD->rLCDSADDR3=(LCD_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);s2410LCD->rLCDINTMSK|=(3); / MASK LCD Sub Interrupts2410LCD->rLPCSEL&=(7); / Disable LPC3600s2410LCD->rTPAL=0; / Disable Temp Palettes2410LCD->rLCDC

9、ON1 |= 1;RETAILMSG(1,(TEXT("LCD 640*480 Initialize(by heiyiya 2010-07-20).rn");四、S3C2410DISP:S3C2410DISP (void)RETAILMSG(1, (TEXT("+S3C2410DISP:S3C2410DISPrn");/ setup up display mode related constants/ m_nScreenWidth = 240;/ heiyiya 2010-07-20/ m_nScreenHeight = 320;m_nScreenWid

10、th = 640;m_nScreenHeight = 480;m_colorDepth = 16;m_cbScanLineLength = m_nScreenWidth * 2;m_FrameBufferSize = m_nScreenHeight * m_cbScanLineLength;/ memory map register access window, frame buffer, and program LCD controllerInitializeHardware();.void S3C2410DISP:InitializeHardware (void)WORD *ptr;DWO

11、RD index;HKEY hkDisplay = NULL;DWORD dwLCDPhysicalFrameBase;DWORD dwStatus, dwType, dwSize;RETAILMSG(1, (_T("+S3C2410DISP:InitializeHardwarern");/ open the registry key and read our configurationdwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gszBaseInstance, 0, 0, &hkDisplay);dwType = REG

12、_DWORD;if(dwStatus = ERROR_SUCCESS && dwType = REG_DWORD) dwSize = sizeof(DWORD);dwStatus = RegQueryValueEx(hkDisplay, _T("LCDVirtualFrameBase"), NULL, &dwType, (LPBYTE) &gdwLCDVirtualFrameBase, &dwSize);if(dwStatus = ERROR_SUCCESS && dwType = REG_DWORD) dwSize

13、= sizeof(DWORD);dwStatus = RegQueryValueEx(hkDisplay, _T("LCDPhysicalFrameBase"), NULL, &dwType, (LPBYTE) &dwLCDPhysicalFrameBase, &dwSize);/ close the registry keyif(hkDisplay != NULL) RegCloseKey(hkDisplay);/ did we get everything?if(dwStatus != ERROR_SUCCESS) RETAILMSG(0, (_

14、T("SALCD2: InitializeHardware: couldn't get registry configurationrn");return;/ map frame buffer into process space memory/* by heiyiya 2010-07-20 m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, (0x40000), MEM_RESERVE, PAGE_NOACCESS);if (m_VirtualFrameBuffer = NULL) RETAILMSG(0,(TEXT(&qu

15、ot;m_VirtualFrameBuffer is not allocatednr");return;else if (!VirtualCopy(PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase, (0x40000), PAGE_READWRITE | PAGE_NOCACHE)RETAILMSG(0, (TEXT("m_VirtualFrameBuffer is not mappednr");VirtualFree(PVOID)m_VirtualFrameBuffer, 0, MEM_RELEA

16、SE);return;*/m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, (0xA0000), MEM_RESERVE, PAGE_NOACCESS);if (m_VirtualFrameBuffer = NULL) RETAILMSG(0,(TEXT("m_VirtualFrameBuffer is not allocatednr");return;else if (!VirtualCopy(PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase, (0xA0000),

17、 PAGE_READWRITE | PAGE_NOCACHE)RETAILMSG(0, (TEXT("m_VirtualFrameBuffer is not mappednr");VirtualFree(PVOID)m_VirtualFrameBuffer, 0, MEM_RELEASE);return;RETAILMSG(1, (TEXT("m_VirtualFrameBuffer is mapped at %x(PHY : %x)nr"), m_VirtualFrameBuffer, gdwLCDVirtualFrameBase);RETAILMSG(1, (TEXT("Clearing frame buffer !nr");ptr = (WORD *)m_VirtualFrameBuffer;/這里昌往緩存里填初始化數(shù)據(jù),不填也可以./ clear rest of frame buffer out/for (index = 0; index < 320*240; index+)for (index = 0; index < 640*480; index+)if(index < 76800)/3200ptrindex

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論