




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一、事先用ADS寫個測試程序,把TFT屏的相關參數確定下來.二、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;/這里昌往緩存里填初始化數據,不填也可以./ 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 便民臨時攤位管理制度
- 保健場所消防管理制度
- 保利集團資金管理制度
- 建筑金屬面絕熱夾芯板產品質量省監督抽查實施細則
- 保安公司運維管理制度
- 保安特勤隊員管理制度
- 保密單位門衛管理制度
- 保密防護設施管理制度
- 保潔服務質量管理制度
- 環保綠色課件圖片
- 文史哲與藝術中的數學智慧樹知到期末考試答案章節答案2024年吉林師范大學
- 信息光學智慧樹知到期末考試答案章節答案2024年北京工業大學
- 《HSK標準教程1》課件
- 電大財務大數據分析編程作業3
- 諾貝爾生理學或醫學獎史話智慧樹知到期末考試答案2024年
- 行業分析報告模板(很全面-非常有用)
- 內分泌系統疾病教學設計教案1
- 法人變更書面催促通知合集3篇
- 廣東省初級中學教育裝備標準
- 售票員崗前培訓
- 教科版六年級下冊科學第一單元《小小工程師》教材分析及全部教案(定稿;共7課時)
評論
0/150
提交評論