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

📄 dec6713.c

📁 这是一个在CCS平台下开发的一个IO通讯测试程序,可以当作参考.
💻 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_mcasp.h>
#include <csl_i2c.h>
#include <csl_emif.h>
#include <csl_pll.h>
#include <DEC6713.h>

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

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

void DEC6713_init()
{
	/* Initealize the board APIs */
	EMIF_Config MyEMIFcfg0={
		0x30								|
		EMIF_FMKS(GBLCTL,NOHOLD,DISABLE)	|
		EMIF_FMKS(GBLCTL,CLK1EN,DISABLE)	|
		EMIF_FMKS(GBLCTL,CLK2EN,ENABLE),
		
		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)		|
		EMIF_FMKS(CECTL,RDHLD,DEFAULT),
		
		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)     |
        EMIF_FMKS(CECTL, RDHLD, OF(2)),
        
        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)     |
        EMIF_FMKS(CECTL, RDHLD, OF(2)),
		
		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, ASYNC16)    |
        EMIF_FMKS(CECTL, RDHLD, OF(2)),
        
        EMIF_FMKS(SDCTL,SDBSZ,4BANKS)		|
        EMIF_FMKS(SDCTL,SDRSZ,11ROW)		|
        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))			|
        EMIF_FMKS(SDCTL,TRC,OF(6)),
        
        EMIF_FMKS(SDTIM, CNTR, OF(0))       |
        EMIF_FMKS(SDTIM, PERIOD, OF(1562)),
        
		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))
        };
        
	/* Initialize PLL Registers */         
		/* Put PLL in bypass */
	PLL_bypass();
	PLLdelay(20);
	
		/* Reset PLL */
	PLL_reset();
	PLLdelay(20);
	
		/* Set main multiplier/divisor */
   	PLL_RSET(PLLM,18);						//25MHz×18=450MHz
   	PLL_RSET(PLLDIV0,PLL_PLLDIV0_RMK(1,0));		//450MHz/1=450MHz
   	PLL_RSET(OSCDIV1,PLL_OSCDIV1_RMK(1,0));		//25MHz/1=25MHz(CLKOUT3)
   
   		/* Set DSP clock */
   	PLL_RSET(PLLDIV1,PLL_PLLDIV1_RMK(1,1));		//450MHz/2=225MHz
   	PLLdelay(20);
   
    	/* Set peripheral clock */
    PLL_RSET(PLLDIV2,PLL_PLLDIV2_RMK(1,3));		//450MHz/4=112.5MHz(CLKOUT2)
    PLLdelay(20);
    
    	/* Set EMIF clock */
    PLL_RSET(PLLDIV3,PLL_PLLDIV3_RMK(1,4));		//450MHz/5=90MHz(ECLKOUT)
    PLLdelay(20);
    
    	/* Take PLL out of reset */
    PLL_deassert();
    PLLdelay(1500);
    
    	/* Enalbe PLL */
    PLL_enable();
    PLLdelay(20);
   
   	/* Initialize EMIF */
    EMIF_config(&MyEMIFcfg0);
    
	/* Set CPLD registers to default state  */    
   	DEC6713_cpld_rset(DEC6713_CTL_REG,0);   	
      	
}
/********************************************************************************\
\*Uint8 DEC6713_cpld_rget()		-Read CPLD register。
\*Parameters:
\*		regnum: The related register.

\*Return: The related register value.
\********************************************************************************/
   	
   	/* Read CPLD register(8bits) */
	Uint8 DEC6713_cpld_rget(Int8 regnum)
	{
    	Uint8 *pdata;
    
    	/* Return lower 8 bits of register */
    	pdata = (Uint8 *)(DEC6713_CPLD_BASE + regnum);
    	return (*pdata & 0xff);
	}
/********************************************************************************\
\*Uint8 DEC6713_cpld_rset()		-Write CPLD register.
\*Parameters:
\*		regnum: The related register
\*		regval:To be writen register value.

\*Return: No.
\********************************************************************************/

	/* Write CPLD register(8bits) */
	void DEC6713_cpld_rset(Int8 regnum, Uint8 regval)
	{
	    Uint8 *pdata;
    
    	/* Write lower 8 bits of register */
    	pdata = (Uint8 *)(DEC6713_CPLD_BASE + regnum);
    	*pdata = (regval & 0xff);
	}
/********************************************************************************\
\*Uint8 DEC6713_wait()		-DEC6713 Delay function
\*Parameters:
\*		delay:Delay time.

\*Return:NO.
\********************************************************************************/
	/* Spin in a delay loop for delay iterations */
	void DEC6713_wait(Uint32 delay)
	{
	    volatile Uint32 i, n;
	    
	    n = 0;
	    for (i = 0; i < delay; i++)
	    {
	        n = n + 1;
	    }
    }
/********************************************************************************\
\* End of DEC6713.C *\
\********************************************************************************/

⌨️ 快捷键说明

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