STM32F4Discovery HAL之DAC输出

前言

STM32所谓的支持双通道的DAC,其实硬件register只有一个地址,分别使用0/1的两个channel来实现2个output的输出
所指的xx位的DAC,实际上是实现的多少的分压,像12bit的DAC,最大分压为4095,10bit的DAC,最大分压1023,这个体现在最终的输出电压设定的value,根据这个value以及分压值来计算最终的电压

环境

软件:
STM32CubeMX V6.2.1
硬件:
STM32F4Discovery

配置

Analog/DAC配置

配置PA4,PA5为默认DAC_OUT1,DAC_OUT2的输出GPIO
在这里插入图片描述
针对3V的输入下,实测下来,开启DAC的输出缓存,输出的电压会更加接近预期值
DAC_OUT,缓冲器打开时,最小0.2,最大Vref±0.2(V)

配置DAC1,DAC2的DMA
在这里插入图片描述
其它的配置参考:DAC接口使用.

代码

函数说明

DAC初始化主函数:MX_DAC_Init();
DAC instance 初始化函数:HAL_DAC_Init(&hdac)
DAC 绑定GPIO口设定函数:HAL_DAC_MspInit(hdac)
DAC配置channel1:HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1)
DAC配置channel2:HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_2)
DAC设定函数:HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)

  • hdac:即初始化的instance dac
  • channel:DAC配置的channel
  • Alignment:12位右对齐/左对齐,8位右对齐
  • data:设定的电压比例。这个就是前言中提到的分压比,12bit的最大为4095,10bit的最大为1023.以3V的输入为例:计算电压的设定出实际输出公式为:data * 3 / 4095,假设data设定4095,输出为3V(实际测量2.94V),data设定为2048,输出1.5V(实际测量1.478V)
代码实例

设定DAC_OUT1为1.5V,DAC_OUT2为3V,对应的GPIO口,PA4为DAC1,PA5为DAC2

if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Data) != HAL_OK )
      Error_Handler();
if (HAL_DAC_Start(&hdac, DAC_CHANNEL_1) != HAL_OK )
      Error_Handler();

if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, Data) != HAL_OK )
      Error_Handler();
if (HAL_DAC_Start(&hdac, DAC_CHANNEL_2) != HAL_OK )
      Error_Handler();
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4中,使用HAL库配置DAC需要进行以下步骤: 1. 初始化DAC实例:使用MX_DAC_Init()函数进行初始化。 2. 配置DAC通道:使用HAL_DAC_ConfigChannel()函数配置DAC的通道,可以选择配置通道1或通道2。 3. 设置DAC数值:使用HAL_DAC_SetValue()函数设置DAC输出的数值,其中包括通道、对齐方式和数据值。 4. 开启DAC输出:使用HAL_DAC_Start()函数开启DAC输出。 5. 关闭DAC输出:使用HAL_DAC_Stop()函数关闭DAC输出。 此外,还可以使用DMA方式进行DAC输出,具体步骤如下: 1. 开启DAC的DMA输出:使用HAL_DAC_Start_DMA()函数开启DAC的DMA输出,需要指定通道、数据缓冲区、数据长度和对齐方式。 2. 关闭DAC的DMA输出:使用HAL_DAC_Stop_DMA()函数关闭DAC的DMA输出。 以上是使用HAL库进行DAC配置的基本步骤,具体的代码实例可以参考引用\[1\]和引用\[2\]中提供的代码片段。 #### 引用[.reference_title] - *1* [STM32F4Discovery HALDAC输出](https://blog.csdn.net/jsrgliuze/article/details/118964884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【STM32】HAL库 ——DAC](https://blog.csdn.net/Qxiaofei_/article/details/119108963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32F4 (hal库)ADC+TIM1+DAC的配置](https://blog.csdn.net/qq_45305276/article/details/115221150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值