资源简介
完整的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
相关资源
- 数字频率合成dds正弦波基于FPGA的DDS产
- DAT DDS 磁带机DAT 72产品手册
- fpga DDS 信号发生器_v2
- tgaddsmax缩略图显示插件大全.7z
- 基于FPGA的双通道幅度相位频率可调节
- 基于stm32和ad9850的dds信号源
- DDS最终版(PCB\\原理图\\源程序)
- 利用DDS产生各种信号的源码
- 捷变频雷达信号代码
- 基于FPGA的任意波形发生器硬件系统设
- DDS简易信号发生器设计指导
- 于DDS技术的信号发生器的设计与实现
- OpenDDS Version 3.12中文版
- 基于DDS正弦波信号发生器
- 基于DDS的三相正弦波发生器
- vhdl dds 方波 正弦波 信号发生器
- 在FPGA中实现DDS波形可选,频率可调,
- 基于stm32f103c8的ad9854驱动程序
- verilog实现DDS
- DDS的原理及FPGA实现代码
- VHDL语言实现DDS的完整程序 Quartus仿真
- 基于Quartus II 的dds信号发生器.rar.rar
- 基于DDS技术的毫米波雷达收发器频综
- 毕业论文51系列单片机实现AD9850DDS信号
- 基于dds信号发生器的设计
- 基于fpga的dds信号发生器设计200680
- AD9959 stm32f103c8t6 驱动
- 信号发生器
- 基于Quartus II 的dds信号发生器
- FPGA_veriog_Quartus_DDS
评论
共有 条评论