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

📄 init.c

📁 开发环境ADSP6++,EBF_561开发板所有源代码
💻 C
字号:
#include "Sys.h"
#include "../CPLD.h"
#include "regdef.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);


extern PPICtrl myppictrl;
extern DMA0Config ppidmacfg;
extern TIMERxCONFIG mytimer1cfg;
extern TIMERxCONFIG mytimer2cfg;

EX_INTERRUPT_HANDLER(DMA0_PPI_ISR);


void Init_EBIU(void)
{
	*pEBIU_AMBCTL0	= 0x7bb07bb0;
	*pEBIU_AMBCTL1	= 0x7bb07bb0;
	*pEBIU_AMGCTL	= 0x00ff;
}

void Init_SDRAM(void)
{
	*pEBIU_SDRRC = 0x00000817;	
	*pEBIU_SDBCTL = 0x00000013;
	*pEBIU_SDGCTL = 0x0091998d;	
}

void Init_CPLD(void)
{
	int i;
	*pLED = 0x00;
	for(i = 0;i <100000;i++);
	*pLED = 0xff;
	for(i = 0;i <100000;i++);
	*pCtrlReg2_S = 0x03;	//for ver3
	for(i = 0;i <10000;i++);
}

/***********************************************************************/
void Init_PPI(void)
{	
	*pPPI1_DELAY = 0xcb;//106 cycle delay before writing out data
	*pPPI1_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 		

	*pPPI1_CONTROL = myppictrl.PPICtrlValue;//Generic 3-sync mode
}

void Init_PPIDMA(void)
{
	//*pDMA1_1_START_ADDR = 0x8000;
*pDMA1_1_START_ADDR = DisplayBuffer;
	*pDMA1_1_X_COUNT = 960/2;
	*pDMA1_1_X_MODIFY = 2;
	*pDMA1_1_Y_COUNT = 262;
	*pDMA1_1_Y_MODIFY = 2;
	*pDMA1_1_PERIPHERAL_MAP = 0x1000;
	
	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

	*pDMA1_1_CONFIG = ppidmacfg.DMA0ConfigValue;//Autobuffer mode, 2D, 16-bit transfers, Tx
}

void Init_Timer(void)
{	
	*pTIMER10_PERIOD		= 1224;
	*pTIMER10_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;

	*pTIMER10_CONFIG = mytimer1cfg.TIMERxCONFIGValue;
	
	*pTIMER11_PERIOD		= 320688;
	*pTIMER11_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;
	
	*pTIMER11_CONFIG = mytimer2cfg.TIMERxCONFIGValue;	

}









⌨️ 快捷键说明

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