STM32-DAC生成1Hz三角波【DAC触发方式深入理解】

本文详细讲解如何利用STM32的DAC模块生成1Hz的三角波,通过配置三角波计数器和定时器,实现了周期精确的波形输出。文中介绍了计算过程、代码实现,并验证了输出效果,提供了工程资源下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前文《STM32-一文搞懂DAC》的1.2节对触发方式进行了详细的说明,也简单介绍了三角波的生成原理。本文记如何配置一定频率的三角波以及为什么这么配置。

1 概述

三角波的数据生成是由一个单独的计数器往复加减生成的,每次触发之后该计数器会加1/减1。在每个周期过峰值之前,每次触发条件之后加1;过峰值之后,每次触发条件之后减1。但是要先想生成三角波必须以固定的周期加减其输出幅度!也就是以固定的周期触发转换!怎么办呢?谁可以让它以固定的周期?哈哈蛤,定时器!通过设定三角波计数器最大值、定时器触发周期,就可以确定生成的三角波的频率。

前文回顾:

DACx模块内部有一个三角波计数器,每次触发事件之后3个APB1时钟周期后累加1。计数器的值与DAC_DHRx寄存器的数值相加并丢弃溢出位后写入DAC_DORx寄存器。在传入DAC_DORx寄存器的数值小于MAMP[3:0]位定义的最大幅度时,三角波计数器逐步累加。一旦达到设置的最大幅度,则计数器开始递减,达到0后再开始累加,周而复始。

2 生成1Hz三角波的原理

说明:使用三角波计数器的时候,最终输出的数据是数据寄存器DHR的值(直流量)加上计数器的值(三角波)并去掉溢出位。本文只针对三角波说明,令数据寄存器DHR的值为0。

三角波的幅度可以设定为1~4095,也就是三角波计数器峰值的大小。我们选定幅度为4095,也就是输出模拟电压三角波幅度为参考电压(公式在前文说过了)。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值