STM32CubeMX教程17 DAC - 输出三角波噪声波

这篇具有很好参考价值的文章主要介绍了STM32CubeMX教程17 DAC - 输出三角波噪声波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、准备材料

正点原子stm32f407探索者开发板V2.4

STM32CubeMX软件(Version 6.10.0)

keil µVision5 IDE(MDK-Arm)

ST-LINK/V2驱动

野火DAP仿真器

XCOM V2.6串口助手

一台示波器

2、实验目标

使用STM32CubeMX软件配置STM32F407开发板的DAC OUT1实现输出三角波

3、实验流程

3.0、前提知识

STM32F407的DAC输出引脚除可以输出 DACoutput = VREF+ * DOR / 4095 的模拟电压之外,其DAC控制逻辑中还有两个重要的波形生成器 Wave generation mode ,分别为三角波和噪声波,本小节的实验主要以生成三角波为例,只会在“3.0、前提知识”中简单提到噪声波相关内容,在实际生成过程中两者的设置类似,且均简单易理解

使用DAC输出指定三角波/噪声波需要先指定DAC的输出触发源 Trigger ,DAC输出的触发源一共有7个,包括Timer 2/4/5/6/7/8 Trigger Out event和Software trigger,一般使用定时器的溢出时间作为DAC输出的触发源,本实验采用了TIM6的溢出更新事件作为DAC OUT1 三角波的触发源,所有可选的触发源如下图所示

当DAC输出三角波时需要设置参数 Maximum Triangle Amplitude ,当触发源定时器每次产生溢出更新事件时,DAC的输出值就会从基值增加1/减少1,因为TIM6基础定时器只能向上计数,因此当TIM6每次溢出时,DAC的输出会增加1,直到增加到设置的 Maximum Triangle Amplitude 参数值为止,然后逐渐减少直到基值,这个过程会反复执行从而生成三角波

上述过程如下图所示 (注释1)

当DAC输出伪噪声波时需要设置 Noise Amplitude 参数,其主要配置生成噪声波使用的12位LFSR寄存器解锁的位,如下图所示为DAC使用LFSR寄存器生成伪噪声的算法结构图,这里具体不做深究 (注释1)

3.1、CubeMX相关配置

3.1.0、工程基本配置

打开STM32CubeMX软件,单击ACCESS TO MCU SELECTOR选择开发板MCU(选择你使用开发板的主控MCU型号),选中MCU型号后单击页面右上角Start Project开始工程,具体如下图所示

开始工程之后在配置主页面System Core/RCC中配置HSE/LSE晶振,在System Core/SYS中配置Debug模式,具体如下图所示

详细工程建立内容读者可以阅读“STM32CubeMX教程1 工程建立”

3.1.1、时钟树配置

系统时钟使用8MHz外部高速时钟HSE,HCLK、PCLK1和PCLK2均设置为STM32F407能达到的最高时钟频率,具体如下图所示

3.1.2、外设参数配置

在Pinout & Configuration页面左边功能分类栏目Analog中单击其中DAC

在Mode中勾选OUT1 Configuration

将DAC OUT1的触发源选择为TIM6外部触发,最大三角波幅值设置为4095

具体配置如下图所示

在Pinout & Configuration页面左边功能分类栏目Timers中单击其中TIM6

勾选Activated激活定时器,配置其计数器参数溢出时间为0.1ms,具体参数解释请阅读“STM32CubeMX教程5 TIM 定时器概述及基本定时器”

外部事件触发选择更新事件Updata Event,具体配置如下图所示

3.1.3、外设中断配置

此实验无需开启DAC的任何中断

3.2、生成代码

3.2.0、配置Project Manager页面

单击进入Project Manager页面,在左边Project分栏中修改工程名称、工程目录和工具链,然后在Code Generator中勾选“Gnerate peripheral initialization as a pair of 'c/h' files per peripheral”,最后单击页面右上角GENERATE CODE生成工程,具体如下图所示

详细Project Manager配置内容读者可以阅读”STM32CubeMX教程1 工程建立“实验3.4.3小节

3.2.1、外设初始化调用流程

请阅读“STM32CubeMX教程16 DAC - 输出3.3V内任意电压”实验“3.2.1、外设初始化调用流程”小节

3.2.2、外设中断调用流程

此实验无需开启DAC的任何中断

3.2.3、添加其他必要代码

在主函数中启动DAC通道1输出,默认基值设置为0即可,源代码如下所示

/*启动DAC输出*/
HAL_DAC_Start(&hdac,DAC_CHANNEL_1);
/*设置DAC三角波输出基值*/
int32_t DacValue=0;
HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_L,DacValue);
/*启动TIM6触发源*/
HAL_TIM_Base_Start(&htim6);
printf("Reset\r\n");

4、常用函数

请阅读“STM32CubeMX教程16 DAC - 输出3.3V内任意电压”实验

5、烧录验证

烧录程序,单片机上电后,将示波器的探头挂钩与DAC OUT1引脚PA4相连接,接地环与开发板上的GND引脚连接,将示波器每格电压幅值调节为1.00V,将每格子采集时间调节为400ms,然后开启示波器对DAC OU1输出的波形采集

设置Maximum Triangle Amplitud最大三角波幅值设置为2047时由示波器采集到的三角波如下图所示,其中三角波的幅值电压为1.48V,大致为3.3V的一半,波形频率为2.446Hz,计算的周期大约为408.8ms,定时器溢出时间为0.1ms,期待的周期为0.120482=409.6ms,与示波器采集结果大致一致

