天天看点

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

文章目录

  • 1.DAC输出
    • 1.1 DAC简单介绍
    • 1.2 DAC主要特点、功能和输出公式
    • 1.3 工程配置
    • 1.4 代码编写
    • 1.5 电路图和实物连接
    • 1.6 现象观测
  • 2.PWM DAC实验
    • 2.1 PWM DAC简单介绍
    • 2.2 PWM DAC实现

1.DAC输出

1.1 DAC简单介绍

上面,我们介绍了 STM32F4 的 ADC 使用,在此将介绍 STM32F4 的 DAC功能。

来自原子哥STM32开发指南HAL库版本。

STM32F4 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。 DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。 DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下, 2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输出。 DAC 可以通过引脚输入参考电压 Vref+(通 ADC 共用) 以获得更精确的转换结果。

1.2 DAC主要特点、功能和输出公式

① 2 个 DAC 转换器:每个转换器对应 1 个输出通道

② 8 位或者 12 位单调输出

③ 12 位模式下数据左对齐或者右对齐

④ 同步更新功能

⑤ 噪声波形生成

⑥ 三角波形生成

⑦ 双 DAC 通道同时或者分别转换

⑧ 每个通道都有 DMA 功能

当 DAC 的参考电压为 Vref+的时候, DAC 的输出电压是线性的从 0~Vref+, 12 位模式下 DAC 输出电压与 Vref+以及 DORx 的计算公式如下:

DACx 输出电压=Vref ×(DORx/4095)

1.3 工程配置

开启DAC1和ADC1_IN1。保持默认配置。

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验
STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

开启串口1。

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

1.4 代码编写

重写printf函数:
#include “stdio.h”
int fputc(int c,FILE *stream)
{
	uint8_t ch[1]={c};
	HAL_UART_Transmit(&huart1,ch,1,0xFFFF);
	return c;
}
while:
		HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,4095);
		HAL_Delay(10);
		HAL_ADC_Start(&hadc1);
		uint16_t Value=HAL_ADC_GetValue(&hadc1);
		HAL_Delay(10);
		printf("Value = %d\r\n",Value);
		HAL_Delay(200);
           

1.5 电路图和实物连接

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验
STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

P12 是多功能端口,我们只需要通过跳线帽短接 P14 的 ADC 和 DAC,就可以开始做实验了。

1.6 现象观测

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

但通过电压表测量可以发现确实输出电压受输出值的调制。实验结果没错。

STM32 CubeMx(五)DAC输出和PWM DAC实验1.DAC输出2.PWM DAC实验

2.PWM DAC实验

上面介绍了 STM32F4 自带 DAC 模块的使用,但有时候,可能两个 DAC 不够

用,此时,我们可以通过 PWM+RC 滤波来实一个 PWM DAC。在此将向大家介绍如何使用 STM32F4 的 PWM 来设计一个 DAC。

来自原子哥STM32开发指南HAL库版本。

2.1 PWM DAC简单介绍

有时候, STM32F4 自带的 2 路 DAC 可能不够用,需要多路 DAC,外扩 DAC 成本又会高不少。此时,我们可以利用 STM32F4 的 PWM+简单的 RC 滤波来实现 DAC 输出,从而节省成本。 在精度要求不是很高的时候, PWM+RC 滤波的 DAC 输出方式,是一种非常廉价的解决方案。

2.2 PWM DAC实现

个人感觉和PWM控制占空比输出电压差不多。

本人在这篇博客中记录了PWM输出的内容。

STM32应用(一)控制舵机SG90/MG996R/数字舵机

继续阅读