《野火STM32F407 霸天虎版》学习笔记——第 39 章 DAC—输出正弦波

文章目录

  • 前言
  • 一、DAC 简介
  • 二、DAC 功能框图剖析
    • 1.参考电压
    • 2.数模转换及输出通道
    • 3.触发源及 DHRx 寄存器
  • 三、DAC 初始化结构体详解
  • 四、DAC 输出正弦波实验
    • 1. 硬件设计
    • 2.软件设计


前言

该章节并未出现在野火STM32F407的视频教程当中,所以只能通过开发手册自习,博主也在此记下该章节的笔记。在了解DAC之前,读者们最好先了解一下ADC模块的功能和原理,ADC模块是有在野火的视频教程中的,所以就不在本博主的主页中赘述。


一、DAC 简介

DAC 为数字/模拟转换模块,它的作用就是把输入的数字编码,转换成对应的模拟电压输出。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。


二、DAC 功能框图剖析

《野火STM32F407 霸天虎版》学习笔记——第 39 章 DAC—输出正弦波_第1张图片

1.参考电压

与 ADC 外设类似,DAC 也使用 VREF+ 引脚作为参考电压,在设计原理图的时候一般把 VSSA 接地,把 VREF+ 和 VDDA 接 3.3V,可得到 DAC 的输出电压范围为:0~3.3V。

2.数模转换及输出通道

框图中的“数字至模拟转换器 x”是核心部件,整个 DAC 外设都围绕它而展开。它以左边的 VREF+作为参考电源,以 DAC 的数据寄存器“DORx”的数字编码作为输入,经过它转换得的模拟信号由右侧的“DAC_OUTx”通道输出。其中各个部件中的“x”是指设备的标号,在 STM32 中具有 2 个这样的 DAC 部件,每个 DAC 有 1 个对应的输出通道连接到特定的引脚,即:PA4-通道 1,PA5-通道 2,为避免干扰,使用 DAC 功能时,DAC 通道引脚需要被配置成模拟输入功能(AIN)。

3.触发源及 DHRx 寄存器

在使用 DAC 时,不能直接对上述 DORx 寄存器写入数据,任何输出到 DAC 通道 x 的数据都必须
写入到 DHRx 寄存器中。

数据被写入到 DHRx 寄存器后,DAC 会根据触发配置进行处理,若使用硬件触发,则 DHRx 中的数据会在 3 个 APB1 时钟周期后传输至 DORx,DORx 随之输出相应的模拟电压到输出通道;若DAC 设置为外部事件触发,例如使用定时器触发,配合不同时刻的 DHRx 数据,可实现 DAC 输出正弦波的功能。


三、DAC 初始化结构体详解

1 typedef struct {
2 /*DAC 触发方式 */
3 uint32_t DAC_Trigger;
4
5 /* 是否自动输出噪声或三角波 */
6 uint32_t DAC_WaveGeneration;
7
8 /* 选择噪声生成器的低通滤波或三角波的幅值 */
9 uint32_t DAC_LFSRUnmask_TriangleAmplitude;
10
11 /* 选择是否使能输出缓冲器 */
12 uint32_t DAC_OutputBuffer;
13
14 } DAC_InitTypeDef;

(1) DAC_Trigger:本成员用于配置 DAC 的触发模式,当 DAC 产生相应的触发事件时,才会把 DHRx 寄存器的值转移到 DORx 寄存器中进行转换。本结构体成员可以选择的触发模式如下:硬件触发模式;定时器触发模式,使用定时器 2、4、5、6、7、8 控制 DHRx 寄存器的数据按时间转移到 DORx 中进行转换,利用这种方式可以输出特定的波形;EXTI_9 触发方式;软件触发模式,向 DAC_SWTRIGR 寄存器写入配置即可触发信号进行转换。

(2) DAC_WaveGeneration:本成员用于设置是否使用DAC 输出伪噪声或三角波,使用伪噪声和三角波输出时,DAC都会把 LFSR 寄存器的值叠加到 DHRx 数值上,产生伪噪声和三角波,若希望产生自定义的输出时,直接配置为 DAC_WaveGeneration_None 即可。

(3) DAC_LFSRUnmask_TriangleAmplitude:本成员通过控制 DAC_CR 的 MAMP2 位设置 LFSR寄存器位的数据,即当使用伪噪声或三角波输出时要叠加到 DHRx 的值,非噪声或三角波输出模式下,本配置无效。

(4) DAC_OutputBuffer:本结构体成员用于控制是否使能 DAC 的输出缓冲,使能了 DAC 的输出缓冲后可以减小输出阻抗。


四、DAC 输出正弦波实验

1. 硬件设计

STM32 的 DAC 外设有固定的输出通道,分别为 PA4 和 PA5。在设计 DAC 专门的实际应用时,DAC 的输出通道应独占,不与其它设备共用。本开发板的设计是考虑到各种资源分配,才不得不占用 DAC 通道的。

2.软件设计

编程要点

  1. 计算获取正弦波数据表;
  2. 根据正弦波数据表的周期内点数和周期计算定时器触发间隔;
  3. 初始化 DAC 输出通道,初始化 DAC 工作模式;
  4. 配置触发 DAC 用的定时器;
  5. 配置 DMA 自动转运正弦波数据表。
    配置完成后,即可在 PA4、PA5 引脚中检测到信号输出。

你可能感兴趣的:(stm32,单片机,学习,c语言,mcu)