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

📄 dec6713.c

📁 实现TMS320C6713的Flash烧写程序
💻 C
字号:

/*********************************************************************************
* DEC6713.C	v1.00	     							                            *
* Copyright	2003 by SEED Electronic Technology Ltd.
* All rights reserved. Property of SEED Electronic Technology Ltd.			                *
* Designed by:	Hongshuai.Li								                                *
*********************************************************************************/ 
#include <csl.h>
#include <csl_emif.h>
#include <csl_pll.h>


//#define PLL_CSR   *(volatile int *)0x01B7C100

/*Local software delay function*/
static void PLLdelay(int Count)
{
    volatile int i = Count;
    while(i--);
}


void emif_init()
{
   /* Initialize the board APIs */
   EMIF_Config MyEMIFcfg0={
		0x30		                        |
		EMIF_FMKS(GBLCTL,NOHOLD,DISABLE)	|
		EMIF_FMKS(GBLCTL,CLK1EN,DISABLE)	|
		EMIF_FMKS(GBLCTL,CLK2EN,ENABLE),                                            /* GBCTL = 0x00000068 */
		
		EMIF_FMKS(CECTL,WRSETUP,DEFAULT)	|
		EMIF_FMKS(CECTL,WRSTRB,DEFAULT)		|
		EMIF_FMKS(CECTL,WRHLD,DEFAULT)		|
		EMIF_FMKS(CECTL,RDSETUP,DEFAULT)	|
		EMIF_FMKS(CECTL,TA,OF(2))		    |
		EMIF_FMKS(CECTL,RDSTRB,DEFAULT)		|
		EMIF_FMKS(CECTL,MTYPE,SDRAM32)		|                                 /* 32位SDRAM */  
		EMIF_FMKS(CECTL,RDHLD,DEFAULT),                                           /* CECTL0 = 0xffffbf33   */
		
		        EMIF_FMKS(CECTL, WRSETUP, OF(0))        |
                EMIF_FMKS(CECTL, WRSTRB, OF(8))         |
                EMIF_FMKS(CECTL, WRHLD, OF(2))          |
                EMIF_FMKS(CECTL, RDSETUP, OF(0))        |
                EMIF_FMKS(CECTL, TA, OF(2))             |
                EMIF_FMKS(CECTL, RDSTRB, OF(8))         |
                EMIF_FMKS(CECTL, MTYPE, ASYNC16)        |                                          /* 16位异步 */
                EMIF_FMKS(CECTL, RDHLD, OF(2)),                                                 /* CECTL1 = 0x02208812 */                    
        
                EMIF_FMKS(CECTL, WRSETUP, OF(0))    |
                EMIF_FMKS(CECTL, WRSTRB, OF(8))     |
                EMIF_FMKS(CECTL, WRHLD, OF(2))      |
                EMIF_FMKS(CECTL, RDSETUP, OF(0))    |
                EMIF_FMKS(CECTL, TA, OF(2))         |
                EMIF_FMKS(CECTL, RDSTRB, OF(8))     |
                EMIF_FMKS(CECTL, MTYPE, ASYNC8)     |                                          /*  32位异步 */
                EMIF_FMKS(CECTL, RDHLD, OF(2)),                                                /*  CECTL2 = 0x2208822 */
		
		        EMIF_FMKS(CECTL, WRSETUP, OF(2))    |
                EMIF_FMKS(CECTL, WRSTRB, OF(10))    |
                EMIF_FMKS(CECTL, WRHLD, OF(2))      |
                EMIF_FMKS(CECTL, RDSETUP, OF(2))    |
                EMIF_FMKS(CECTL, TA, OF(2))         |
                EMIF_FMKS(CECTL, RDSTRB, OF(10))    |
                EMIF_FMKS(CECTL, MTYPE, ASYNC32)    |                                        /* 32位异步 */  
                EMIF_FMKS(CECTL, RDHLD, OF(2)),                                              /* CECTL3 = 0x22a28a22 */
                
                EMIF_FMKS(SDCTL,SDBSZ,4BANKS)	    |
                EMIF_FMKS(SDCTL,SDRSZ,12ROW)	    |
                EMIF_FMKS(SDCTL,SDCSZ,8COL)	        |
                EMIF_FMKS(SDCTL,RFEN,ENABLE)	    |
                EMIF_FMKS(SDCTL,INIT,YES)	        |
                EMIF_FMKS(SDCTL,TRCD,OF(1))	        |
                EMIF_FMKS(SDCTL,TRP,OF(1))	        |                                         /*  SDCTL必须在SDEXT配置完后进行设置 */ 
                EMIF_FMKS(SDCTL,TRC,OF(6)),                                                   /* SDCTL = 0x55116000 */                          
                        
                EMIF_FMKS(SDTIM, CNTR, OF(0))       |
                EMIF_FMKS(SDTIM, PERIOD, OF(1562)),                                         /* SDTIM = 0x0000061A */
        
		        EMIF_FMKS(SDEXT, WR2RD, OF(0))      |
                EMIF_FMKS(SDEXT, WR2DEAC, OF(2))    |
                EMIF_FMKS(SDEXT, WR2WR, OF(1))      |
                EMIF_FMKS(SDEXT, R2WDQM, OF(1))     |
                EMIF_FMKS(SDEXT, RD2WR, OF(0))      |
                EMIF_FMKS(SDEXT, RD2DEAC, OF(1))    |
                EMIF_FMKS(SDEXT, RD2RD, OF(0))      |
                EMIF_FMKS(SDEXT, THZP, OF(2))       |
                EMIF_FMKS(SDEXT, TWR, OF(1))        |
                EMIF_FMKS(SDEXT, TRRD, OF(0))       |
                EMIF_FMKS(SDEXT, TRAS, OF(4))       |
                EMIF_FMKS(SDEXT, TCL, OF(1))                /* SDEXT = 0x000A8529 */
                
        };
        
        /* Initialize EMIF */
        EMIF_config(&MyEMIFcfg0);
}        

