发作品签到
标准版

【课程设计】基于AD9958直接数字频率合成器+662763A

工程标签

4.3k
0
0
0

简介

基于stm32单片机的ad9958直接数字频率合成器,给快要竞赛的小伙伴试试水,第一次使用这个芯片,特别是ucos和emwin,都是赶鸭子上架的,马马虎虎吧

简介:基于stm32单片机的ad9958直接数字频率合成器,给快要竞赛的小伙伴试试水,第一次使用这个芯片,特别是ucos和emwin,都是赶鸭子上架的,马马虎虎吧

开源协议

Public Domain

创建时间:2021-05-14 14:03:10更新时间:2021-09-29 17:15:38

描述

AD9958简介

AD9958是Analog Devices公司生产的一款高性能、动态特性优异、可双路输出的DDS器件,每路可单独控制频率,相位/幅度。这种灵活性可用于校正信号之间由滤波、放大等模拟处理或PCB布局失配而引起的不平衡问题。由于两个通道共享一个公共系统时钟,因此它们具有固有的同步性,可支持多个设备的同步。AD9958内部集成了10 bit的输出幅度控制,内部工作频率高达500 MHz,使其可产生频率为250MHz的双路信号。其内部有许多用于控制输出信号参数的控制寄存器,具有32位频率调整分辨率、14位相位失调分辨率、10位输出幅度可缩放分辨率,有增强数据吞吐率的串行SPI口。可工作于多种模式,支持单频信号模式(single-tone)、调制模式(modulation mode)、线性扫频模式(linearsweep)以及混合信号模式。可以执行高达16阶的频率、相位或幅度调制(FSK、PSK、ASK)。

 

AD9958串口特点及工作模式

下表为4种模式的引脚配置表:

引脚/功能/模式 1位串行2线模式 1位串行3线模式 2位串行模式 4位串行模式
SCLK 串行时钟 串行时钟 串行时钟 串行时钟
CS 片选 片选 片选 片选
SDIO_0 串行数据IO 串行数据IO 串行数据IO 串行数据IO
SDIO_1 未用 未用 串行数据IO 串行数据IO
SDIO_2 未用 串行数据输出 未用 串行数据IO
SDIO_3 同步IO 同步IO 同步IO 串行数据IO

 

在串行操作包括指令周期和通信周期,一般先传送指令周期,指令周期对应于SCLK的前8个上升沿,其对应的指令字(8比特)包含了以下信息:

Q7ciI5Bzh2YrQKN44wviMcxk1Et5zydNBTtz8v7A.png

下图为AD9958的写数据时序图,SCLK下降沿有效,读数据则是高电平有效

LFgtoKQWbEACc24v8zBKnjPWMwgVQOavW61Jslbk.png

下图为频率和相位的计算公式

Z63On3UFLSqdVhAtUvHgtRzo7VDlZm2ljscM4cEg.png

STM32F429BI驱动

由于裸机远远不比多任务,所以本次项目使用了uCOS-III实时操作系统。

轮询系统(裸机)

轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情。
但是,如果加入了按键操作等需要检测外部信号的事件,用来模拟紧急报警,那么整个系统的实时响应能力就不会那么好了。
轮询系统只适合顺序执行的功能代码,当有外部事件驱动时,实时性就会降低。

操作系统

我们把这个程序主体分割成一个个独立的,无限循环且不能返回的小程序,这个小程序我们称之为任务。
每个任务都是独立的,互不干扰的,且具备自身的优先级,它由操作系统调度管理。
加入操作系统后,我们在编程的时候不需要精心地去设计程序的执行流,不用担心每个功能模块之间是否存在干扰。

ORtP8PUiiQ31xHx1KrCtjY5NMttkFRvlOLSciCMa.png

emWin图形界面

光是按键和简单的屏幕显示已经满足不了我了,所以我就加了图形界面,看起来要美观一点(我才刚学,界面配置的简直不能看)

屏幕为5寸RGB屏(800*480)电容式触摸,为了更好发挥 STM32F429 的图形性能,强烈建议使用 32 位 SDRAM,使用16 位的 SDRAM 性能会降低一半。

emWin 的这些功能,就是为了解决人机交互应用的设计难题。而它对 ROM 和 RAM的消耗相对来说并不高。
学习emWin,就是将基本功能和常用控件的显示效果在 STM32 开发板上面的液晶显示出来,让你有客观的视觉感受,而不单单是停留在代码层面。
STM32F429BIT6 + 32 位 SDRAM的刷图片测试:
给 800*480 分辨率的显示屏刷 24位色的颜色块,那么每秒可以刷 81923000/(800*480) ≈ 213 帧。
刷 16 位色的颜色块,那么每秒可以刷 129346000/(800*480) ≈ 336 帧。
刷 8 位色的颜色块,那么每秒可以刷 267128000/(800*480) ≈ 695 帧。
4NIxf75vAWEsa08FHeYZyuCwUpmyAq8SxUYDSNmP.png

!!!!!

我把这三个的代码整合了一下,其实感觉好像也不多,都是现学现做的。

基于STM32F429BI运行uCOS-III与emWin驱动AD9958+5寸屏。

前面全是介绍他们的,一点重要的东西都没有,接下来就讲讲我制作板子和调试中的问题吧:

  1. AD9958的板子其实不需要多大的注意,尽量画的标准一点,这块芯片的要点就在于灵活性,可用于校正信号之间由滤波、放大等模拟处理或PCB布局失配而引起的不平衡问题。
  2. AD9958的测试引脚为17脚,当完全焊接完整时,通电,该引脚的电压为1.2V左右。则芯片正常工作,如果出现虚焊或者芯片内部损坏,该引脚电压为0.(别问我为什么知道,我焊废了一块,我的300元就这样没了)这芯片的封装为LFCSP,特别容易虚焊。
  3. 使用单片机驱动时,SDIO_3脚必须为低电平
  4. AD9958和AD9959通用代码,唯一的区别就是阉割了两个通道
  5. 该芯片的调制和扫频还在研究中,估计之后会使用在幅频特性检测装置和多波形雷达信号原这两个项目上
  6. uCOS-III需要注意信号量和互斥量的释放和获取
  7. 电容式的触摸屏不需要校准,而且最多可支持5指触摸,但是在emWin中我还是单指触摸,防止误触
  8. 图形界面要慢慢优化,慢慢调试,网上的视频有很多,可以看看
  9. 由于身边没有什么放大增益模块,所以很多功能就没有做,再加上期末考试了,我复习去了,所以没多少时间弄了
  10. 由于我只焊接了一个通道接口,演示中就只有频率的改变,幅度的改变,相位看不出来(我不会使用示波器,我太菜了)
  11. 我们学校只有100M的示波器。。。。。。。所以我设置的频率范围是1Hz~99Mhz
  12. 我也添加了文件系统,想加截图的功能,加入sd卡,可以查看自己保存的配置,不过没时间了,活动快截止了,就没往下做了,只是添加了进去而已,后续会慢慢完善的
  13. 硬件图
  14. 视频中只演示了频率,由于我只焊接了一个通道,所以刚开始的通道一是没有在示波器上显示的,相位和幅度也能设置,但是示波器玩不转,所以没有进行操作,暂时就这么多了0.0   0.0   0.0

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
AD9958:内置10位DAC的2通道500MSPSDDS.pdf
127
2
AD9958评估板数据手册.pdf
116
3
STM32F429+AD9958.rar
148
4
20210615_085244.mp4
176
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航