有用过AD9951的朋友请进,求指导,十万火急
[复制链接]
最近用89C52控制AD9951做一个DDS简易信号源,但是硬件做出来了,程序写上去没有波形输出啊,现在都不知道是怎么回事,求大神指导下小弟啊!
这是写的测试程序,输出10M:
#include<stdio.h> #include"reg52.h"
#define uint unsigned int #define uchar unsigned char
#define CFR2 0x01 #define FTW0 0x04
sbit DDS_SCLK=P3^1; sbit DDS_SDIO=P3^2; sbit DDS_UPDATA=P3^3;
void DDSWrite_Address(uint Data_address) //从最高位开始写 { uint Data; uchar i; Data=Data_address; for(i=7;i!=0;i--) { DDS_SCLK=0; DDS_SDIO=Data&0x80; Data=Data<<1; DDS_SCLK=1; } DDS_SCLK=0; } void DDSWrite_Data(uint Data_data)//从最高位开始写,写8位 { unsigned char i; uint Data; Data=Data_data; for(i=7;i!=0;i--) { DDS_SCLK=0; DDS_SDIO=Data&0x80; Data=Data<<1; DDS_SCLK=1; } } void DDS_WRITE(uint Frequence_DATA) { uint DATA; uint CFR2_DATA=0x0000a7; char j; uint TEMP_CFR2; uint TEMP_FTW0; DATA=Frequence_DATA; DDSWrite_Address(0x01);//送出CFR2寄存器地址 for(j=3;j!=0;j--)//送出要写入CF2寄存器的内容 { TEMP_CFR2=CFR2_DATA&0xff0000; CFR2_DATA=CFR2_DATA<<8; DDSWrite_Data(TEMP_CFR2); } DDS_UPDATA=1; DDS_UPDATA=0;//DDS发送一个UPDATA脉冲
DDSWrite_Address(FTW0);//写FTW0寄存器地址 for(j=4;j!=0;j--) { TEMP_FTW0=DATA&0xff000000; DATA=DATA<<8; DDSWrite_Data(TEMP_FTW0); } DDS_UPDATA=1; DDS_UPDATA=0;//DDS发送一个UPDATA脉冲 } void main() { DDS_UPDATA=0; while(1) { DDS_WRITE(0x06666666);//写10MHz } }
|