搜索
查看: 7212|回复: 14

关于HMC833LP6GE的问题

[复制链接]

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2012-11-22 15:09:46 | 显示全部楼层 |阅读模式
跪求高手帮忙分析分析下面的程序中对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);
}
回复

使用道具 举报

18

主题

391

帖子

3007

积分

论坛元老

Rank: 8Rank: 8

积分
3007
发表于 2012-11-22 15:37:12 | 显示全部楼层

RE:关于HMC833LP6GE的问题

么得研究过这个芯片。一直在用ADF4350
回复 支持 反对

使用道具 举报

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
 楼主| 发表于 2012-11-23 09:03:56 | 显示全部楼层

RE:关于HMC833LP6GE的问题

出现这种情况是程序问题呢还是硬件问题呢?
回复 支持 反对

使用道具 举报

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
 楼主| 发表于 2012-11-24 17:36:30 | 显示全部楼层

RE:关于HMC833LP6GE的问题

现在重新配置了寄存器,有所改进,一下是重新调试后的配置,但还是有问题,出来的频率只锁住了一瞬间,然后就继续跳,希望大家都发表发表意见和看法!晚辈先行拜谢!
Write_REG(0x00,0x000000); //如果电源开电时间超过了250US,要进行一次软件复位
        Write_REG(0x00,0x000020); //从复位状态释放出来
    Write_REG(0x0F,0x0000c1); //锁定指示配置,设置为一直使能,并输出为锁定指示
        Write_REG(0x02,0x000014); //设定R=20值
        Write_REG(0x06,0x2307fa); //选择整数模式
///        Write_REG(0x06,0x230f7a); //选择小数模式
//        Write_REG(0x09,0x1fffff); //设置电荷泵的电流为2.54mA,补偿电流为235UA
        Write_REG(0x09,0x000fff); //设置电荷泵的电流为1.2mA,补偿电流为300uA
        Write_REG(0x0a,0x000005);
        Write_REG(0x0b,0x0f8861);
//        Write_REG(0x11,0x007fff);
        Write_REG(0x05,0x000f88); //配置VCO_01
        Write_REG(0x05,0x00e110); //配置VCO_02  2分频
        Write_REG(0x05,0x002898); //配置VCO_03  不倍频
        Write_REG(0x05,0x000000); //清楚VCO寄存器的地址
        Write_REG(0x03,0x00080c); //频率为1030,是由2060二分频,刚好能被整除 ,为整数分频的N
//        Write_REG(0x04,0x000000); //小数分频的N
回复 支持 反对

使用道具 举报

792

主题

3150

帖子

11万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
116747
发表于 2012-11-24 17:46:15 | 显示全部楼层

RE:关于HMC833LP6GE的问题

这个问题与硬件和软件都有关系,软件算法不对和环路电路参数不正确都有可能引起。
回复 支持 反对

使用道具 举报

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
 楼主| 发表于 2012-11-27 08:38:21 | 显示全部楼层

RE:关于HMC833LP6GE的问题

可不可以请帮忙看看我程序哪儿有问题呢?我调试了很久都还是没什么进展,主要是在调试电荷泵的值!谢谢!
回复 支持 反对

使用道具 举报

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
 楼主| 发表于 2012-11-29 09:14:48 | 显示全部楼层

回复:关于HMC833LP6GE的问题

现在出现了假锁,是怎么回事啊?就是明明没有锁定却有锁定指示输出,且输出正确!希望各位大侠给点意见啊。。。。。
回复 支持 反对

使用道具 举报

4

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
 楼主| 发表于 2012-12-6 12:16:39 | 显示全部楼层

回复:关于HMC833LP6GE的问题

问题解决,是硬件问题
回复 支持 反对

使用道具 举报

0

主题

7

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2012-12-29 15:23:53 | 显示全部楼层

RE:关于HMC833LP6GE的问题

你这寄存器配置的根本就不对啊 !
回复 支持 反对

使用道具 举报

0

主题

7

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2012-12-29 15:24:38 | 显示全部楼层

RE:关于HMC833LP6GE的问题

你这寄存器配置的根本就不对啊 !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-5-9 08:17 , Processed in 0.075683 second(s), 9 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表