• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: AD9852  DDS  

资源简介

完整的AD9852程序。。。。。。。。。。。 适合初学者,简单易懂。。。

资源截图

代码片段和文件信息

#include “main/main.h“
u8 ftw1[6]ftw2[6];
void delayUs(long t)
{
t = t / 3;
while(t --);
}
#define nop(t)  delayUs(t)
void delay_main(unsigned int mdelay_main) //延时子程序
{ unsigned int i;
for(;mdelay_main>0;mdelay_main--)
{ for(i=0;i<120;i++)
{;}
}


void set_freq(float xfloat y)
{
u8 k;
float ftwtemp;
ftw=(x*coeff)/200;
for(k=9;k>3;k--)//计算频率1的控制字
{
temp=floor(ftw/256);//取商
temp=ftw-temp*256;//取余
ftw1[k-4]=(u8)temp;//转换成十六进制单片机寄存器最高位对应频率控制字最低位
ftw/=256;
}
ftw=(y*coeff)/200;
for(k=9;k>3;k--)//计算频率2的控制字
{
temp=floor(ftw/256);//取商
temp=ftw-temp*256;//取余
ftw2[k-4]=(u8)temp;//转换成十六进制单片机寄存器最高位对应频率控制字最低位
ftw/=256;
}
// for(k=0;k<6;k++) //写频率控制字1
// *(                        (&dds1)    +k*256)=ftw1[k];
// for(k=0x00;k<0x06;k++)//写频率控制字2
// *(                        (&dds2)    +k*256)=ftw2[k];
//取最终的地址的内容 取地址   地址加i

//写频率控制字1  
*((&dds1)  )=ftw1[0];
*((&dds2)    )=ftw1[1];
*((&dds3)    )=ftw1[2];
*((&dds4)    )=ftw1[3];
*((&dds5)    )=ftw1[4];
*((&dds6)   )=ftw1[5];
//写频率控制字2
*((&dds7)  )=ftw2[0];
*((&dds8)    )=ftw2[1];
*((&dds9)    )=ftw2[2];
*((&dds10)    )=ftw2[3];
*((&dds11)    )=ftw2[4];
*((&dds12)   )=ftw2[5];
}
void Updata_Deltaword(void)

// u8 k;
unsigned char  deltaword[6]={0x000x800x000x000x000x00}; //40bit = 585.9khz
//for(k=0;k<6;k++) //写频率控制字1
//*(                        (&delta)    +k)=deltaword[k];
    //写48位斜率计数器值
*((&delta1)   )=deltaword[5];
*((&delta2)     )=deltaword[4];
*((&delta3)     )=deltaword[3];
*((&delta4)    )=deltaword[2];
*((&delta5)     )=deltaword[1];
*((&delta6)   )=deltaword[0];
}
void Updata_Ramprateword(void)
{
unsigned char  ramprateword[3]={0x000x750x30};     // 时间步进 现取100us 最大6990.506us
//写Ramp Rate寄存器的值
*((&ramp_rate1)  )=ramprateword[2];
*((&ramp_rate2)  )=ramprateword[1];
*((&ramp_rate3)  )=ramprateword[0];

}
void set_phase(u16 xu16 y)
{
u8 phase_word1[2]phase_word2[2];
phase_word1[1]=x%256;
phase_word1[0]=(x/256)%256;
phase_word2[1]=y%256;
phase_word2[0]=(y/256)%256;
//写相位值1
*((&phase1)  )=phase_word1[0];
*((&phase2)  )=phase_word1[1];
//写相位值2
*((&phase3)  )=phase_word2[0];
*((&phase4)  )=phase_word2[1];
// for(k=0;k<2;k++)
// *(                        (&phase1)    +k)=phase_word1[k];
//取最终的地址的内容 取地址   地址加i
// for(k=0;k<2;k++)
// *(                        (&phase2)    +k)=phase_word2[k];
}
void bpsk(void)
{
reset=1;nop(200);reset=0;
pll=0x14;//5倍频
osk=0x40;

评论

共有 条评论