DAC
Digital-to-Analog Converter的缩写。数模转换器。又称D/A转换器,简称DAC,是指将离散的数字信号转换为连续变量的模拟信号的器件。
这里我们可以设置输出的电压和波形
1.简单配置一个固定电压:
Output Buffer 使能DAC输出缓存,
输出缓冲Output Buffer建议关闭。DAC的输出缓存可以用来减小输出阻抗,无需外部运放即可直接驱动外部负载。但输出不能达到0(会出现底部失真),不推荐开启。具体参考官方手册,缓冲器打开时低端的DAC输出电压大概0.2V(不同型号可能不同,暂未考证)
只需要在main函数中添加下图代码即可。
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 2000);
- 利用DMA实现:
这里需要配置定时器来选择DAC的触发频率。没有解决,心态炸裂,就是不工作
2.生成三角波(周围没有示波器无法实验)
DAC外部触发(Trigger) :选择一个定时器触发
波形生成模式(Wave generation mode) :三角波发生器(Triangle wave generation),和噪声波形(noise wave generation)
最大三角波幅(Maximum Triangle Amplitude) :4095,
设三角波幅值为3.3V,即4095
DAC12位数据存储,最大为4095,0-4095 对应 0V~3.3V
之后继续配置使能对应的定时器中断。
(以后有机会实验)
2022.6.16更新:
三角波生成配置:
波形生成模式(Wave generation mode) :
三角波发生器(Triangle wave generation)勾选
噪声波形(noise wave generation)不选择
最大三角波幅(Maximum Triangle Amplitude) :4095
如果最大电压是3.3V,那么三角波幅值为3.3V
0 ~ 4095 对应 0V ~ 3.3V
之后配置定时器就好了。
HAL_TIM_Base_Start(&htim2);
程序里打开对应的定时器就行