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


前言

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


一、DAC 简介

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


二、DAC 功能框图剖析

在这里插入图片描述

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 引脚中检测到信号输出。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 野火STM32F407是一种基于STM32F407芯片的开发板,例程是该开发板的一套示例代码。 例程包含了多个例子,覆盖了多个功能模块。例如:LED灯的控制、按键输入的检测、蜂鸣器的控制、ADC模数转换的实验、PWM输出的实验、定时器的使用等。 在野火STM32F407例程中,用户可以根据自己的需求,选择相应的例程进行学习和应用。每个例程都有详细的代码注释,方便用户理解和修改。 野火STM32F407例程的优势在于其丰富的功能和简单易用的操作。用户无需从零开始编写代码,只需要按照例程的要求连接硬件,然后将对应的例程下载到开发板上即可实现相应的功能。 除了例程本身,野火还提供了丰富的资料和技术支持,如开发板原理图、用户手册、视频教程等。这些资源对于初学者来说非常重要,能够帮助他们更好地学习和应用例程。 总之,野火STM32F407例程是一套功能强大、简单易用的示例代码,适用于学习STM32F407芯片和开发板的人群。无论是初学者还是有一定经验的开发者,都可以从中获得很多实用的知识和经验。 ### 回答2: 野火STM32F407例程是针对野火开发板上的STM32F407芯片编写的一段示例代码。野火公司为该开发板设计的一款功能强大的处理器模块。 野火STM32F407例程提供了多种实用功能的示例代码,包括LED灯控制、按键输入、串口通信、PWM输出等。这些例程可以帮助开发者快速熟悉和上手野火开发板,并且可以作为开发基础,用于二次开发和调试。 例如,LED灯控制的例程可以通过修改代码中的参数来控制野火开发板上的LED灯的亮灭状态,可以用于验证开发板的硬件功能是否正常。按键输入的例程可以通过读取按键状态,实现按键事件的响应,例如控制电机的启动或停止等。串口通信的例程可以帮助开发者与外部设备进行数据交互,例如通过串口与电脑进行通信、发送调试信息等。PWM输出的例程可以生成特定的脉冲信号,用于控制伺服电机或产生PWM形等。 野火STM32F407例程在开发者社区中广泛使用,具有丰富的示例代码和详细的注释,方便开发者学习和理解。同时,野火还提供了相关的开发文档和技术支持,帮助开发者快速解决问题和进行开发工作。如果对例程中的代码有修改需求,开发者可以根据自己的需求进行二次开发,实现更加复杂的功能。 总之,野火STM32F407例程是一段功能丰富、易于上手的示例代码,帮助开发者快速入门STM32F407开发板,并且可以作为开发基础和参考,用于二次开发和应用。 ### 回答3: 野火STM32F407例程是针对STMicroelectronics公司推出的STM32F407核心板进行开发的一套示例程序。 该例程采用了野火提供的开发环境Keil5进行开发,可以通过野火官方网站下载源代码和相应的开发工具。 野火STM32F407例程包含了一系列的示例程序,用于演示和说明STMicroelectronics STM32F407核心板的各种功能和特性。这些例程涵盖了从基本的GPIO控制、外部中断、定时器、PWM输出,到更复杂的USART、SPI、I2C、SD卡等外设的使用。 除了基本的外设操作示例,野火STM32F407例程还提供了一些有趣的案例,如LED点阵显示、触摸屏控制、摄像头采集、音频播放等,帮助开发者更好地理解和应用该核心板。同时,这些案例程序也可以作为开发者学习和扩展的起点,根据自己的需求进行修改和优化。 野火STM32F407例程是为了方便开发者快速上手STM32F407核心板而设计的,它提供了一种简单、直观的学习方式,通过代码实例的演示,帮助开发者深入了解STM32F407核心板的各项功能和使用方法。 总之,野火STM32F407例程是一套详尽而实用的示例程序,适用于想要学习和开发STM32F407核心板的开发者,通过这些例程的学习和实践,可以更好地掌握和应用STM32F407的各种功能,提高开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值