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

📄 ad7656.c

📁 美国ADI公司AD7656器件的控制程序C代码
💻 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 + -