ADI 技术
直播中

贾桂林

7年用户 1505经验值
私信 关注
[问答]

ADF4002无论如何无法锁定

各位大神咨询ADF4002的问题 无论如何无法锁定
情况是这样的一个ADF4002,用DDS给25KHZ的参考频率 VCO是一个15MHZ/V的 环路滤波器是使用的ADI软件设计的17.5M/V的环路滤波器
现在已经证明ADF4002的寄存器是可以写值进去的 因为把MUXOUT改成R DIVIDER OUT以后 在MUXOUT脚可以看到我的25KHZ方波
可是设置R,N以后烧写程序以后 VCO始终输出最高频率,无论如何无法锁定到我要的频率上 应该怎么办 各位大神帮我下 万分感谢
上传电路图还有程序:

#include "reg52.h"




***it ADF4002_CE           = P0^5;     
***it ADF4002_CLK            = P1^6;         
***it ADF4002_DATA            = P1^5;         
***it ADF4002_LE            = P0^4;         
***it 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;
}

回帖(6)

张虎豹

2018-10-26 09:27:03
您好,您的问题已经提交给ADI相关专家,将邀请专家尽快回答您的问题。谢谢!
举报

周伟

2018-10-26 09:33:58
您好!
您使用的参考输入频率太低了,正常情况下应为20~300Mhz,如果是25kHz的话,有点太低了。建议您调试时先使用信号发生器产生20MHz或以上频率的方波,作为参考输入信号测试。对于通常检查和调试锁相环失所的方法,请见下面描述。
举报

周伟

2018-10-26 09:53:05
引用: 213123d 发表于 2018-10-26 06:52
您好!
您使用的参考输入频率太低了,正常情况下应为20~300Mhz,如果是25kHz的话,有点太低了。建议您调试时先使用信号发生器产生20MHz或以上频率的方波,作为参考输入信号测试。对于通常检查和调试锁相环失所的方法,请见下面描述。 ...

对于有输入而没有输出;输出为宽频范围内扫频;输出为稳定单一频率,但输出频率不是想要的输出频率。上面这三种常被问到的问题是锁相环仍处于失锁状态下的现象。对于处于失锁状态下锁相环电路的调试,可从硬件和软件两方面着手。
举报

周伟

2018-10-26 09:59:05
引用: 213123d 发表于 2018-10-26 07:11
对于有输入而没有输出;输出为宽频范围内扫频;输出为稳定单一频率,但输出频率不是想要的输出频率。上面这三种常被问到的问题是锁相环仍处于失锁状态下的现象。对于处于失锁状态下锁相环电路的调试,可从硬件和软件两方面着手。 ...

硬件方面,应该先测量锁相环芯片供电电压是否正常,如果是外部独立VCO,还应检查VCO供电电压是否正常。参考输入部分,可在锁相环REFin管脚使用示波器测量输入波形,确保参考输入信号正常进入REFin管脚,并应注意满足数据手册中REFin对输入频率(Input Frequency)和输入幅度(Input Sensitivity)的要求,一般参考输入除了对输入幅度有要求外,还对压摆率有要求,因此参考输入最好使用方波而不是正弦波。还应注意参考输入的方式,一般为交流耦合输入。在VCO输入,环路滤波器输出端口,可用示波器测量压控电压是否正常。对于锁相环芯片MUXOUT管脚可以帮助检测芯片状态,其中比较常用的是DLD(Digital Lock Detect),R Counter Output,N Counter Output。DLD当锁定时应为高电平。R Counter Output和N Counter Output用示波器测量应为窄脉冲信号,脉冲频率应为鉴相频率。环路滤波器可以使用ADIsimPLL软件,输入相关参数可以帮助用户设计出基本外围电路,使用方便,可以从ADI官方网站免费下载。
软件方面,需要注意的是寄存器写入顺序往往是要求的,需要参考数据手册中INITIALIZATION SEQUENCY章节。可以通过示波器检测写入时隙,与数据手册中进行对比检查。最后要检查的是寄存器设置值,评估板的软件往往可以在不连接评估板硬件的情况下独立使用,因此可以通过评估板软件帮助计算寄存器控制字。但有一点需要注意,在评估板软件给出寄存器控制字后,建议将此控制字与实际设计对比检查一下。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分