#include "adi_initialize.h"
#include "gai.h"
#include <cdefBF512.h>
#include <ccblkfn.h>
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_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000025;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void delay(unsigned char i)
{
int a;
for(a=0;a<i;a++);
}
#include <cdefBF512.h>
void SPIinit(void)
{
*pSPI1_BAUD=30;
*pSPI1_FLG=0xFF20;
*pSPI1_CTL = 0x1001|CPHA| CPOL|SIZE;
*pSPI1_CTL = (*pSPI1_CTL | SPE);
}
int SPI1_byte_rw(unsigned int value)
{
int incoming=0;
while(!(*pSPI1_STAT & SPIF));
*pSPI1_TDBR = value;
while(*pSPI1_STAT & RXS)
incoming = *pSPI1_RDBR;
return(incoming);
}
#include <stdio.h>
#include <cdefBF512.h>
int main(void)
{
int tem_x[10];
int i;
i=0;
adi_initComponents();
Set_PLL(16,4);
Init_EBIU();
SPIinit();
delay(0xff);
*pSPI1_FLG &= FLG5;
delay(0xff);
SPI1_byte_rw(0xAAA0);
delay(0xff);
*pSPI1_FLG =0xFF20;
delay(0xff);
*pSPI1_FLG &= FLG5;
delay(0xff);
SPI1_byte_rw(0xCAA0);
*pSPI1_FLG = 0xFF20;
delay(0xff);
*pSPI1_FLG &= FLG5;
delay(0xff);
SPI1_byte_rw(0x9C38);
delay(0xff);
*pSPI1_FLG =0xFF20;
delay(0xff);
while(1)
{
*pSPI1_FLG &= FLG5;
delay(0xff);
if(i!=10)
{
tem_x[i++]=SPI1_byte_rw(0x0000);
}
else
i=0;
delay(0xff);
*pSPI1_FLG = 0xFF20;
delay(0xff);
}
}
这个是我写的BF512通过SPI1口与AD7327连接的小程序,然后AD采用连续工作模式,但是为什么我的AD采不进去值呢?