极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18915|回复: 3

用arduino开发锁相环电路芯片ADF4351,做35M-----4.4G信号发生器

[复制链接]
发表于 2017-1-16 23:04:21 | 显示全部楼层 |阅读模式
本帖最后由 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:
  
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2017-1-18 14:56:45 | 显示全部楼层
   怎么没有图片 ?
  加上液晶屏幕或者数码管就更好了!直接按键输出频率,然后就输出,就可以成为简单的信号发生器了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 10:58:21 | 显示全部楼层
又重复运行了这个程序,adf4351电路板最好单独供电,否则因为3.3V电源问题导致不能正常工作,既不能频率锁定。下面是正常工作的图。设置了100M信号输出,5个寄存器的设置如下:
//100M信号输出
adf4351.WriteRegister(0x00580005);
  adf4351.WriteRegister(0x00DC803C);
  adf4351.WriteRegister(0x000004B3);
  adf4351.WriteRegister(0x00004E42);
  adf4351.WriteRegister(0x08008011);
  adf4351.WriteRegister(0x00400000);



然后用示波器来观察100M波形,效果还不错。示波器虽然是带宽是150M(购买时120M免费升级到150),通常惯例是示波器的带宽是所测信号的3-5倍,但是实际上我用150M的示波器测量100M的正弦波,效果也还可以,估计就是信号衰减较大,测出的电压峰值不一定准。从示波器上看,ADF4351电路板输出的100M信号比较干净,无杂波。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 11:07:42 | 显示全部楼层
    电路板只要能使用SPI的都可以,这里是用arduino,简单方便。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 17:15 , Processed in 0.040690 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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