📄 init.c
字号:
#include "ccblkfn.h"
#include "sysreg.h"
#include <sys\exception.h>
#include <cdefBF533.h>
#include "Sys.h"
#include "CPLD.h"
#include "regdef.h"
#include "flashcpld.h"
#include "Init.h"
extern void Init_EBIU(void);
extern void Init_PLL(void);
extern void Init_SDRAM(void);
extern void Init_PPI(void);
extern void Init_PPIDMA(void);
extern void Init_Timer(void);
extern void Init_Flash(void);
EX_INTERRUPT_HANDLER(DMA0_PPI_ISR);
extern CtrlRegFlashAPortA myCtrlRegFlashAPortA;
extern PLLCTRL mypllctrl;
extern PLLDIV myplldiv;
extern PPICtrl myppictrl;
extern DMA0Config ppidmacfg;
extern TIMERxCONFIG mytimer1cfg;
extern TIMERxCONFIG mytimer2cfg;
extern unsigned char DisplayBuffer[262][960];
/*************************************************************************/
void Init_PLL(void)
{
int iIMASK_Value;
sysreg_write(reg_SYSCFG, 0x32); //Initialize System Configuration Register
*pPLL_DIV = 0x0008;
*pPLL_LOCKCNT = 0x0200; // time for PLL to stabilize
*pPLL_CTL = 0x2c00; // set VCO/CLKIN = 22
*pSIC_IWR = 0x00000001; // enable only PLL wakeup interrupt
iIMASK_Value = cli(); // disable interrupts
idle(); // wait for PLL wakeup interrupt
sti(iIMASK_Value);
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
}
void Init_CPLD(void)
{
int i;
*pCtrlReg1 = 0x02;
for(i = 0;i <10000;i++);
*pCtrlReg2 = 0x03; //for ver3
//*pCtrlReg2 = 0x00; //for ver2
for(i = 0;i <10000;i++);
}
/***********************************************************************/
void Init_PPI(void)
{
*pPPI_DELAY = 0xcb;//106 cycle delay before writing out data
*pPPI_COUNT = 959;//960 samples per line
myppictrl.PPICtrlBits.dlen = 0;//data length is 8bits
myppictrl.PPICtrlBits.fldsel = 0;//external trigger
myppictrl.PPICtrlBits.packen = 1;//disable packing mode
myppictrl.PPICtrlBits.polc = 0;//do not invert PPI_CLK
myppictrl.PPICtrlBits.pols = 1;//invert PPI FS
myppictrl.PPICtrlBits.portcfg = 1;//use 2 or 3 frame syncs
myppictrl.PPICtrlBits.portdir = 1;//transmit mode(output)
myppictrl.PPICtrlBits.porten = 0;//disable now
myppictrl.PPICtrlBits.skipen = 0;//skipping disabled
myppictrl.PPICtrlBits.skipeo = 0;//skip odd-numbered elements,do not care
myppictrl.PPICtrlBits.xfrtype = 3;//output mode
*pPPI_CONTROL = myppictrl.PPICtrlValue;//Generic 3-sync mode
}
void Init_PPIDMA(void)
{
*pDMA0_START_ADDR = DisplayBuffer;
*pDMA0_X_COUNT = 960/2;
*pDMA0_X_MODIFY = 2;
*pDMA0_Y_COUNT = 262;
*pDMA0_Y_MODIFY = 2;
ppidmacfg.DMA0ConfigBits.dien = 0;
ppidmacfg.DMA0ConfigBits.disel = 0;
ppidmacfg.DMA0ConfigBits.dma2d = 1;//two dimensional dma
ppidmacfg.DMA0ConfigBits.dmaen = 0;//disable now
ppidmacfg.DMA0ConfigBits.flow = 0x1;//autobuffer mode
ppidmacfg.DMA0ConfigBits.ndsize = 0;
ppidmacfg.DMA0ConfigBits.restart = 1;//discard dma fifo
ppidmacfg.DMA0ConfigBits.wdsize = 0x01;//transfers 16bits
ppidmacfg.DMA0ConfigBits.wnr = 0;//memory read operation
*pDMA0_CONFIG = ppidmacfg.DMA0ConfigValue;//Autobuffer mode, 2D, 16-bit transfers, Tx
}
void Init_Timer(void)
{
*pTIMER1_PERIOD = 1224;
*pTIMER1_WIDTH = 5;
mytimer1cfg.TIMERxCONFIGBits.tmode = 0x1;
mytimer1cfg.TIMERxCONFIGBits.clksel = 1;
mytimer1cfg.TIMERxCONFIGBits.tinsel = 1;
mytimer1cfg.TIMERxCONFIGBits.emurun = 0;
mytimer1cfg.TIMERxCONFIGBits.errtype = 0x0;
mytimer1cfg.TIMERxCONFIGBits.irqena = 0;
mytimer1cfg.TIMERxCONFIGBits.periodcnt= 1;
mytimer1cfg.TIMERxCONFIGBits.togglehi = 0;
mytimer1cfg.TIMERxCONFIGBits.outdis = 0;
mytimer1cfg.TIMERxCONFIGBits.pulsehi = 0;
*pTIMER1_CONFIG = mytimer1cfg.TIMERxCONFIGValue;
*pTIMER2_PERIOD = 320688;
*pTIMER2_WIDTH = 3672;
mytimer2cfg.TIMERxCONFIGBits.tmode = 0x1;
mytimer2cfg.TIMERxCONFIGBits.clksel = 1;
mytimer2cfg.TIMERxCONFIGBits.tinsel = 1;
mytimer2cfg.TIMERxCONFIGBits.emurun = 0;
mytimer2cfg.TIMERxCONFIGBits.errtype = 0x0;
mytimer2cfg.TIMERxCONFIGBits.irqena = 0;
mytimer2cfg.TIMERxCONFIGBits.periodcnt= 1;
mytimer2cfg.TIMERxCONFIGBits.togglehi = 0;
mytimer2cfg.TIMERxCONFIGBits.outdis = 0;
mytimer2cfg.TIMERxCONFIGBits.pulsehi = 0;
*pTIMER2_CONFIG = mytimer2cfg.TIMERxCONFIGValue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -