用户工具

站点工具


icore3l_arm-gd_12
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-11-14 gingko 初次建立



实验十二:DDS实验——输出正弦波

一、实验目的与意义

  1. 了解GD32 DAC结构
  2. 了解GD32 DAC特征
  3. 掌握 DDS原理
  4. 掌握 GD32固件库中DAC属性的配置方法
  5. 掌握KEIL MDK集成开发环境使用方法

二、实验设备及平台

  1. iCore3L 双核心板
  2. JLINK(或相同功能)仿真器
  3. Micro USB线缆
  4. Keil MDK 开发平台
  5. 装有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 每个模块工作“步调”一致;

四、实验步骤

  1. 把仿真器与iCore3L的SWD调试口相连(直接相连或者通过转接器相连);
  2. 把iCore3L通过Micro USB线与计算机相连,为iCore3L供电;
  3. 打开Keil MDK 开发环境,并打开本实验工程;
  4. 烧写程序到iCore3L上;
  5. 也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。

五、实验现象

串口显示 SDIO初始化及文件读取情况,显示结果如图所示,示波器测量 DAC管脚口波形输出情况,测量情况如图所示。

icore3l_arm-gd_12.txt · 最后更改: 2022/06/10 14:17 由 sean