zhenyifei 发表于 2013-4-4 23:32:16

AD9850如何调试才能输出方波?希望各位指点一二,谢谢

最近在玩AD9850,我是直接用网上别人的简单驱动程序,在BNC P11处可以用示波器测得很漂亮的正弦波,可是P12、P13处却测不到输出的方波,我是参照官方的Datasheet画的原理图,按照我对资料的理解,把P11输出的正弦波加到AD9850的15、16脚,经过芯片本身内置的高速比较器后,可以在13、14脚输出方波的,可是我的无论如何都没有方波输出,哎!!!伤心啊,求各位前辈给小弟指点一下,真诚地谢谢大家!!!!{:handshake:}


用别人的程序如下:

# include <reg52.h>
# include <stdio.h>
# include <intrins.h>
sbit ad9850_w_clk    =P0^2;//P2.2口接ad9850的w_clk脚/PIN7
sbit ad9850_fq_up    =P0^1;//P2.1口接ad9850的fq_up脚/PIN8
sbit ad9850_rest   =P0^0;//P2.0口接ad9850的rest脚/PIN22
//P1为8位数据口
//***************************************************//
//            ad9850复位(并口模式)               //
//---------------------------------------------------//
void ad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}
//***************************************************//
//            ad9850复位(并口模式)               //
//---------------------------------------------------//
void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
//w_clk信号
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
//fq_up信号
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
//***************************************************//
//          向ad9850中写命令与数据(并口)             //
//---------------------------------------------------//
void ad9850_wr_parrel(unsigned char w0,double frequence)
{
unsigned char w;
long int y;
double x;
//计算频率的HEX值
x=4294967295/100;//适合100M晶振
//如果时钟频率不为100MHZ,修改该处的频率值,单位MHz !!!
frequence=frequence/1000;
frequence=frequence*x;
y=frequence;
//写w0数据

AD9850_FQUD_CLR ;
      
    wdata=0x00 ;//写w0
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
    AD9850_WCLK_SET ;      
    AD9850_WCLK_CLR ;
      
    wdata=y>>24 ;//写w1
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
    AD9850_WCLK_SET ;
      
    AD9850_WCLK_CLR ;

   
    wdata=y>>16 ;//写w2
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
    AD9850_WCLK_SET ;
      
    AD9850_WCLK_CLR ;

   
    wdata=y>>8 ;//写w3
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
    AD9850_WCLK_SET ;
      
    AD9850_WCLK_CLR ;

    wdata=y>>0 ;//写w4
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
    AD9850_WCLK_SET ;
      
    AD9850_WCLK_CLR ;

   
    AD9850_FQUD_SET ;//移入使能
要产生1000hz的正弦
}
//***************************************************//
//                   测试程序1000Hz                  //
//---------------------------------------------------//
main()
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
//---------------------------------------------------//
//并行写1000Hz程序
ad9850_reset();
ad9850_wr_parrel(0x00,1000);
//---------------------------------------------------//
while(1){}
}

zhenyifei 发表于 2013-4-5 10:08:39

快沉了,自己顶一下
页: [1]
查看完整版本: AD9850如何调试才能输出方波?希望各位指点一二,谢谢