/********************************************************************************\
\*DEC6713_init()	-Initialize DEC6713 board.
\*Parameters: NO.
\*		
\*Return:No.
\********************************************************************************/

void set_PLL()
{
   /* Initialize PLL Registers */ 
           
	/* Put PLL in bypass */
	PLL_bypass();
	PLLdelay(20);
	
		/* Reset PLL */
	PLL_reset();
	PLLdelay(20);
	
		/* Set main multiplier/divisor */
   	PLL_RSET(PLLM,8);						//50MHz*8=400MHz
   	PLL_RSET(PLLDIV0,PLL_PLLDIV0_RMK(1,0));		//400MHz/1=400MHz
   	PLL_RSET(OSCDIV1,PLL_OSCDIV1_RMK(1,0));		//50MHz/1=50MHz(CLKOUT3)
   
   		/* Set DSP clock */
   	PLL_RSET(PLLDIV1,PLL_PLLDIV1_RMK(1,1));		//400MHz/2=200MHz
   	PLLdelay(20);
   
    	/* Set peripheral clock */
    PLL_RSET(PLLDIV2,PLL_PLLDIV2_RMK(1,3));		//400MHz/4=100MHz(CLKOUT2)
    PLLdelay(20);
    
    	/* Set EMIF clock */
    PLL_RSET(PLLDIV3,PLL_PLLDIV3_RMK(1,4));		//400MHz/5=80MHz(ECLKOUT)
    PLLdelay(20);
    
    	/* Take PLL out of reset */
    PLL_deassert();
    PLLdelay(1500);
    
    	/* Enalbe PLL */
    //PLL_enable();
    //PLLdelay(20);
     //PLL_CSR = 0x00000041;      //PLL使能
}


void DEC6713_init(void)
{
	              
    /* initialize emif */
    emif_init();
   
    /* set PLL */
    set_PLL();
    
}

/********************************************************************************\
\* End of DEC6713.C *\
\********************************************************************************/
void DEC6713_wait(Uint32 delay)
{
	 volatile Uint32 i, n;
	    
	 n = 0;
	 
	 for (i = 0; i < delay; i++)
	 {
	     n = n + 1;
	 }
}
    
    
    

⌨️ 快捷键说明

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