微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > 关于HMC833LP6GE出现的问题

关于HMC833LP6GE出现的问题

时间:10-02 整理:3721RD 点击:
跪求高手帮忙分析分析下面的程序中对HMC833LP6GE的寄存器配置是否正确,此程序下载硬件调试没有出来程序中设置的频率,只有2分频VCO基本频率,没加程序的时候是2.55GMHz加上程序后是1.27GMHz

//说明:利用HMC833LP6CE二分频产生1030M频率,晶振是20M,鉴相频率是20M ,该程序为整数分频
#include <reg922.h>
#include<stdio.h>
#include "intrins.h"
sbit SEN=P0^0;
sbit SDI = P0^1;
sbit CLK = P0^2;
sbit SD_LD0=P0^3;
//函数声明
void PORT_INIT();
void Delay_us(unsigned int n);
void Write_REG(unsigned char ADD,unsigned long int WR_DAT);
unsigned long int  Read_REG(unsigned char ADD);
/****************************************/
void main()
{
// unsigned long int return_dat;
Delay_us(500);  //HMC833开机时间为250US,所以单片机工作要延时
Delay_us(500);
    PORT_INIT();
SEN=0;     //选择模式,如果首先是SEN的上升沿,就选择一个从机模式;如果首先是CLK的上升沿则选择多从机的模式
_nop_();
_nop_();
SEN=1;
_nop_();
_nop_();
Write_REG(0x00,0x000000); //如果电源开电时间超过了250US,要进行一次软件复位
Write_REG(0x00,0x000020); //从复位状态释放出来
    Write_REG(0x0F,0x0000c1); //锁定指示配置,设置为一直使能,并输出为锁定指示
Write_REG(0x02,0x000001); //设定R=1值
Write_REG(0x06,0x2027ca); //选择整数模式
// Write_REG(0x09,0x1fffff); //设置电荷泵的电流为2.54mA,补偿电流为235UA
Write_REG(0x09,0x0bcf3c); //设置电荷泵的电流为1.2mA,补偿电流为300uA
Write_REG(0x05,0x000b88); //配置VCO_01
Write_REG(0x05,0x006110); //配置VCO_02  2分频
Write_REG(0x05,0x002898); //配置VCO_03  不倍频
Write_REG(0x05,0x000000); //清楚VCO寄存器的地址
Write_REG(0x03,0x00006d); //频率为1030,是由2060二分频,刚好能被整除 ,为整数分频的N
// Write_REG(0x04,0x000000); //小数分频的N



    while(1)
{
   Delay_us(500);
                  
     if(SD_LD0==0)
  {
  Write_REG(0x00,0x000000); //如果电源开电时间超过了250US,要进行一次软件复位
  Write_REG(0x00,0x000020); //从复位状态释放出来
     Write_REG(0x0F,0x0000c1); //锁定指示配置,设置为一直使能,并输出为锁定指示
  Write_REG(0x02,0x000001); //设定R=1值
  Write_REG(0x06,0x2027ca); //选择整数模式
//  Write_REG(0x09,0x1fffff); //设置电荷泵的电流为2.54mA,补偿电流为235UA
  Write_REG(0x09,0x0bcf3c); //设置电荷泵的电流为1.2mA,补偿电流为300uA
  Write_REG(0x05,0x000b88); //配置VCO_01
  Write_REG(0x05,0x006110); //配置VCO_02  2分频
  Write_REG(0x05,0x002898); //配置VCO_03  不倍频
  Write_REG(0x05,0x000000); //清楚VCO寄存器的地址
  Write_REG(0x03,0x00006d); //频率为1030,是由2060二分频,刚好能被整除,为整数分频的N
//  Write_REG(0x04,0x000000); //小数分频的N
  }
  else;
}
}
void PORT_INIT()
{
  P0M1 = 0X08;
  P0M2 = 0X00;
}
/*延时函数
/****************************************************************************************/
void Delay_us(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
{
  _nop_();
}
}
/**************给HMC833寄存器写数据函数*************************/
void Write_REG(unsigned char ADD,unsigned long int WR_DAT)
{
    unsigned int m=0,j=0;
unsigned long int temp1=0x800000;
unsigned char temp2=0x20;
// SEN=0;
_nop_();
_nop_();
SEN=1;
SDI=0;
CLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
CLK=1;
for(m=0;m<6;m++)
    {
        CLK=1;
   _nop_();
   _nop_();
     if(( ADD&temp2)==0x0)
   SDI=0;
  else
   SDI=1;
  _nop_();
  CLK=0;
  _nop_();     
  temp2=temp2>>1;

   }
for(j=0;j<24;j++)
   {
   CLK=1;
  _nop_();
     if((WR_DAT&temp1)==0X0)
   SDI=0;
  else
   SDI=1;
  _nop_();
  CLK=0 ;
  _nop_();
  temp1=temp1>>1;
  
   }
CLK=1;
Delay_us(2);
CLK=0;
Delay_us(2);
CLK=1;
Delay_us(2);
CLK=0;
Delay_us(2);
SEN=0;
Delay_us(10);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top