搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32 H7] 【银杏科技ARM+FPGA双核心应用】STM32H7系列25——DDS产生正弦波

[复制链接]
821|48
 楼主 | 2020-9-25 16:57 | 显示全部楼层 |阅读模式
本帖最后由 heart蓝色CD 于 2020-9-26 17:33 编辑

一、爆靓照
bbs.21ic.com/icview-2895340-1-1.html
icore4t.jpg
二、实验简介
本实验基于ARM+FPGA超mini款iCore4T核心板+扩展板实现,iCore4T金手指外扩出一路DAC输出,DA采样率设置为400KHz,通过DDS频率合成技术实现1HZ~2KHZ的波形输出。
波形文件存储在SD卡中,本实验手把手教你实现SDIO,FATFS,DAC,TIMER等外设的配置,最终实现2Vpp,1KHz的正弦波输出。

三、DDS介绍
1、什么是频率
频率是指单位时间内某事件重复的次数。在电子学中,信号的频率是指单位时间内信号的周期数,单位是赫兹(Hertz,简称Hz)。很多年前有一个著名的德国物理学家海因里希 · 鲁道夫 · 赫兹,他首先证明了电磁波的存在,为了纪念他,频率的单位就用他的名字命名。频率是一个非常常用、也是一个非常重要的国际单位;日常生活中,我们收听的收音机、观看的电视机、交流市电、移动蜂窝电话等信号的传输过程,都利用了信号的频率特性。频率与信号的周期互为倒数关系,所以频率也可以表示为:
iCore4T_ARM_HAL_25_7.jpg
2、怎么得到任意频率的信号
既然信号的频率特性那么重要,我们怎么样才能得到自己想要的频率的信号呢?一般来说,我们通过下面三种方法得到想要的频率信号。
晶体或者晶体振荡器:晶体振荡器是利用石英晶体的压电效应,来产生我们想要的频率,他有精度高、稳定性强、温漂小等特点。晶体或者晶振是电路中常用的元器件,它能给我们的电路提供稳定的时钟源,但它也有它的局限性,晶体一旦切割完毕,他的固有频率也就固定了,所以晶体或者晶振不适用于要求频率时刻变化的场合。
RLC 振荡器:利用RC 振荡或者 LC 振荡的原理,通过改变其中的R、L或者C达到改变振荡频率的目的。这种振荡器电路简单、起振容易,所以也很常用。不过他频率稳定性一般,不适合在频率精度要求较高的场合使用。
频率合成技术:频率合成技术可以理解为我们通过某种方法,对固定的频率进行运算,来完成频率的变换。频率合成方法一般有锁相环(PLL)法和直接数字合成技术。PLL 是一种闭环系统,他通过对输入频率进行倍频、分频等过程,完成频率的变换。这种技术一般用于输出频点不多的场合(例如MCU中频率的倍频过程),它得天独厚的优势是可以产生比输入频率更高的频率。直接数字合成技术为本节讨论的重点,以下内容均讨论直接数字合成技术。

3、 直接数字合成技术简介
直接数字合成(Direct Digital Synthesizer,DDS)是1971年由J.Tierncy等人提出的,它通过基于相位累加的变换方式,对输入频率进行变换,来达到任意频率输出的目的。它具有输出频率稳定、分辨率高、切换速度快等优点,配合波形查找表及相关路,它能产生任意的波形,这也是它最大的优势。

4、DDS原理
一个典型的DDS系统包括相位累加器、幅度变换及DA转换电路。它基于同一个系统时钟驱动的。在某一个时钟时刻,相位累加器产生一个特定的相位角度,通过相位角度-幅度变换,查找到波形表中电压值,然后送给DAC,来重现这一时刻的模拟电压,这就完成了DDS工作的一个步进。通过不断的时钟驱动,我们就能得到连续的模拟波形。
iCore4T_ARM_HAL_25_8.png

4.1、相位累加器
相位累加器(ACCUMULATOR)是DDS的核心,它由一个加法器和一个D触发器组成。相位累加器由多位组成,典型的应用中,一般取 16~48位。相位累加器工作过程中,时钟每动作一次,累加器便累加一次调谐字(TUNING WORD);所以相位累加器输出一个以时间为序列的数字字,它线性增长,直到达到最大值2n(假设该累加器为n位),如果大于最大值,则舍弃溢出的高位,仍然保留n位。
为了形象的描述相位累加器的工作过程,我们可以把相位累加器看做一个圆周,如图三所示。其中,n表示相位累加器的位数,2n为相位累加器的模数,也就是圆周等分点数,每次的步进值为调谐字(TUNING WORD)。如果把相位累加器旋转一周作为一个周期的话,则最终频率输出可以用方程式(2)来描述。
iCore4T_ARM_HAL_25_9.jpg
如果把调谐字(TUNING WORD)设置为最小值1,带入方程式(2)则可得到最小输出频率,也就是频率分辨率。通过公式(3)我们可以看出,相位累加器位数越高,则频率分辨率越高。在100MHz的采样时钟下,48位的相位累加器可以使得频率分辨率优于 1μHz。
iCore4T_ARM_HAL_25_10.jpg

4.2 角度-幅度转换
相位累加器的输出为线性的,如果我们需要输出任意的波形,我们则需要角度-幅度转换。一般地可以通过查找表的方法来实现。相位累加器的输出作为查找表的地址,数据线作为内容输出,则完成了角度-幅度转换。图四示意图为单周期正弦波查找表,n位的相位累加器输出(线性变化)作为查找表的地址线,数据输出端则为按正弦规律变化的数字序列。
iCore4T_ARM_HAL_25_11.png

4.3、D/A 转换
相位累加器的输出经过波形查找表后,得到按预置波形变化的数字序列,还需要进行数字-模拟转换,才能得到我们需要的模拟波形,这个过程为 D/A转换,如图五所示。DAC 的驱动时钟与相位累加器的时钟同源,所以保证DDS 每个模块工作“步调”一致。
iCore4T_ARM_HAL_25_12.png

四、实验现象
iCore4T_ARM_HAL_25_15.png

五、资料包下载
1、实验源码
游客,如果您要查看本帖隐藏内容请回复
2、实验指导书
iCore4T实验指导书二十五.pdf (1.01 MB, 下载次数: 41)

使用特权

评论回复
| 2020-9-25 19:08 | 显示全部楼层
谢谢分享【STM32H7系列二十五——DDS】

使用特权

评论回复
| 2020-9-26 08:44 | 显示全部楼层
介绍的很详细,学到了学到了

使用特权

评论回复
| 2020-9-26 10:35 | 显示全部楼层
get 新技能呀

使用特权

评论回复
| 2020-9-26 21:49 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 21:53 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 21:54 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 21:54 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 21:55 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 21:59 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:00 | 显示全部楼层
学习学习!

使用特权

评论回复
| 2020-9-26 22:01 | 显示全部楼层
学习学习!

请问一些 这个DAC 不是SPI 的吗?

使用特权

评论回复
| 2020-9-26 22:02 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:02 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:04 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:04 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:05 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:06 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:06 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
| 2020-9-26 22:07 | 显示全部楼层
STM32H7系列二十五——DDS

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表