目录
一、DAC基础知识
1、 DAC的结构和特性
(1)STM32G4**DAC特性
(2) 数模转换器
2、DAC数据格式
(1) 使用单通道独立输出
(2)使用DAC双通道同步输出
3、DAC转换时间
4、输出噪声波和三角波
5、双通道同步转换
6、DMA请求
7、DAC的中断
二、DAC的HAL驱动程序
1、DAC驱动宏函数
2、DAC驱动功能函数
(1)DAC初始化和通道配置
(2)软件触发转换
(3)产生波形
(4)DAC中断处理
(5)DMA方式传输
三、工程配置
1、工程描述
2、 时钟、DEBUG、Timer3、USART2、Project Manager Code Generater
3、 NVIC
4、 ADC1
(1) ADC1 Mode
(2) ADCs_Common_Settings组
(3)ADC_Settings组
(4)ADC_Regular_ConversionMode
5、 DAC1
(1)Mode
(2) DAC out1 Settings
6、GPIO
四、软件设计
1、main.c
五、下载与运行
DAC是数字量到模拟量的转换器。DAC可以由软件触发,也可以由定时器或外部中断信号触发。
一、DAC基础知识
1、 DAC的结构和特性
STM32G474有4个DAC模块。每个DAC模块有1个或2个DAC转换器,每个转换器对应一个输出通道。其中只有DAC1、DAC2共计有3个对外输出的通道,另有DAC3、DAC4共计有4个内部通道。(对照地,STM32F407只有一个DAC模块。这个DAC模块有两路DAC通道,每个通道有独立的12位DAC转换器。两个通道可以独立输出,也可以同步输出,以产生噪声波和三角波)。
(1)STM32G4**DAC特性
Seven 12 bit DAC channels (3 external buffered and 4 internal unbuffered) can be used to
convert digital signals into analog voltage signal outputs. The chosen design structure is
composed of integrated resistor strings and an amplifier in inverting configuration.
This digital interface supports the following features:
Up to two DAC output channels;
8-bit or 12-bit output mode;
Buffer offset calibration (factory and user trimming);
Left or right data alignment in 12-bit mode;
Synchronized update capability;
Noise-wave generation;
Triangular-wave generation;
Saw tooth wave generation;
Dual DAC channel independent or simultaneous conversions;
DMA capability for each channel;
External triggers for conversion;
Sample and hold low-power mode, with internal or external capacitor;
Up to 1 Msps for external output and 15 Msps for internal output;
The DAC channels are triggered through the timer update outputs that are also connected
to different DMA channels.
资料来源于数据手册:STM32G474RET6 -PDF数据手册-参考资料-立创商城。
(2) 数模转换器
DAC的核心是12位的数模转换器,它将数据输出寄存器DORx(字母x是1、2、...,表示通道1或通道2。等等,总共7个通道,下同)的12位数字量转换为模拟电压输出到复用引脚DAC _OUTx。DAC还有个输出缓冲器,如果使用输出缓冲器,可以降低输出阻抗并提高输出的负载能力。
数据输出寄存器DORx的内容不能直接设置,而是由控制逻辑部分生成。DORx的数据可以来自于数据保持寄存器DHRx,也可以来自于控制逻辑生成的三角波数据或噪声波数据,抑或DMA缓冲区的数据。
DAC的转换可以由软件指令触发,也可以由定时器、高分辨率定时器的TRGO信号触发,或外部中断线EXTI_9或EXTI_10触发。DAC在总线AHB2上,DAC的工作时钟信号就是PCLK1。DAC输出的模拟电压由寄存器DORx的数值和参考电压VREF+决定,输出电压的计算公式为:
数模转换器的原理图:
2、DAC数据格式
(1) 使用单通道独立输出
使用单通道独立输出时,向DAC写入数据有3种格式:8位右对齐、12位左对齐和12位右对齐,这3种格式的数据写入相应的对齐数据保持寄存器DAC_DHR8Rx、DAC_DHR12Lx或DAC_DHR12Rx,然后被移位保存到数据保持寄存器DHRx,DHRx的内容再被加载到通道数据输出寄存器DORx。
31
24
15
7
0
寄存器DAC_DHR8RD
8位右对齐
寄存器DAC_DHR12LD
12位左对齐
寄存器DAC_DHR12RD
12位右对齐
(2)使用DAC双通道同步输出
使用DAC双通道同步输出时,有3个专用的双通道寄存器用于向两个DAC通道同时写入数据,写入数据的格式有3种,其中高位是DAC2,低位是DAC1。用户写入的数据会被移位保存到数据保持寄存器DHR2和DHR1,然后再被加载到通道数据输出寄存器DOR2和DOR1。
31
24
15
7
0
寄存器DAC_DHR8RD
8位右对齐
寄存器DAC_DHR12LD
12位左对齐
寄存器DAC_DHR12RD
12位右对齐
3、DAC转换时间
不能直接将数据写入DOR,需要将数据写入DHR后,再转移到DOR。使用软件触发时,经过一个APB1时钟周期后,DHR的内容