打印
[射频芯片]

ADF4002无法锁定 万分紧急 麻烦大家帮帮忙看看

[复制链接]
2010|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大神咨询ADF4002的问题 无论如何无法锁定
情况是这样的一个ADF4002,用DDS给25KHZ的参考频率 VCO是一个15MHZ/V的 环路滤波器是使用的ADI软件设计的17.5M/V的环路滤波器
现在已经证明ADF4002的寄存器是可以写值进去的 因为把MUXOUT改成R DIVIDER OUT以后 在MUXOUT脚可以看到我的25KHZ方波
可是设置R,N以后烧写程序以后 VCO始终输出最高频率,无论如何无法锁定到我要的频率上 应该怎么办 各位大神帮我下 万分感谢
开始以为是51单片机和ADF4002的电平不兼容 后来查了手册发现他两的高低电平是可以兼容的 而且事实也证明可以对ADF4002编程 但是无论如何不锁定
上传电路图还有程序:

#include "reg52.h"





sbit ADF4002_CE           = P0^5;   

sbit ADF4002_CLK            = P1^6;        

sbit ADF4002_DATA            = P1^5;        

sbit ADF4002_LE            = P0^4;         

sbit ADF4002_MUXOUT = P0^6;        




void delay_us (int length)

{

          while (length >0)

              length--;

}






void Send_Data(unsigned long int datanumber)

{

            unsigned long int temp;

    unsigned int i;

            temp=0x800000;         

  ADF4002_DATA=0;

  delay_us(1);

          ADF4002_CLK = 0;         

          ADF4002_LE=0;            

  delay_us(1);

          for(i = 0; i < 24; i++)   

          {

                    if(datanumber & temp)

                    {

                              ADF4002_DATA = 1;     

                    }

                    else

                    {

                              ADF4002_DATA = 0;

                    }

                    delay_us(1);

                    ADF4002_CLK = 1;        

                    delay_us(1);

                    temp >>= 1;         

                    ADF4002_CLK = 0;        

          }

          ADF4002_DATA=0;

          delay_us(1);

          ADF4002_LE=1;                 

          delay_us(1);

          ADF4002_LE=1;

}






void ADF4002_Control(unsigned long int REF_divide,unsigned long int N_divide)

{

          unsigned long int m,n;

          Send_Data(0x0d8083);        //0001 1111 1000 0000 1001 0011

          delay_us(200);

          Send_Data(0x0d8082);            // 0001 1111 1000 0000 1001 0010

          delay_us(200);

          m=REF_divide<<2;      

          Send_Data(0x000000|m);  // 0000 0000 **** **** **** **00

          delay_us(200);

          n=N_divide<<8;      

          Send_Data(0x000001|n);  // 000* **** **** **** 0000 0001

          delay_us(200);


}




void ADF4002_Init(void)

{

    ADF4002_LE=0;

            ADF4002_CLK=0;

            ADF4002_DATA=0;

}

相关帖子

沙发
grasswolfs| | 2014-5-14 14:15 | 只看该作者
都是用集成的4350的,这个不清楚,帮你顶吧

使用特权

评论回复
板凳
xfz| | 2014-5-15 21:03 | 只看该作者
输入参考的隔值电容太小了

使用特权

评论回复
地板
PowerAnts| | 2014-5-18 19:34 | 只看该作者
PLL无法锁定,除了找软件的原因,还要查环路滤波器带宽,VCO的范围够不够

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