資源簡介
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分
- 上一篇:控件和界面測試用例 文本測試用例
- 下一篇:NUMECA并行計算教程
評論
共有 條評論