chenmr1 发表于 2010-7-21 21:09:16

求助:关于ADF4106,希望高手指点

准备做一个射频源,用的是ADF4106,VCO使用max275,环路是根据专用的软件计算的,原理图如下(http://cache.amobbs.com/bbs_upload782111/files_31/ourdev_569783.png
(原文件名:图片1.png)

控制是按Initialization Latch Method,程序按时序写,但不知道为什么锁不住,控制不了。希望高手帮忙找一下原因。
#include<c8051f040.h>
#define uchar unsigned char
#define uintunsigned int
#define ulongunsigned long
sbit   LE=P3^6;
sbit DATA=P3^5;
sbitCLK=P3^4;
sbit   CE=P3^3;
//void config(void);
unsigned long    R_reg=0x0000c8;
unsigned long    N_reg=0x019459;
unsigned long FUN_reg1=0x9F80d6;
unsigned long FUN_reg0=0x9F80d2;
unsigned long INIT_reg=0x9F80d3;

void config(void)
{
WDTCN=0X07;//关狗
WDTCN=0XDE;
WDTCN=0XAD;
SFRPAGE=0X0F;
XBR0=0X04;   //设置交叉开关
XBR1=0X00;
XBR2=0X40;
XBR3=0X00;
SFRPAGE=0X0F;
P3MDOUT=0xff;
SFRPAGE=0X0F;
CLKSEL=0X00;   //采用内部晶振24.5M,8分频
OSCXCN=0X00;   //
OSCICN=0X84;   //
}

void delay(unsigned int n)
{
unsigned int i;
for(i=2;i>0;i--)
    for(;n>0;n--);
}

void Write_ADF4106(ulong datas)
{
unsigned char i=0;
CLK=0;
LE=0;
DATA=0;
for(i=0;i<24;i++)
   {
   CLK=0;
   if((datas&0X800000)==0X800000)DATA=1;
      else DATA=0;
   CLK=1;
   datas =datas<<1;
   }
delay(100);      
   LE=1;      
}


void main(void)
{
      config();
      Write_ADF4106(INIT_reg);
      Write_ADF4106(FUN_reg0);
      Write_ADF4106(R_reg);
      Write_ADF4106(N_reg);
   while(1);   
}

mdj-fish 发表于 2010-7-22 06:25:33

请把芯片资料贴上来!现在能工作吗

bd2rae 发表于 2010-7-24 21:19:06

将低通滤波器的电容接在电阻后面试试,再将电通滤波器输出接载运放正输入端试试。

ibmx311 发表于 2010-10-6 01:43:20

频率太低

mj5lucky 发表于 2011-8-2 00:31:21

环路没搭好的话,锁不住
页: [1]
查看完整版本: 求助:关于ADF4106,希望高手指点