求助:关于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);
} 请把芯片资料贴上来!现在能工作吗 将低通滤波器的电容接在电阻后面试试,再将电通滤波器输出接载运放正输入端试试。 频率太低 环路没搭好的话,锁不住
页:
[1]