xxiecauc 发表于 2014-5-11 13:29

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

各位大神咨询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]
查看完整版本: ADF4002无法锁定 万分紧急 麻烦大家帮帮忙看看