已回答假定已回答

ADF4355-2寄存器怎么控制?

西特乐 在 2016-3-28 詢問的問題
最後回覆由Benz於2016-4-8提供

我在编写C程序时候,用MUXOUT 口输出观察,发现总是没有输出。电路图我是按照官网上给的参考电路,发现CREG1, CREG2这两个引脚输出是低电平。之前这两引脚电平还是1.8V,芯片用了一段时间,就出现这样的情况,是不是ADF芯片烧了?一下是我的程序,求大神指点啊。

#include<reg52.h>

 

 

sbit clk = P1^4;

sbit dat = P1^5;

sbit le = P1^6;

 

 

 

 

//////////////延时100us//////////////

 

 

void Delay100us() //@12.000MHz

{

  unsigned char i, j;

 

 

  i = 2;

  j = 39;

  do

  {

  while (--j);

  } while (--i);

}

 

 

//////////////////\500us延时(用于频率更新)/////////

void Delay500us() //@12.000MHz

{

  unsigned char i, j;

 

 

  i = 6;

  j = 211;

  do

  {

  while (--j);

  } while (--i);

}

/////////////发送一个字节/////////////////

void send_data(unsigned long reg_set)

{

  unsigned char i;

  le = 0;

  Delay100us();

  clk = 0;

  Delay100us();

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

  {

  dat = (bit)(reg_set&0x80000000);

  Delay100us();

  clk = 1;

  Delay100us();

  clk = 0;

  reg_set <<=1;

  Delay100us();

  }

  le = 1;

  Delay100us();

}

///////////芯片初始化///////////////////

void ADF_init()

{

  send_data(0x0002041C); //寄存器12

  send_data(0x0061300B);  //寄存器11-------------固定值

  send_data(0x60C000BA); //寄存器10

  send_data(0x0200BCC9); //寄存器9

  send_data(0x102D0428); //寄存器8-------------固定值

  send_data(0x12000047); //寄存器7

  send_data(0x35C004F6); //寄存器6

  send_data(0x00800025); //寄存器5 -------------固定值

  send_data(0x1A0A0984); //寄存器4

  send_data(0x00000003); //寄存器3

  send_data(0x00000012); //寄存器2

  send_data(0x00000141); //寄存器1

  send_data(0x0020FA00); //寄存器0

}

////////ADF频率更新////////////////

void ADF_update()

{

  send_data(0x1A0A0994); //寄存器4

  send_data(0x00000012); //寄存器2 -------------固定值

  send_data(0x00000141); //寄存器1

  send_data(0x0000FA00); //寄存器0

  send_data(0x1A0A0984); //寄存器4

  Delay500us(); //等待时间

  send_data(0x0020FA00); //寄存器0

}

 

 

//////////////////

void main()

{

  ADF_init();

  ADF_update();

  while(1)

  {

 

  }

}

結果