📄 lcd.c~
字号:
#include "lcd.h"
//#define pod(a,d) (*(volatile unsigned *)a = d)
void init_LCD()
{
pod(LCD_CLOCK_BASE,0x3);//25M,one of third AHB
// pod(ALT_SIGNAL_BASE,0x0);// the signal does not toggle
pod(SIGNAL_POLARRITY_BASE,0x06);// D=0,Enab=0,Frame=1,Load=1,cp=1
// pod(HSYNC_TIME1_BASE,0x0000);//back-Hsync=160 front-Hsync=0
pod(HSYNC_TIME1_BASE,0x8610);//back-Hsync=144 front-Hsync=16
pod(HSYNC_TIME2_BASE,0x09);//Hsync Pulse Width=10
// pod(VSYNC_TIME1_BASE,0x0000);//back-Vsync=45,front-Vsync=0
pod(VSYNC_TIME1_BASE,0x0b20);//back-Vsync=13,front-Vsync=32
pod(VSYNC_TIME2_BASE,0x01);//Vsync Pulse Width=2
// pod(VIDEO_SCR_ADDRESS_Y,0x00100000);
// pod(VIDEO_SCR_ADDRESS_CB,0x00082c00);
// pod(VIDEO_SCR_ADDRESS_CR,0x00095800);
}
void init_DPU()
{
int i;
pod(DISPLAY_MODE_BASE,0x0);
pod(INTERRUPT_MASK_BASE,0x0);// MASK all interrupts
pod(DISPLAY_SIZE_BASE,0x01df027f);//height=480(0x1e0),width=640(0x280);
pod(TWOD_SCREEN_MODE,0x00000000);// close all SCR
pod(MAX_VIDEO_MEM_FETCH_LENGTH,0x0b);
pod(PRO_ROW_HEIGHT,0x2);// prosess row height
pod(VIDEO_WINDOW_ORIGN,0x00000000);
pod(VIDEO_WINDOW_END,0x01df027f);
// pod(VIDEO_SCR_ADDRESS_Y,0x10070000);
// pod(VIDEO_SCR_ADDRESS_CB,0x10082c00);
// pod(VIDEO_SCR_ADDRESS_CR,0x10095800);
pod(DISPLAY_CONTROL,0x00014020);
pod(DISPLAY_MODE_BASE,0x5);
}
void init_gpu( void )
{
//initialize GPU
pod( GLE_SS_REG, 0x00000003 ); // reset GLE
pod( GLE_INT_REG, 0x00000fff ); // enable GLE interrupt
pod( GLE_CAUSE_REG , 0x0000a5ff ); // clear GLE int cause
pod( GLE_DATA_RET_STATUS_REG,0x00000000 ); // clear Data return statsu
// intialize renderer
pod( REN_INTR_REG, 0x00000000 ); //clear renderer interrupt status
pod( REN_PERF_CTR_REG, 0x00000000 ); //disable performance counter
//tako pod( REN_VRAM1_XY_REG, ( (240<<16) | 512 ) );
//tako pod( REN_VRAM2_XY_REG, ( (240<<16) | 512 ) );
pod( REN_VRAM1_XY_REG, 0);
pod( REN_VRAM2_XY_REG, 0);
pod( REN_SYSMEM_OFS_REG, ADDR_SYSTEM_MEMORY_OFFSET ); //system momory offset
}// init_gpu()
void init_block()
{
short *ptr_data;
int i;
*(unsigned int *)ptr_data=0x00700000;
for(i=0;i<4600;i++)
*ptr_data++=0;
}
void init_config()
{
pod(DEVICE_CONFIGURATION,0x200);
pod(GPIO_DIRECTION1,0x00);
pod(GPIO_DIRECTION2,0x00);
*(unsigned long *)GPIO_DIRECTION3 &=~0x00000001;
}
void color_bar()
{
short *ptr_data;
int i,j;
short *src_data=0x00700000;
ptr_data=src_data;
// int stride=640;
for(i=0;i<480;i++)
{ for(j=0;j<160;j++)
*ptr_data++=0x7c00;
ptr_data+=480;}
ptr_data=src_data+160;
for(i=0;i<480;i++)
{ for(j=0;j<160;j++)
*ptr_data++=0x3e0;
ptr_data+=480;}
ptr_data=src_data+320;
for(i=0;i<480;i++)
{ for(j=0;j<160;j++)
*ptr_data++=0x1f;
ptr_data+=480;}
ptr_data=src_data+480;
for(i=0;i<480;i++)
{ for(j=0;j<160;j++)
*ptr_data++=0x0;
ptr_data+=480;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -