STM32 CubeMx(五)DAC输出和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。保持默认配置。
在这里插入图片描述

在这里插入图片描述
开启串口1。
在这里插入图片描述

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;
}
whileHAL_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 电路图和实物连接

在这里插入图片描述

在这里插入图片描述
P12 是多功能端口,我们只需要通过跳线帽短接 P14 的 ADC 和 DAC,就可以开始做实验了。

1.6 现象观测

在这里插入图片描述
但通过电压表测量可以发现确实输出电压受输出值的调制。实验结果没错。

在这里插入图片描述

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/数字舵机

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值