AD9851是美国模拟器件公司采用先进DDS直接数字频率合成技术生产的高集成度产品。AD9851是在AD9850的基础上,做了一些改进以后生成的具有新功能的DDS芯片。当系统时钟为180MHz时,在参考时钟输入端,只需输入30MHz的参考时钟即可。AD9851是由数据输入寄存器、频率/相位寄存器、具有6倍参考时钟倍乘器的DDS芯片、10位的模/数转换器、内部高速比较器这几个部分组成。其中具有6倍参考时钟倍乘器的DDS芯片是由32位相位累加器、正弦函数功能查找表、D/A变换器以及低通滤波器集成到一起。这个高速DDS芯片时钟频率可达180MHz,输出频率可达70MHz,分辨率为0.04Hz 。模块框图如下:

模块电路图如下:

电路主要由两部分电路构成:AD9851核心电路和7阶无源滤波电路。输出信号为两路互补正弦波信号和两路互补方波信号,同时采用SMA射频接口输出;AD9851芯片DDS输
出形式串联或并联用一个短路套在J2插针上选择,方便选择需要的程序实现不同形式输出。
    AD9851核心电路参考芯片手册上的应用电路设计。信号由+SV供电,在芯片的电源引脚焊接10uF钽电容和100nF贴片电容,用作电源去耦。系统采用同一块地,保持地的完整性,在信号频率较大时,减小地的阻抗。30MHz的有源晶振电路中,+5 V的供电电源添加二型滤波电路,减少电源对时钟信号的干扰。
    AD9851芯片内部的两路DAC是电流输出型的,输出电流可通过电阻R10调节Ⅰout=39.9/R10。本模块电路R10=3.9kΩ ,输出电流Ⅰout=10mA,Ⅰout1和Ⅰout2引脚并接一个100Ω电阻(R3、 R11)到地,所以AD9851的互补正弦波信号输出幅值Vout=Ⅰout×100=1V。可通过更换电阻Rio或电阻R3,  R11,得到需要输出的信号电压值。AD9851电流型输出转换成电压后经过7阶无源LC低通滤波,由于做了阻抗匹配,正弦波的最后输出电压为Vout/2=500mV,而方波输出直接串联电阻到射频头,占空比通过电位器RW1调节。

模块实物图:

左上角J1跳帽断开:并行模式(两排都要接)

合上:串行模式(只需使用D7,WCLK,FQUP,REST四个引脚)

左下角J3跳帽断开:输出幅值为I-R外接电位

合上:固定约1V输出

右上角J2跳帽断开:VD_P和VD_N引脚不产生方波

合上:产生方波

右下角两个排针:输出正弦波

左上角电位器:产生可变电位输出,调节方波的占空比(比较器的比较电位,也可通过跳帽选择VINN引脚外部电压控制)

另:本AD9851模块采用30MHz有源晶振,可倍频至180MHz。

右侧输出引脚:

VINP:比较器信号输入

VINN:比较器比较电位

GND:地

OUT:正弦波输出(通过70MHz低通滤波,使输出波形的信噪比更好)

GND:地

VD_N:方波1

VD_P:方波2

接线图(串行模式):

AD9851 |  Arduino

————————

GND |   GND

D7 |   5

WCLK |   2

FQUP |   3

REST | 4

VCC | VCC

网上只有C51的程序,看了一下程序,其实只要控制各个引脚的电平变化就行了(上个星期的课刚好讲到串行通信),按照C51的程序做简单的移植就可以用了;

程序:

#define ad9851_w_clk 2
#define ad9851_fq_up 3
#define ad9851_rest 4
#define ad9851_bit_data 5void setup() {pinMode(ad9851_w_clk, OUTPUT);pinMode(ad9851_fq_up, OUTPUT);pinMode(ad9851_rest, OUTPUT);pinMode(ad9851_bit_data, OUTPUT);pinMode(13, OUTPUT);digitalWrite(ad9851_w_clk, 0);digitalWrite(ad9851_fq_up, 0);digitalWrite(ad9851_rest, 0);digitalWrite(ad9851_bit_data, 0);Serial.begin(9600);Serial.println("init complete!");
}void loop() {ad9851_reset_serial();ad9851_wr_serial(0x01, 500);//0x01为开六倍频//ad9851_wr_serial(0x00, 500);//0x00为不开六倍频digitalWrite(13, 0);delay(500);digitalWrite(13, 1);delay(500);digitalWrite(13, 0);delay(500);digitalWrite(13, 1);delay(500);ad9851_reset_serial();ad9851_wr_serial(0x01, 2000);}//***************************************************//
//              ad9851复位(串口模式)               //
//---------------------------------------------------//
void ad9851_reset_serial()
{digitalWrite(ad9851_w_clk, 0);digitalWrite(ad9851_fq_up, 0);//rest信号digitalWrite(ad9851_rest, 0);digitalWrite(ad9851_rest, 1);digitalWrite(ad9851_rest, 0);//w_clk信号digitalWrite(ad9851_w_clk, 0);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);//fq_up信号digitalWrite(ad9851_fq_up, 0);digitalWrite(ad9851_fq_up, 1);digitalWrite(ad9851_fq_up, 0);
}
//***************************************************//
//          向ad9851中写命令与数据(串口)           //
//---------------------------------------------------//
void ad9851_wr_serial(unsigned char w0, double frequence)
{unsigned char i, w;long int y;double x;int bit_data;//计算频率的HEX值x = 4294967295 / 180; //适合180m晶振/180为最终时钟频率(或30m六倍频)//如果时钟频率不为180MHz,修改该处频率值,单位为MHzfrequence = frequence / 1000000;frequence = frequence * x;y = frequence;//写w4数据w = (y >>= 0);for (i = 0; i < 8; i++){bit_data = (w >> i) & 0x01;digitalWrite(ad9851_bit_data, bit_data);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);}//写w3w = (y >> 8);for (i = 0; i < 8; i++){bit_data = (w >> i) & 0x01;digitalWrite(ad9851_bit_data, bit_data);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);}//w2w = (y >> 16);for (i = 0; i < 8; i++){bit_data = (w >> i) & 0x01;digitalWrite(ad9851_bit_data, bit_data);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);}//w1w = (y >> 24);for (i = 0; i < 8; i++){bit_data = (w >> i) & 0x01;digitalWrite(ad9851_bit_data, bit_data);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);}//w0w = w0;for (i = 0; i < 8; i++){bit_data = (w >> i) & 0x01;digitalWrite(ad9851_bit_data, bit_data);digitalWrite(ad9851_w_clk, 1);digitalWrite(ad9851_w_clk, 0);}//移入使能digitalWrite(ad9851_fq_up, 1);digitalWrite(ad9851_fq_up, 0);
}

并行模式接线太麻烦就不写了XD

以上只是控制输出频率(注意写入顺序,相位控制及倍频控制字w0最后写入)。

关于相位控制字:

芯片的datasheet相位控制部分截取如下:

w0的高5位是信号的相位,2的5次方平分360度;

位2是掉电控制位1有效;

位1写0;

位0是6倍频控制位1有效。

例:

w0 = 0b00001001 = 0x09 //相位设置为11.25度,开启六倍频

w0 = 0b00010001 = 0x0B //相位设置为22.50度,开启六倍频

Arduino + AD9851 DDS信号模块 频率控制字和相位控制字写入相关推荐

  1. 浅谈DDS IP核之频率控制字与相位控制字

    1.概述 本文是用于记录vivado中DDS IP核输出任意频率,与任意相位的关键点,即频率控制字与相位控制字的设置. 2.参考文档 <pg141-dds-compiler> <基于 ...

  2. 基于FPGA的DDS直接数字频率合成器,频率和相位控制字可配置,在vivado2019.2平台中verilog开发.含testbench

    目录 1.算法概述 2.仿真效果 3.verilog程序 1.算法概述 DDS同DSP(数字信号处理)一样,也是一项关键的数字化技术.DDS是直接数字式频率合成器(Direct Digital Syn ...

  3. AD9851调试过程----相位设置、频率计算、控制字设置

    AD9851是ADI公司的一款DDS频率合成器,输出频率和相位可编程控制,内置10位DAC高速比较器,180MHz的时钟频率,8位并行数据接口,并行串行均可传输数据.下图是从Datasheet上截下来 ...

  4. 大一java实训报告1500字_从800字小作文,到3000字小论文你用了多久? | 校媒FM

    前不久,大四的学长.学姐刚结束被老师们不断"为难"的开题答辩,不少当事人直呼"太难了!". 一个熟悉的学姐是这样在朋友圈吐槽的:"老师提问得也太犀利了 ...

  5. C语言再学习 -- 位、字节、字、字长、字元的关系

    参看:字.字长.字节.位 位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本 的单位. 字节(Byte):一个字节由8个位组成 .它表示作为一个完整处理单位的8个二进制数码.现目前计 ...

  6. 华字后面配什么字比较好_涟字女孩取名字含义 带涟好名推荐

    带川字男孩取名三个字 五行属金宝宝名字 部首:丿 拼音:chuān 笔画:3 五行:金 寓意:传奇.流传.传送.记载,指子承父业.才高八斗.生生不息. 五行属金的宝宝名字 肃川 聚川 释川 钦川 鑫川 ...

  7. SCII控制字确切含义

    SCII控制字 十进制 代码 含义 00 NUL 空 01 SOH 标题开始 02 STX 正文开始 03 ETX 正文结束 04 EOT 传输结否 05 ENQ 询问 06 ACK 确认 07 BE ...

  8. 【微机原理与接口技术】具体芯片(1)并行接口8255A(2):控制字概述

    核心 对于一个多功能可编程接口芯片,我们要想使用它,必须 先确定需求,要用什么芯片去干什么 设置芯片的工作方式 然后再让芯片工作 至于设置的方式,当然是软件编程. 同时重点注意,例如8255A,它一次 ...

  9. js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...

    这是一个用vue.js对css操作完成的实例. 当然用了flex简单布局. 一.先创建一个html文件,记得添加vue库文件. 二.创建一盒容器vmdiv,用vue绑定它,测试vue绑定后的插入值te ...

最新文章

  1. linux mysql 5.0.45_RedHat糸列Mysql-5.0.45的安装
  2. android 画板菜单,Android画板实现
  3. Vue中的 computed 和 watch的区别
  4. 使用js 调用 google ads
  5. CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
  6. Active Learning: 一个降低深度学习时间,空间,经济成本的解决方案
  7. 面试中经常会被问到的70个问题
  8. 麦马计算机专业对化学的要求,2018麦克马斯特大学最新入学要求+热门专业全解析...
  9. 构建幸福婚姻需明白四件事
  10. 【转】php json_encode中文为空的解决办法
  11. php中好看的对话框面板,有关对话框的课程推荐10篇
  12. java实现微信H5支付和回调的Demo源码
  13. 卡在硬盘启动计算机,插硬盘启动卡死了,怎么办?电脑维修方法
  14. 无论夫妻还是情人,能陪你一生的男人,都有这个特征
  15. (附源码)计算机毕业设计SSM基于ETC用户的自驾游推荐系统
  16. 搭建 VuePress 站点必做的 10 个优化
  17. 计算机网络逻辑类故障实例,逻辑故障计算机网络论文
  18. ENVI BSQ转BIL或者BIP
  19. 青云QingCloud黄允松:关于云计算未来的三个预测
  20. JAVA 实现《泡泡堂基础版》游戏

热门文章

  1. MATLAB在线编辑网站及使用教程
  2. 便利贴--23{移动端滑动模块-改良}
  3. web安全入门之SQL注入-时间型盲注
  4. Java DVD租借系统
  5. DDD学习(一)——通用语言
  6. 对面向过程,对象,接口,切面的理解
  7. angular仿微信图片放大功能
  8. 【深度长文】老IT公司怎么做到像创业公司一样快
  9. Beosin(成都链安)双周报4月6日—4月19日
  10. JVM(java 虚拟机)