📄 tool.c
字号:
#define EBIU_AMGCTL 0xFFC00A00 // 16bit , EBIU Asynchronous Memory Global Control Register
#define EBIU_AMBCTL0 0xFFC00A04 // 32bit , EBIU Asynchronous Memory Bank Control Register 0
#define EBIU_AMBCTL1 0xFFC00A08 //32bit , EBIU Asynchronous Memory Bank Control Register 1
#define Flash_PortA_Data_Out 0x20270004 // 8bit
#define Flash_PortA_Direction 0x20270006 // 8bit
#define Flash_PortA_Data_In 0x20270000 // 8bit
void ADV7171_reset( )
{
unsigned short * p_Ushort;
unsigned int * p_U_int;
unsigned char * p_U_char;
int loop;
p_U_int = EBIU_AMBCTL0;
*p_U_int =0x7bb07bb0; // configure EBIU
p_U_int = EBIU_AMBCTL1;
*p_U_int =0x7bb07bb0; // configure EBIU
p_Ushort = EBIU_AMGCTL;
*p_Ushort = 0x000f; // configure EBIU
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0;
//portA4=0,portA5=0 for BF533 PPIclk select,portA2=0 for ADV7171 reset start
p_U_char = Flash_PortA_Direction;
for(loop=0;loop<0x1000;loop++)//循环约2ms
*p_U_char = 0x34;
// 打开ADV7171_restet和PPICLK_SELECT
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0x04;
// portA2=1 PPICLK_ONBOARD_SELECT=0 PPICLK_AD7183_SELECTfor ADV7171 reset end
}
#define DMA0_START_ADDR 0xffc00c04 //32bit
#define DMA0_CONFIG 0xffc00c08 //16bit
#define DMA0_X_COUNT 0xffc00c10 //16bit
#define DMA0_Y_COUNT 0xffc00c18 //16bit
#define DMA0_X_MODIFY 0xffc00c14 //16bit
#define DMA0_Y_MODIFY 0xffc00c1c //16bit
void DMA_init(unsigned char * buffer_start_addr)
{
unsigned short * p_CONFIG;
unsigned short * p_X_COUNT;
unsigned short * p_Y_COUNT;
unsigned short * p_X_MODIFY;
unsigned short * p_Y_MODIFY;
unsigned int * p_START_ADDR;
p_CONFIG = DMA0_CONFIG;
*p_CONFIG = 0;
p_X_COUNT = DMA0_X_COUNT;
*p_X_COUNT = 1716;
p_Y_COUNT = DMA0_Y_COUNT;
*p_Y_COUNT = 525;
p_X_MODIFY = DMA0_X_MODIFY;
*p_X_MODIFY = 1;
p_Y_MODIFY = DMA0_Y_MODIFY;
*p_Y_MODIFY = 1;
p_START_ADDR= DMA0_START_ADDR;
*p_START_ADDR= buffer_start_addr;
// printf("config=%0x,xcount=%0x,ycount=%0x,xmod=%0x,ymod=%0x",*p_CONFIG,*p_X_COUNT,*p_Y_COUNT,*p_X_MODIFY,*p_Y_MODIFY);
}
#define PPI_control 0xffc01000 //16bit
void PPI_init( )
{
unsigned short *p_PPI;
p_PPI=PPI_control;
*p_PPI=0;
}
void DMA_enable( )
{
unsigned short *p_dma_en;
p_dma_en = DMA0_CONFIG;
*p_dma_en = 0X0011; //stop模式
}
void PPI_enable( )
{
unsigned short *p_PPI_en;
p_PPI_en = PPI_control;
*p_PPI_en = 3;
}
#define EBIU_SDSTAT 0xFFC00A1C // SDRAM Control Status Register, 16bit
#define EBIU_SDRRC 0xFFC00A18 // SDRAM Refresh rate, 16bit
#define EBIU_SDBCTL 0xFFC00A14 // SDRAM Bank Control, 16bit
#define EBIU_SDGCTL 0xFFC00A10 // SDRAM Global Control,32bit
void Init_SDRAM()
{
unsigned short *pEBIU_SDSTAT;
unsigned short *pEBIU_SDRRC;
unsigned short *pEBIU_SDBCTL;
unsigned int *pEBIU_SDGCTL;
pEBIU_SDSTAT = 0xFFC00A1C;
pEBIU_SDRRC = 0xFFC00A18;
pEBIU_SDBCTL = 0xFFC00A14;
pEBIU_SDGCTL = 0xFFC00A10;
if ((*pEBIU_SDSTAT & 0x0008) != 0x0008) // If SDRAM already powered up
return; // SDRAM already powered up
*pEBIU_SDRRC = 0x03E0; //SDRAM refresh rate with SCLK=128.25MHz
*pEBIU_SDBCTL = 0x0013; //column address width 9bit, SDRAM size 32MB,enabled
*pEBIU_SDGCTL = 0x0091998D;
}
#define PPL_CTL 0xFFC00000 //16bit data
#define PPL_DIV 0xFFC00004 //16bit data
void DSP_PLL_CClk_SClk_Init()
{
unsigned short *ctl,*div;
ctl=PPL_CTL;
*ctl=0x2600; //VCO=513MHZ
div=PPL_DIV;
*div=0x0004; //CCLK=513MHZ, SCLK=128.25NHZ
}
#define FIO_DIR 0XFFC00730 //16bit
#define FIO_INEN 0XFFC00740 //16bit
#define FIO_FLAG_D 0XFFC00700 //16bit
short button_manage(int sw2)
{
short sw,swup,swdown;
int sw1,sw3,sw4; //sw1 and sw2 去抖动
unsigned short *p_fio_dir,*p_fio_inen,*p_fio_flag_d;
p_fio_dir = FIO_DIR;
p_fio_inen = FIO_INEN;
p_fio_flag_d = FIO_FLAG_D;
*p_fio_dir =0; //open sw4 and sw5
*p_fio_inen = 0x0100; // enable sw4 and sw5
// swdown=(*p_fio_flag_d & 0x0100)>>8;
sw1=(*p_fio_flag_d & 0x0100)>>8; //做防抖
swdown=sw1 &&sw2;
sw2=!sw1;
if(swdown==1) // pagedown
{
if (sw<5)
sw+=1;
else sw=0;
}
else if(swup==1) // pageup
{
if(sw>0)
sw-=1;
else sw=4;
}
else;
return(sw);
}
#define Flash_PortB_Data_Out 0x20270005 // 8bit
#define Flash_PortB_Direction 0x20270007 // 8bit
//#define Flash_PortB_Data_In 0x20270001 // 8bit
int change_p_656_display(short button,unsigned char *addr_pic0,unsigned char *addr_pic1,unsigned char *addr_pic2,unsigned char *addr_pic3,unsigned char *addr_pic4)
{
unsigned char *addr;
unsigned char *LED_EN,*LED_DATA;
LED_EN = Flash_PortB_Direction;
LED_DATA = Flash_PortB_Data_Out;
*LED_EN =0x1F; //打开五个LED显示灯
*LED_DATA = 0x00; //LED灯熄灭
switch(button) //切换图像首地址和打开LED指示灯
{
case 1 : addr=addr_pic1; *LED_DATA = 0x02;break;
case 2 : addr=addr_pic2; *LED_DATA = 0x04;break;
case 3 : addr=addr_pic3; *LED_DATA = 0x08;break;
case 4 : addr=addr_pic4; *LED_DATA = 0x10;break;
default : addr=addr_pic0; *LED_DATA = 0x01;break;
}
return(addr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -