📄 dec6713.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 + -