1位色 60Hz 刷新 640*480分辨率 ATMEL LCD
时间:2009-05-22 来源:tdh2002
#include <AT91SAM9263.H>
/***
tandenghua 1位色 60Hz 刷新 640*480分辨率
***/
// ConfigurePins();
/**
((AT91PS_PIO)(0xFFFFF600))->PIO_IDR= 0x0dcdcfCf;
*((unsigned int *)(0xFFFFF600+0x00000044))=0x0dcdcfCf;
*/
AT91C_BASE_PIOC->PIO_IDR= 0x0dcdcfC;
AT91C_BASE_PIOC->PIO_PPUDR= 0x0dcdcfCf;
AT91C_BASE_PIOC->PIO_ASR= 0x0dcdcfCf;
AT91C_BASE_PIOC->PIO_PDR= 0x0dcdcfCf;
AT91C_BASE_PIOC->PIO_IDR= 0x00021000;
AT91C_BASE_PIOC->PIO_PPUDR= 0x00021000;
AT91C_BASE_PIOC->PIO_BSR= 0x00021000;
AT91C_BASE_PIOC->PIO_PDR= 0x00021000;
AT91C_BASE_PIOB->PIO_IDR= 0x1<<9;
AT91C_BASE_PIOB->PIO_PPUDR= 0x1<<9;
AT91C_BASE_PIOB->PIO_BSR= 0x1<<9;
AT91C_BASE_PIOB->PIO_PDR= 0x1<<9; /*configure pins by tt*/
// Enable peripheral clock
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_LCDC;
// Disable the LCD and the DMA
AT91C_BASE_LCDC->LCDC_DMACON = 0;
AT91C_BASE_LCDC->LCDC_PWRCON = 0 << 1;
// Configure the LCD controller
AT91C_BASE_LCDC->LCDC_LCDCON1 = 1<< 12;
AT91C_BASE_LCDC->LCDC_LCDCON2=0x80008602;
#if 0
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&(~AT91C_LCDC_DISTYPE))|AT91C_LCDC_DISTYPE_TFT;
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&(~AT91C_LCDC_SCANMOD))|AT91C_LCDC_SCANMOD_SINGLESCAN;
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&(~AT91C_LCDC_PIXELSIZE))|AT91C_LCDC_PIXELSIZE_ONEBITSPERPIXEL; /*几位色*/
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&0xFFFFE0FF)|AT91C_LCDC_INVVD_NORMALPOL|AT91C_LCDC_INVFRAME_INVERTEDPOL|AT91C_LCDC_INVLINE_INVERTEDPOL|AT91C_LCDC_INVCLK_NORMALPOL|AT91C_LCDC_INVDVAL_NORMALPOL;
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&(~AT91C_LCDC_CLKMOD))|AT91C_LCDC_CLKMOD_ALWAYSACTIVE;
AT91C_BASE_LCDC->LCDC_LCDCON2=((AT91C_BASE_LCDC->LCDC_LCDCON2)&(~AT91C_LCDC_MEMOR))|AT91C_LCDC_MEMOR_LITTLEIND;
#endif
AT91C_BASE_LCDC->LCDC_LCDFRCFG = 0x4FE001DF; /*set size ((640 - 1) << 21) | (480 - 1) */
// Configure timings
AT91C_BASE_LCDC->LCDC_TIM1 = 0x0201210A;/* vfp | (vbp << 8) | ((vpw-1) << 16)| ((vhdly-1) << 24); */
AT91C_BASE_LCDC->LCDC_TIM2 = 0x0F003E2F;/*(hbp-1) | ((hpw-1) << 8) | ((hfp-1) << 24)*/
// Configure contrast (TODO functions)
AT91C_BASE_LCDC->LCDC_CTRSTCON &= ((AT91C_BASE_LCDC->LCDC_CTRSTCON)&(~AT91C_LCDC_PS))|AT91C_LCDC_PS_NOTDIVIDED;
AT91C_BASE_LCDC->LCDC_CTRSTCON &= ((AT91C_BASE_LCDC->LCDC_CTRSTCON)&(~AT91C_LCDC_POL))|AT91C_LCDC_POL_POSITIVEPULSE;
AT91C_BASE_LCDC->LCDC_CTRSTVAL = 0x80; /*LCD_SetContrastValue*/
AT91C_BASE_LCDC->LCDC_CTRSTCON |= AT91C_LCDC_ENA_PWMGEMENABLED;
AT91C_BASE_LCDC->LCDC_LUT_ENTRY[0]=0x0;
AT91C_BASE_LCDC->LCDC_LUT_ENTRY[1]=0xffffffff;
AT91C_BASE_LCDC->LCDC_FRMCFG =0x00002580;/*0x00002580; (640 * 480* 1)/32 | (AT91C_BASE_LCDC->LCDC_FRMCFG & 0xFF000000);*/
AT91C_BASE_LCDC->LCDC_FIFO = 0x000007DD;
AT91C_BASE_LCDC->LCDC_BA1 =0x22000000;
AT91C_BASE_LCDC->LCDC_DMACON =AT91C_LCDC_DMAEN|AT91C_LCDC_DMA2DEN;
AT91C_BASE_LCDC->LCDC_PWRCON = AT91C_LCDC_PWR | (0x0c << 1);
AT91C_BASE_LCDC->LCDC_DMACON =0x19;
相关阅读 更多 +