目录
实验十二:DDS实验——输出正弦波
一、实验目的与意义
二、实验设备及平台
三、实验原理
四、实验步骤
五、实验现象
银杏科技有限公司旗下技术文档发布平台
技术支持电话
0379-69926675-801
技术支持邮件
Gingko@vip.163.com
版本
日期
作者
修改内容
V1.0
2020-11-14
gingko
初次建立
实验十二:DDS实验——输出正弦波
一、实验目的与意义
了解GD32 DAC结构
了解GD32 DAC特征
掌握 DDS原理
掌握 GD32固件库中DAC属性的配置方法
掌握KEIL MDK集成开发环境使用方法
二、实验设备及平台
iCore3L 双核心板
JLINK(或相同功能)仿真器
Micro USB线缆
Keil MDK 开发平台
装有WIN XP(及更高版本)系统的计算机
三、实验原理
GD32 DAC简介
GD32的数字/模拟转换器可以将12位的数字数据转换为外部引脚上的电压输出。数据可以采用8位或12位模式,左对齐或右对齐模式。当使能了外部触发,DMA可被用于更新数字数据。在输出电压时,可以利用DAC输出缓冲区来获得更高的驱动能力。两个DAC可以独立或并发工作。
DAC主要特征
8 位或 12 位分辨率,数据左对齐或右对齐;
DMA 功能并带有下溢错误检测;
同步更新转换;
外部事件触发转换;
可配置的内部缓冲区;
输入参考电压 VREF+;
噪声波发生器(LSFR 噪声模式和三角噪声模式);
双 DAC 并发模式。
DAC输出电压公式
经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。
各 DAC 通道引脚的模拟输出电压通过以下公式确定:
DAC_output= V_REF × DOR/4096
DDS简介
一个典型的DDS系统包括相位累加器、幅度变换及DA转换电路。它基于同一个系统时钟驱动的。在某一个时钟时刻,相位累加器产生一个特定的相位角度,通过相位角度-幅度变换,查找到波形表中电压值,然后送给DAC,来重现这一时刻的模拟电压,这就完成了DDS工作的一个步进。通过不断的时钟驱动,我们就能得到连续的模拟波形。
相位累加器
相位累加器(ACCUMULATOR)是DDS的核心,它由一个加法器和一个D触发器组成。相位累加器由多位组成,典型的应用中,一般取16~48位。相位累加器工作过程中,时钟每动作一次,累加器便累加一次调谐字(TUNING WORD);所以相位累加器输出一个以时间为序列的数字字,它线性增长,直到达到最大值2𝑛 (假设该累加器为n位),如果大于最大值,则舍弃溢出的高位,仍然保留n位;
为了形象的描述相位累加器的工作过程,我们可以把相位累加器看做一个圆周,如图12-1所示。其中,n表示相位累加器的位数,2𝑛为相位累加器的模数,也就是圆周等分点数,每次的步进值为调谐字(TUNING WORD)。如果把相位累加器旋转一周作为一个周期的话,则最终频率输出可以用方程式fout=fsample/2n∙m(m:调谐字)来描述。
相位累加器的输出为线性的,如果我们需要输出任意的波形,我们则需要角度-幅度转换。一般地可以通过查找表的方法来实现。相位累加器的输出作为查找表的地址,数据线作为内容输出,则完成了角度-幅度转换;
相位累加器的输出经过波形查找表后,得到按预置波形变化的数字序列,还需要进行数字-模拟转换,才能得到我们需要的模拟波形,这个过程为 D/A转换。DAC 的驱动时钟与相位累加器的时钟同源,所以保证DDS 每个模块工作“步调”一致;
四、实验步骤
把仿真器与iCore3L的SWD调试口相连(直接相连或者通过转接器相连);
把iCore3L通过Micro USB线与计算机相连,为iCore3L供电;
打开Keil MDK 开发环境,并打开本实验工程;
烧写程序到iCore3L上;
也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。
五、实验现象
串口显示 SDIO初始化及文件读取情况,显示结果如图所示,示波器测量 DAC管脚口波形输出情况,测量情况如图所示。