已回答假定已回答

ADF4360锁相环芯片求助

leiest 在 2016-3-24 詢問的問題
最後回覆由hpkamen於2016-5-16提供

您好,我是一名在校大学生,最近因为教师的项目需求,需要制作一个2.4GHz的单频点的射频信号源,在查阅了各大公司的频率合成器后,最终选择了贵公司的ADF4360-0,目前我购买了贵公司的芯片以及相应的开发板,有4360-04350的开发板,其它的参考晶振什么的,我都准备好了,根据官网的资料和仿真工具,外围电路已确立的差不多。目前困扰我最大的就是有关于程序的!我想问以下几个问题:

1、代码怎么写,看了官网的通用模板,自己对单片机不太熟悉,不知道具体要更改通用代码的哪些数据!

2、我又看了ADF4360-2ADF4360-8的参考代码,根据它们两个的代码,写了4360-0的代码(下面有),但是相比较官网给的通用代码,我感觉我写出来的代码太简单了,是不是因为它们两个芯片的代码是基于开发板,所有只需要很简单的代码就能输出相应的频率。

3、单片机我想用的是C8051F300,不知道贵公司能否帮我写一个4360-0产生2.4GHz的信号,或者告诉我在通用参考代码里怎么改

备注:我写的用C8051F300控制4360-0产生2.4GHz参考代码,输入频率16MHz 鉴相频率8MHz  N:300 P:16 B:18 A:12    大神帮我看看啊

 

Description   :

Test condition:

Hardware: ADF4360-8 Evaluation Board

RF VCO Output Frequency:2400.00000MHz

PFD Frequency: 8000.00000KHz

REF IN Frequency: 16.00000MHz

RF Prescaler: 16/17

Internal Divide By 2 Selected

Output Divide By 2 Selected

N:300 P:16 B:18 A:12

*********************************************************************/

 

 

#include <stdio.h>

#include <C8051F300.h>

sbit DATA=P0^0;

sbit SCLOCK=P0^1;

sbit LATCH=P0^6;

sbit CE=P0^7;

 

 

void delay(int);

 

 

void main()

{

  unsigned long int registe0,registe1,registe2,temp1;

  int i;

 

 

  registe0=0x300009; //R Register

  registe1=0x4ff104; //C Register

  registe2=0xc01232; //N Register

 

  temp1=0x800000;

 

 

  CE=1; //Update R Latch, the writing order should be R, C, N

  SCLOCK=1;

  DATA=0;

  LATCH=0;

 

  for(i=0;i<24;i++)

  {

  if((temp1&registe0)==0x0)

  DATA=0;

  else

  DATA=1;

  SCLOCK=0;

  SCLOCK=1;

 

 

  temp1=temp1>>1;

  }

  temp1=0x800000;

  LATCH=1;

  LATCH=0;

 

 

  for(i=0;i<24;i++) //Update C Latch

  {

  if((temp1&registe1)==0x0)

  DATA=0;

  else

  DATA=1;

  SCLOCK=0;

  SCLOCK=1;

 

 

  temp1=temp1>>1;

  }

  temp1=0x800000;

  LATCH=1;

  LATCH=0;

 

 

  delay(5000); //interval between programming C and N register needs to be at least 5ms

 

 

  for(i=0;i<24;i++) //Update N Register

  {

  if((temp1&registe2)==0x0)

  DATA=0;

  else

  DATA=1;

  SCLOCK=0;

  SCLOCK=1;

 

 

  temp1=temp1>>1;

  }

  temp1=0x800000;

  LATCH=1;

  while(1);

}

 

 

void delay(int length)

{

while (length >=0)

    length--;

}

結果