设置Maximum Triangle Amplitud最大三角波幅值设置为4095时由示波器采集到的三角波如下图所示,其中三角波的幅值电压为2.96V,波形频率为1.207Hz,计算的周期大约为828.5ms,定时器溢出时间为0.1ms,期待的周期为0.140962=819.2ms,与示波器采集结果大致一致

6、注释解析

注释1:图片来源STM32F4xx 中文参考手册

参考资料

STM32Cube高效开发教程(基础篇)文章来源地址https://www.toymoban.com/news/detail-800677.html

到了这里,关于STM32CubeMX教程17 DAC - 输出三角波噪声波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX教程8 TIM 通用定时器 - 输出比较

    开发板(STM32F407G-DISC1) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 逻辑分析仪nanoDLA 使用STM32CubeMX软件配置STM32F407 通用定时器的输出比较通道 ,并将其输出到四个LED灯引脚实现LED灯流水灯效果 STM32F407的定时器通道均可以实现输出比较功能, 输出比较功

    2024年02月03日
    浏览(77)
  • STM32实验-输出DAC正弦波

    首先我们知道正弦波的解析式为y=Asin(omiga*x+fei)+b,拓展到STM32中则会得到如下的式子: y=2048*sin((2*pi/samples)*x)+2048. 其中形参的取值范围是(samples/2)maxval,采样的间隔是2*pi/samples。 接下来编写我们的函数代码dac_sin.c: 接下来编写函数头文件dac_sin.h: 最后编写主函数main.c: 到这

    2024年02月15日
    浏览(30)
  • STM32实验-PWM DAC模拟输出

    一般一个STM32只有2个DAC输出通道,如果需要多路DAC输出,可以选择外扩DAC,但成本回相当高。于是在一些精度要求不高的场合,我们采用定时器输出PWM和RC滤波器模拟DAC来代替外扩DAC。 PWM占空比可由以下式子计算出:p = n / N (n是on的时间,即带宽,N是周期) PWM周期是由ARR决定

    2024年02月08日
    浏览(41)
  • 【STM32+HAL】DAC+DMA输出波形实现

    有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置 1、芯片: STM32F407ZGT6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F4xxHAL库 1、DAC+DMA输出波形 2、按键切换波形及频率 3、串口打印当前波形以及频率值 1、开启DAC 这里开启的是通道一 Output Buffer:关闭后可

    2024年02月02日
    浏览(47)
  • STM32F103RC—DAC输出正弦波

    1.RCC SYS配置      2.开通DAC的DAM 定时器2控制 3.打开定时器    4.时钟配置  5.单片机最大时钟频率72MHZ 利用工具箱生成正弦波码表(我用的是72个点)  在while(1)前的begin和end之间添加如下两行代码:  上面两段代码: 第一句:打开定时器二 第二句:利用DAC输出正弦波函数 6

    2024年02月10日
    浏览(36)
  • STM32配置ADC2(DMA)进行采集 DAC 输出-2

    在上一节的基础上,我们把 DAC(三角波)给集成进来,实现按下按键输出三角波,通过串口发送数据给电脑,分析然后画出电压的波形并且展示出来 开发板:正点原子探索者STM32F407ZG 2.1 DAC部分 这里我们采用 实验22-2 DAC输出三角波实验 的例程,查看主函数找中和 DAC 相关的代

    2024年02月01日
    浏览(34)
  • STM32配置ADC2(DMA)进行采集 DAC 输出-1

    在正点原子的ADC(DMA)例程上,将ADC1改成ADC2来采集电压,并且进行测试 开发板:正点原子探索者STM32F407ZG 2.1 ADC相关 通过查看开发指南我们发现,ADC1 和 ADC2 的通道 5 都是采用的 PA5 引脚,就意味着我们修改为 ADC2 后还是可以通过 PA5 来进行电压的测量。 对应的我们在adc.h中

    2024年02月02日
    浏览(59)
  • STM32模拟SPI时序控制双路16位数模转换(16bit DAC)芯片DAC8552电压输出

    STM32部分芯片具有12位DAC输出能力,要实现16位及以上DAC输出需要外挂DAC转换ASIC。 DAC8552是双路16位DAC输出芯片,通过SPI三线总线进行配置控制输出。这里介绍通过GPIO管脚模拟时序进行控制的方式。 DAC8552支持2.7V~5.5V的供电,根据需要提供电源电压,对于STM32可能面对不同供电电

    2023年04月09日
    浏览(41)
  • STM32初学入门笔记(2):STM32CubeMX配置STM32输出可调PWM方波

    PWM是一种应用广泛的利用微处理器的数字输出来对模拟电路进行控制的一种技术(即对脉冲宽度的控制)PWM同时也是驱动蜂鸣器,驱动舵机,通信等重要的一环,而对于初学者而言,点完灯的下一个程序就是驱动蜂鸣器,本篇将讲述如何使用及调整PWM输出频率,占空比 工程文

    2024年02月14日
    浏览(42)
  • STM32高级定时器输出指定数量PWM(STM32CubeMx配置)

    高级定时器中有一个重复计数器,本实验输出指定个数PWM就是利用了重复计数器的特性,先来看看重复计数器的特性是什么: 计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件 这是什么意思呢,这里举个例子比如说我设定重复计数器的

    2024年02月02日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包