• 大小: 6KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: HMC704  STM32  

资源简介

STM32控制锁相环频综芯片HMC704的程序,注释详细,初始化生成一个频率,也可通过串口更改输出的频率,串口部分代码该文件没有。

资源截图

代码片段和文件信息

/*--------------------------------------------------------------------------------------
 *  Include
 *-------------------------------------------------------------------------------------*/
#include “spi.h“
#include “IO.h“
//unsigned char RFdivide=1;   //默认内部RF-divide2全部使能
unsigned char RFdivide=0;     //默认内部RF-divide2 仅仅大于4G时使能


 //double    mon_N_Datamon_N_fra_;
 //unsigned long  mon_N_intmon_N_fra;

/*HMC_STR  HMC = {
               .HMC_Init  = HMC_Init
               .write_LO1 = write_LO1
               .write_LO2 = write_LO2
               };

*/

void  LO1_SendByte(unsigned int  dat)
{
    unsigned int  ControlValue;
unsigned char i;

ControlValue = dat;

        for(i=0; i<32; i++)
{
CLR_SCL1;
                
if(0x80000000 == (ControlValue & 0x80000000))
                {
       GPIO_SetBits(GPIO_E_PORT GPIO_Pin_4); 
                       //SET_DAT1;
                }
else
                {
       GPIO_ResetBits(GPIO_E_PORT GPIO_Pin_4);   //Send zero to SDIO pin
                       //CLR_DAT1; 
                }

SET_SCL1;
ControlValue <<= 1;  //Rotate data
}
}


 static void LO1_HMC704_senddata(unsigned int  addrunsigned int  ddata)
{
      unsigned int  Txdat;
      Txdat=ddata*2+addr*33554432;    //发送数据:   data*2+addr*2^25
      SET_CS1;                          //使用SPI内部的使能线
      LO1_SendByte(Txdat);
      CLR_CS1;
}




void LO1_HMC704_Ctrl(unsigned int  Nintunsigned int  Nfraunsigned char RFDividMod)  //发送数据:   data*2+addr*2^25
{

   LO1_HMC704_senddata(0x010x000002);  // reg 01 0x000002 片选使能
    LO1_HMC704_senddata(0x020x000001);  // reg 02 0x000001  R值
  //  LO1_HMC704_senddata();           // reg 05 默认
    LO1_HMC704_senddata(0x060x30F4A);  // reg 06 0x30F4A  delta调制类型  小数模式B
    LO1_HMC704_senddata(0x070xD4D);  // reg 07 0xD4D 设定锁定监测的时间窗口
    if(RFDividMod==1)  //2分频使能
      LO1_HMC704_senddata(0x080x09BEFF);  // reg 08 使能寄存器8G/2=0:0x11837DFE  =1:0x11937DFE
    else
      LO1_HMC704_senddata(0x080x01BEFF);  // reg 08 使能寄存器8G/2=0:0x11837DFE  =1:0x11937DFE
    LO1_HMC704_senddata(0x090x593264);  // reg 090x593264 设定电荷泵电流和电荷泵偏置电流
 //   LO1_HMC704_senddata();            // reg 0B 默认设置
    LO1_HMC704_senddata(0x0F0x81 );    // reg 0F 0x81    HMC模式,LD锁定输出
    LO1_HMC704_senddata(0x03Nint);            // reg 03 N_int
    LO1_HMC704_senddata(0x04Nfra);            // reg 04 N_fra  


}

//LO1写频率函数

void write_LO1(unsigned char freState unsigned long Frebuff)
{
   double    FreDataIn;
   double    N_DataN_fra_;
   unsigned long  N_intN_fra;

   FreDataIn=Frebuff/2.0;   //环路2分频

    if(RFdivide==1)             //内部全部2分

评论

共有 条评论