|
我的平台是:AT91sam9261+wince6.0
我参考你的【【共享】AT91SAM9261S驱动10.1寸彩屏 调试过程 】http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4089993&bbs_page_no=1&search_mode=1&search_text=at91sam9261&bbs_id=1032。我在EBOOT中添加了开机画面如下原代码如下:
void Init_lcd(void)
{
unsigned int i;
//地址映射
//AT91PS_SYS pSYS = (AT91PS_SYS)OALPAtoVA((DWORD)AT91C_BASE_SYS,FALSE);
AT91PS_PMC pPMC = (AT91PS_PMC)OALPAtoVA((DWORD)AT91C_BASE_PMC,FALSE);
AT91PS_PIO pPIOB = (AT91PS_PIO)OALPAtoVA((DWORD)AT91C_BASE_PIOB,FALSE);
AT91PS_LCDC pLCD = (AT91PS_LCDC)OALPAtoVA((DWORD)AT91C_BASE_LCDC,FALSE);
lcd_base = (char *)OALPAtoVA((DWORD)0X23f00000,FALSE);
// lcd_base = (char *)0xa3f25800;
RETAILMSG(1,(L"++++++++init---lcd++++++++++0x%x\n\r",lcd_base));
/* Configure the PIO Lines for interfacing LCD */
pPIOB->PIO_IDR = 0x1FFFFFFF;// Interrupt Disable Register
pPIOB->PIO_PPUDR = 0x1FFFFFFF;// (PIO_PPUDR) Pull-up Disable Register
pPIOB->PIO_ASR = 0x001F9F1F;//PB0~PB20 用外设A,PB21~28用外设B
pPIOB->PIO_PDR = 0x1f9F9F1F;// (PIO_PDR) PIO Disable Register,禁止普通IO操作,使能外设控制
pPIOB->PIO_IDR = 0x1f9F9F1F;// (PIO_IDR) Interrupt Disable Register 屏蔽中断
pPIOB->PIO_PPUDR = 0x1FFFFFFF;
pPIOB->PIO_BSR = 0x1F000000;// (PIO_BSR) Select B Register
pPMC->PMC_SCER = 0x1 << 17; /* Enable HCLOCK */
pPMC->PMC_PCER = 1<<21; /* Enable LCD clk */
pLCD->LCDC_DMACON = 0; /* Disable DMA */
pLCD->LCDC_PWRCON = 0; /* LCD off */
pLCD->LCDC_LCDCON1 = (0x00<< 12) ; /* CLKVAL */
pLCD->LCDC_LCDCON2 = (2 << 30) | /* MEMOR: Little Endian */
(0x01 << 15) | /* CLKMOD: Always active */
(0x00 << 12) | /* INVDVAL: Normal */
(0x01<< 11) | /* INVCLK: Normal */
(0x00 << 10) | /* INVLINE: Normal */
(0x00 << 9) | /* INVFRAME: Normal */
(0x00 << 8) | /* INVVD: Normal */
(0x04 << 5) | /* PIXELSIZE: 16 BPP, packed*/
(0x00 << 3) | /* IFWIDTH: 4-bit */ //2010-6-7 10:52:22 只在STN模式下有效
(0x00 << 2) | /* SCANMOD: Single Scan */
(0x02 << 0) ; /* DISTYPE: TFT */
pLCD->LCDC_LCDFRCFG = ((480-1) << 21) | /* LINESIZE */
((272-1) << 0) ; /* LINEVAL */
pLCD->LCDC_TIM1 = (0 << 24) | /* VHDLY */
(3 << 16) | /* VPW */
(0X14 << 8) | /* VBP */
(0X1E << 0) ; /* VFP */
pLCD->LCDC_TIM2 = (0X3C << 21) | /* HFP */
(0X1E << 8) | /* HPW */
(66 << 0) ; /* HBP */
pLCD->LCDC_CTRSTVAL = (/*0x80*/0xDA << 0) ; /* CVAL */
pLCD->LCDC_CTRSTCON = (0x01 << 3) | /* ENA */
(0x01 << 2) | /* POL */
(0x3 /*0*/<< 0) ; /* PS */
pLCD->LCDC_FRMCFG = (0x3 << 24) | /* BRSTLN */
(480*272/32);/* FRMSIZE */
pLCD->LCDC_FIFO = 512 - (2 * 3/*16*/ + 3); /* FIFOTH */
pLCD->LCDC_BA1 = (unsigned int)lcd_base; /* DMA Base Addr */
pLCD->LCDC_DMACON = 0x2 << 0;
pLCD->LCDC_DMACON = 0x1 << 0; /* Enable DMA */
pLCD->LCDC_PWRCON = (0x0F << 1) | GUARDTIME */
(0x01 << 0) ; /* LCD_PWR: On */
for(i =0; i <256; i++)
{
pLCD->LCDC_LUT_ENTRY = ((rPalette.pRed) >> 3 |
((rPalette.pGreen & 0xf8) << 2) |
((rPalette.pBlue & 0xf8) << 7));
}
//显示颜色
for (i=0; i<272; ++i)
{
memset(lcd_base, i, 480);
lcd_base += 272;
}
RETAILMSG(1,(L"------init---lcd------\n\r"));
}
以上的代码使能电源控制如下一句,
pLCD->LCDC_PWRCON = (0x0F << 1) | GUARDTIME */
(0x01 << 0) ; /* LCD_PWR: On */
屏就是黑色的,看不见东西。问下yulutong(土土狗),我还有哪里没配置,还是配置错了?谢谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|