⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 black-fin DSP处理器单帧图像获取程序
💻 C
字号:
#include"init.h"
#define PLL_CSEL 0

csect(drivers_L1_code,4) void Init_PLL(int MSEL, int SSSEL)
{
	int new_PLL_CTL;
	
	*pPLL_DIV = (SSSEL & 0xf) | (PLL_CSEL<< 3 );
	asm("ssync;");
	
	
	new_PLL_CTL = (MSEL & 0x3f) << 9;		
	//new_PLL_CTL |= 0x1; //set DF pass CLKIN/2 to PLL
	
	// enable Wake-up from PLL event
	*pSIC_IWR |= 0xffffffff;

	*pPLL_CTL = new_PLL_CTL;
	asm("ssync;");
	asm("idle;");
}//end Init_PLL

void init_pf()
{
    *pFIO_DIR|=0x00a8;//1=output
    *pFIO_INEN|=0x0050;//1=enable
    
    //for i2c
    *pFIO_DIR|=0x0003;//1=output
}

EX_INTERRUPT_HANDLER(TIMER0_ISR)
{
    *pTIMER_STATUS=0x01;//清除本次中断
    if(globle_counter++>100)
    {
    	tiemr_1s_flag=1;
    	globle_counter=0;
    }
    asm("nop;");
}

void init_timer()
{
    *pTIMER0_CONFIG=0x0019;//enable interruput,counter to period end,PWM_OUT mode
    *pTIMER0_PERIOD=1134000;//10ms
    *pTIMER0_WIDTH=567000;//0.5ms
    *pTIMER_ENABLE=0x0001;
    
    globle_counter=0;
    tiemr_1s_flag=0;   
     
    *pSIC_IAR2&=0xfffffff0;
    *pSIC_IAR2|=0x00000005;//timer0 IVG=12;
    *pSIC_IMASK|=0x00010000;//enable timer0 interuput
    register_handler(ik_ivg12, TIMER0_ISR);
    

}

EX_INTERRUPT_HANDLER(REAL_TIME_ISR)
{
    *pRTC_ISTAT=0x0004;//清除本次中断
    tiemr_1s_flag=1;
    asm("nop;");
}
void init_realtimer()
{
    *pRTC_ICTL=0x0004;//per second intrrupt
    *pRTC_STAT=0;//(12+(18<<6)+(5<<12));
    *pRTC_PREN=0x01;//enable Prescaler
    
    *pSIC_IAR0&=0x0fffffff;
    *pSIC_IAR0|=0x60000000;//real time IVG=13; 
    *pSIC_IMASK|=0x00000080;//enable timer0 interuput
    register_handler(ik_ivg13, REAL_TIME_ISR);
    
}

int sdram_test()
{
    int i;
    unsigned char *sdram_start=(unsigned char*)(0x00000000);
    unsigned char temp;
    int pass=0;
    
    ///////////////////bank0
    for(i=0x00000004;i<0x01000000;i++)
    {
        *(sdram_start+i)=0xaa;
    }
    pass=1;
    for(i=0x00000004;i<0x01000000;i++)
    {
        temp=*(sdram_start+i);
        if(temp!=0xaa)
        {
        	pass=0;
        	//printf("adram error at address:%d,value=%d\n",i,temp);
        	while(1);
        	break;
        }
    }
   //if(pass)
    //	printf("sdram bank0 pass!\n");
     ///////////////////bank1
    for(i=0x01000000;i<0x02000000;i++)
    {
        *(sdram_start+i)=0xaa;
    }
    pass=1;
    for(i=0x01000000;i<0x02000000;i++)
    {
        temp=*(sdram_start+i);
        if(temp!=0xaa)
        {
        	pass=0;
        	//printf("adram error at address:%d,value=%d\n",i,temp);
        	while(1);
        	break;
        }
    }
 /*   //if(pass)
    //	printf("sdram bank1 pass!\n");
     ///////////////////bank0
    for(i=0x02000000;i<0x03000000;i++)
    {
        *(sdram_start+i)=0xaa;
    }
    pass=1;
    for(i=0x02000000;i<0x03000000;i++)
    {
        temp=*(sdram_start+i);
        if(temp!=0xaa)
        {
        	pass=0;
        	//printf("adram error at address:%d,value=%d\n",i,temp);
        	while(1);
        	break;
        }
    }
    //if(pass)
    	//printf("sdram bank2 pass!\n");
     ///////////////////bank0
    for(i=0x03000000;i<0x04000000;i++)
    {
        *(sdram_start+i)=0xaa;
    }
    pass=1;
    for(i=0x03000000;i<0x04000000;i++)
    {
        temp=*(sdram_start+i);
        if(temp!=0xaa)
        {
        	pass=0;
        	//printf("adram error at address:%d,value=%d\n",i,temp);
        	while(1);
        	break;
        }
    }
    //if(pass)
    	//printf("sdram bank3 pass!\n"); */
    while(1);	 
    return pass;
    
}   
    	
void init_sdram()
{
    *pEBIU_AMBCTL1 = 0x7bb07bb0;
    *pEBIU_AMBCTL0 = 0x7bb07bb0;
    *pEBIU_AMGCTL = 0x00FF;
    *pEBIU_SDRRC = 0x0817;//0x01A0; 
    *pEBIU_SDBCTL = 0x0013;//0x0025;//0x0025; //1.7	64 MB
    *pEBIU_SDGCTL = 0x0091998d;//0x00911989;//0x0091998d;//0x998D0491;
   // sdram_test();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -