资源简介
完整的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;
- 上一篇:图像二值化 opencv 基本全局阈值法
- 下一篇:MP3电路图和pcb
相关资源
- 基于verilog的DDS设计
- uCOS-II_DDS_FFT
- DDS好的代码
- AT89S52控制DDS9850产生可调频的正弦波
- 基于FPGA的dds信号发生器代码
- DDS的FPGA实现
- VHDL正弦波发生器程序
- 基于DDS和MSP430的信号发生器设计
- 基于fpga的DDS信号发生器的设计
- ros2中文指南.rar
- 美国_环境保护署(EPA)_测试工况数据
- FPGA实现DDS正弦波、方波、三角波发生
- 基于FPGA的DDS波形发生器
- 基于AD9852的正弦信号发生器的设计与
- DAC0832产生三种波形DDS信号产生(测试
- 直接数字频率合成技术(DDS)
- 基于FPGA的DDS信号发生器
- 基于verilog的信号发生器
- 基于fpga的dds波形产生设计
- 基于VHDL编程的DDS设计_钟蔚杰.caj
- 基于VHDL dds正弦信号发生器dds正弦信
- 基于51单片机的DDS函数信号发生器的设
- 2001年全国大学生电子设计竞赛一等奖
- 基于DDS的扫频信号发生器
- DDS的ISE实现程序
- Vivado dds compiler6.0开发者手册
- AD9851 DDS数字频率合成器
- 用FPGA做DDS
- 在VS中使用DDS进行通信
- DDS verilog程序
评论
共有 条评论