?? ad7656.c
字號:
#include "C6713.h"
#define N 1024
typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned char uchar;
#pragma DATA_SECTION(xmitbuf,"xmit_buf");
unsigned short xmitbuf[10];
#pragma DATA_SECTION(recvbuf,"recv_buf");
unsigned short recvbuf[10];
#pragma DATA_SECTION(Uads,"Uad_sample");
short Uads[4*N];
#pragma DATA_SECTION(Iads,"Iad_sample");
short Iads[4*N];
char xmit_char=0x59,recv_char=0x00;
unsigned short cnt=0;
unsigned short cntt=0;
unsigned short Nad=0;
void initemif(void);
void initPLL(void);
void initInterrupt(void);
void WriteAD9833(ushort a);
void initAD9833(void);
void Delay(short j);
void ddsout(uint freq_value);
void SWcontrol(ushort);
void initMcBSP0(void);
void initMcBSP1(void);
unsigned short VtoLogic(unsigned short value);
void ProcessTranData(void);
void ProcessRecvData(void);
void main()
{
initemif();
initPLL();
initInterrupt();
initMcBSP1();
initAD9833();
freq=50*N;
ddsout(freq);
ProcessTranData();
(*(int *)SPCR0) |=0x00020000;
initMcBSP0();
*(short *)SWC=0xffff;
while(1)
{
}
}
//EMIF初始化
void initemif(void)
{
*(int *)GBLCTL=0x00000078;
*(int *)CECTL0=0x31b31f13;
*(int *)CECTL1=0x31b30613;
*(int *)CECTL2=0x31b30613;
*(int *)EMIF_SDRAMCTL = 0x53115000; /* SDRAM control */
*(int *)EMIF_SDRAMTIM = 0x00000578; /* SDRAM timing (refresh) */
*(int *)EMIF_SDRAMEXT = 0x000a8529; /* SDRAM Extension register */
}
//PLL初始化
void initPLL(void)
{
(*(int *)PLLCSR) &=0xfffffffe;
(*(int *)PLLCSR) |=0x00000008;
(*(int *)PLLM ) =0x00000010;
(*(int *)PLLDIV0) =0x00008000;
(*(int *)OSCDIV1) =0x00008001;
(*(int *)PLLDIV3) =0x00008001;
(*(int *)PLLDIV2) =0x00008003;
(*(int *)PLLDIV1) =0x00008000;
(*(int *)PLLCSR) &=0xfffffff7;
(*(int *)PLLCSR) |=0x00000001;
}
//中斷初始化
void initInterrupt(void)
{
CSR = CSR&0xfffffffe;
ISTP=0x800;
(*(int *)MUXH)=0x000001ac;
(*(int *)MUXL)=0x00070000;
(*(int *)EXTPOL)=0x0000000f;
ICR=0xffff;
IER=0x0c83;
CSR=CSR|1;
}
//延時程序
void Delay(short j)
{
short i;
for (i=0;i<j;i++)
{
}
}
//HPI用作通用IO口
void HPI_IO(void)
{
(*(int *)GPEN) =0x0000ffff;
(*(int *)GPDIR)=0x0000ff00;
(*(int *)GPVAL)&=0x00005fff;
}
//處理要發送的數據
void ProcessTranData(void)
{
unsigned short i=0x0000;
for (i=0;i<10;i++)
{
if (i==0)
xmitbuf[i]=0x0000;
else if (i==9)
xmitbuf[i] = 0xffff;
else if (xmit_char & (1<<(i-1)))
xmitbuf[i] = 0xffff;
else
xmitbuf[i] = 0x0000;
}
}
//AD中斷中斷服務程序
void interrupt adint(void)
{
IER &=0xff7f;
Iads[Nad]=(*(short *)AD);
Uads[Nad]=(*(short *)AD);
Nad++;
if(Nad%(4*N)==0)
{
Nad=0;
}
IER |=0x0080;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -