/********************************************************
*
*   北京四维卓信电子有限公司
* 
*  【OpenADSP开源社区】
*
********************************************************/
#include <cdefBF518.h>	
#include <ccblkfn.h>
#include "cpld.h"
unsigned char buff_w[512];
unsigned char buff_r[512];
void Init_SDRAM(void)
{
	*pEBIU_SDRRC = 0x00000817;	
	*pEBIU_SDBCTL = 0x00000025;	
	*pEBIU_SDGCTL = 0x0091998d;
	ssync();														
}
void Init_EBIU(void)
{
	*pEBIU_AMBCTL0	= 0x7bb07bb0;
	*pEBIU_AMBCTL1	= 0xffc07bb0;
	*pEBIU_AMGCTL	= 0x000f;
}
void Set_PLL(int pmsel,int pssel)
{
	int new_PLL_CTL;	
	*pPLL_DIV = pssel;
	asm("ssync;");
	new_PLL_CTL = (pmsel & 0x3f) << 9;		
	*pSIC_IWR |= 0xffffffff;
	if (new_PLL_CTL != *pPLL_CTL) 
	{
		*pPLL_CTL = new_PLL_CTL;
		asm("ssync;");
		asm("idle;");
	}
} 
void init_port(void)
{
	*pPORTF_FER |= PF7;
	*pPORTF_MUX = 0;
	*pPORTG_FER |= PG12|PG13|PG14|PG15;
	*pPORTG_MUX =  0 ; 
	
	*pPORTG_FER	|= PG11;
    *pPORTG_MUX	|= 	(1<<12);	
    ssync();
}
void SPI_init(void)
{
	*pSPI0_BAUD=  2; 						//配置速率为1/4系统时钟  SPI速率 = SCLK/2*SPI_BAUD
	*pSPI0_FLG |=FLS1;  				//选择SPI0SEL2接口
	*pSPI0_CTL = 0x1001|CPHA| CPOL|EMISO; 	//配置模式为手动片选模式
	*pSPI0_CTL = (*pSPI0_CTL | SPE);	//使能SPI0接口	
}
void delay(void)
{
	int i;
	for(i=0;i<100000;i++);
}
int main()
{
	int i;
	Set_PLL(16,4);
	Init_EBIU();
	init_port();
	*pDEVICE_OE |=  PPI_SET0;
	*pDEVICE_OE |=  PPI_SET1;
	
	SPI_init();	
	while(1)
	{
		*pSPI0_FLG &= ~FLG1;			//将SPI0SEL2拉到0
		while(!(*pSPI0_STAT & SPIF));   //查看SPI0传输状态是否完成
		*pSPI0_TDBR = 0xff;      		//将数据送入SPI传输数据寄存器
		
		while(*pSPI0_STAT & RXS)		//查看SPI0传输状态是否有数据需要接收
		i = *pSPI0_RDBR; 				//读取数据
		*pSPI0_FLG |= FLG1;		
		delay();
	}
	while(1);		
}