搜索
bottom↓
回复: 1

!!!!请教下yulutong(土土狗)关于AT91sam9261添加开机画面的问题!!!!!!!

[复制链接]

出0入0汤圆

发表于 2010-12-2 22:04:53 | 显示全部楼层 |阅读模式
我的平台是: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周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-10-10 15:00:36 | 显示全部楼层
不知楼主解决没有。可以参考NAND UBOOT启动。我是裸机完成开机画面。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 08:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表