前文《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,也就是输出模拟电压三角波幅度为参考电压(公式在前文说过了)。