天天

ADF4350设置频率函数【原创】

0
阅读(33038)
/*设置ADF4350频率函数*/
#define FOSC	10M
#define R	10
#define CHANNEL  100//KHz
#define FREQ    275000//275M
u8 Reg[6];
void setfreq(u32 freq)
{
	u8 div,div2,clk_div;
	u16 n,frac,mod;
	u32 fref1,fref2,fref;

	fref=FOSC/R;
	clk_div=(fref/125)+1;
        //---DIV
         if(freq<FREQ)
         {
          div=4;
          div2=16;
         }
         else if(freq<(FREQ*2))
         {
          div=3;
          div2=8;
         }
         else if(freq<(FREQ*4))
         {
          div=2;
          div2=4;
         }
         else if(freq<(FREQ*8))
         {
          div=1;
          div2=2;
         }
         else
         {
          div=0;
          div2=1;
         }
        //---MOD
	mod=(fref/div2/CHANNEL)
	if(mod<2)mod =2;
	else if(mod>4095) mod=4095;
        //---N&FRAC
	fref2=freq>>div;
        n=freq/fref2;
	fref1=freq-n*fref2;
	frac=fref1*mod/f2;
        //---REG
	Reg[0]=frac<<3;
	Reg[0]=(u32)n<<15;
	Reg[1]&=0xffff8007;
	Reg[1]|=(((u32)mod)<<3);
	Reg[2]&=0xff003fff;
	Reg[2]|=(((u32)R<<14);
	Reg[4]&=0xff800fff;
	Reg[4]|=(((u32)clk<<12);
	Reg[4]|=(((u32)div<<20);
	update_Reg(Reg);//更新寄存器
}

之前说了要发个设置频率的,最近有点忙,现在补上,有什么不对,大家指点下

有什么不明白的,也可以参考之前的几篇
过几天在发个AD8318的,呵呵,闪了