📄 setupdsp.c
字号:
#include "SetupDSP.h"
//#include "interrupt.h"
//#include "TestDevice.h"
//#include "cs4955.h"
#include "SetupPLL.h"
//#include "SetupFlash.h"
#include "syscfg.h"
//#include "types.h"
#include "define.h"
/*
int ExceptionWork(void* pParam)
{
int nException;
nException = ((UBYTE)(UDWORD)pParam) << 16;
errno = DEVICE_SOFT_EXP;
nException |= DEVICE_SOFT_EXP;
//处理软件异常
ProcessSystemState(nException);
return 1;
}
*/
/*
void Default_ISR(void* pParam)
{
//加系统出错处理
WorkQAdd(ExceptionWork,pParam);
}
*/
//设置SDRAM-32m
void SetupSDRAM()
{
#define SDRAM_SCK1E (1<<1)
#define SDRAM_SCTLE (1 << 0)
#define SDRAM_CL (3 << 2)
#define SDRAM_PASR (3 << 4)
#define SDRAM_TRAS (3 << 6)
#define SDRAM_TRP (3 << 11)
#define SDRAM_TRCD (2 << 15)
#define SDRAM_TWR (3 << 19)
#define SDRAM_PUPSD (1 << 21)
#define SDRAM_PSM (0 << 22)
#define SDRAM_PSSE (0 << 23)
#define SDRAM_SRFS (0 << 24)
#define SDRAM_EBUFE (0 << 25)
#define SDRAM_FBBRW (0 << 26)
#define SDRAM_EMREN (1 << 28)
#define SDRAM_TCSR (1 << 29)
#define SDRAM_CDDBG (0 << 30)
#if SDRAM_INIT_EN && (!RUN_IN_EZKITS)
//if((*pEBIU_SDSTAT) & SDRS)
{
//我们的SDRAM mt48lc8m16a2 运行在SYS_CLOCK,4096 row
//RDIV= (fSCLK*tREF)/NRA - (tRAS+tRP) = (SYS_CLOCK /1000) * 64ms /4096 -(tRAS + tRP)
int dwSDGCTL;
*pEBIU_SDRRC = (SYS_CLOCK/1000)*64/(4096) - ((SDRAM_TRAS >> 6) + (SDRAM_TRP >> 11));
asm("ssync;");
//SDRAM为8*16M bits,挂在bank 0,column width = 9bits
//注意,因SDRAM为16bit,故SDRAM的存取,我们只能按16bit进行存取
*pEBIU_SDBCTL = 0x13;// 9bit column ,32mbyte
asm("ssync;");
// *pEBIU_SDGCTL = 0x0091998D;
dwSDGCTL = SDRAM_SCTLE | SDRAM_SCK1E|SDRAM_CL | SDRAM_PASR | SDRAM_TRAS | SDRAM_TRP | SDRAM_TRCD |\
SDRAM_TWR | SDRAM_PUPSD | SDRAM_PSM | SDRAM_PSSE | SDRAM_SRFS | SDRAM_EBUFE |\
SDRAM_FBBRW | SDRAM_EMREN | SDRAM_TCSR | SDRAM_CDDBG;
*pEBIU_SDGCTL = dwSDGCTL;
asm("ssync;");
}
#endif//SDRAM_INIT_EN
}
/*
// 函数名称: SetupEBIU
// 函数说明: 设置EBIU
// 返回值 : void : 无
*/
void SetupEBIU()
{
/************************************************
ASYNC 0: 挂2MB Flash,地址空间从0x2000,0000 --- 0x2020,0000
*************************************************/
//*pEBIU_AMBCTL0 = 0x0000FFC0;
//*pEBIU_AMGCTL = 0x00F2;
*pEBIU_AMBCTL0 = 0xFFC0FFC0;
*pEBIU_AMBCTL1 = 0xFFC0FFC0;
//*pEBIU_AMGCTL = 0x00B6;//0,1,2
*pEBIU_AMGCTL = 0x00F8;//0,1,2,3, --16bit
}
void SetupDSP()
{
//SetupPLL(CORE_CLOCK/EXTERN_CLOCK,CORE_CLOCK/SYS_CLOCK);
SetupEBIU();
SetupSDRAM();
// SetupCS4955();
// SetupInterrupt();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -