一、STM32 DAC简介
数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。
STM32具有片上 DAC外设,它的分辨率可配置为 8位或 12位的数字输入信号,具有两个 DAC输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。
DAC通道模块框图如下
专用定时器
除了通过软件和外部触发器触发 DAC 转换之外,还可以通过不同的定时器触发 DAC 转换。 TIM6 和 TIM7 是两个基本定时器,主要用于 DAC 触发。 每当 DAC 接口在所选的定时器触发输出 (TIMx_TRGO)上检测到上升沿时,DAC_DHRx 寄 存器中存储的最后一个数据即会转移到 DAC_DORx 寄存器中。
二、输出周期为2khz的正弦波
原理部分详情请自行阅读官方文档 STM32 DAC
准备数字模式的正弦波形
正弦波的采样举例:
采样间隔为 (2*PI)/ ns (采样数)。
sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。
经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。
各 DAC 通道引脚的模拟输出电压通过以下公式确定: