本帖最后由 wjlht 于 2018-11-26 14:41 编辑
ADF4351是很实用的锁相环芯片,淘宝上有现成的电路板,100多一点,也可以自己买一块ADF4351芯片,自己再加几个外界电路就可以了,芯片一块28元,自己diy还是比较经济划算。我为了省事,买了一块,控制板用arduino。ADF4351锁相环芯片自带压控振荡器VCO,这点很方便,省得再单独做VCO,ADF4351输出频率35M-4.4G,可以说相当宽,业余爱好者可以用它做信号发生器,只需要对芯片的6个寄存器进行设置,就可以输出想要的频率,非常方便。笔者针对ADF4351的特点,做了arduino的库,贡献给大家。其实很简单,就是一个软spi接口,高位优先。想要输出不同的频率,只要参照ADF4351中文手册设置寄存器相应的值就可以了。
线路连接:
arduino ADF4351板
3.3v------------------------------3.3v
GND------------------------------GND
8----------------------------------CLK
9-----------------------------------DATA
10----------------------------------LE
程序如下,其中需要用到EF_ADF4351库,已附在后面。
#include <EF_ADF4351.h>
EF_ADF4351 adf4351(8,9,10);
void setup() {
adf4351.init();
//1000M信号输出
adf4351.WriteRegister(0x00580005);
adf4351.WriteRegister(0x00AC803C);
adf4351.WriteRegister(0x000004B3);
adf4351.WriteRegister(0x00004E42);
adf4351.WriteRegister(0x08008011);
adf4351.WriteRegister(0x00500000);
//125M信号输出
adf4351.WriteRegister(0x00580005);
adf4351.WriteRegister(0x00DC803C);
adf4351.WriteRegister(0x000004B3);
adf4351.WriteRegister(0x00004E42);
adf4351.WriteRegister(0x08008011);
adf4351.WriteRegister(0x00500000);
//62.5M信号输出
adf4351.WriteRegister(0x00580005);
adf4351.WriteRegister(0x00EC803C);
adf4351.WriteRegister(0x000004B3);
adf4351.WriteRegister(0x00004E42);
adf4351.WriteRegister(0x08008011);
adf4351.WriteRegister(0x00500000);
//200M信号输出
adf4351.WriteRegister(0x00580005);
adf4351.WriteRegister(0x00CC803C);
adf4351.WriteRegister(0x000004B3);
adf4351.WriteRegister(0x00004E42);
adf4351.WriteRegister(0x08008011);
adf4351.WriteRegister(0x00400000);
}
void loop() {
// put your main code here, to run repeatedly:
} |