STM32—DAC详解

DAC特点简介

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

框图

DAC框图
DAC引脚

DAC功能描述

DAC转换

  • 不能直接对寄存器DAC_DORx写入数据,任何输出到DAC通道x的数据都必须写入DAC_DHRx寄存器(数据实际写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、
    DAC_DHR12LD、或者DAC_DHR12RD寄存器)。
  • 如果选中软件触发(寄存器DAC_CR1的TENx位置’0’),那么存入寄存器DAC_DHRx的数据会在一个APB1时钟周期后自动传至寄存器DAC_DORx。
  • 如果选中硬件触发(寄存器DAC_CR1的TENx位置’1’),那么数据传输在触发发生以后3个APB1时钟周期后完成。
  • 一旦数据从DAC_DHRx寄存器装入DAC_DORx寄存器,在经过时间tSETTLING之后,输出即有效,这段时间的长短依电源电压和模拟输出负载的不同会有所变化
    延时时间

DAC数据格式

根据选择的配置模式,数据按照下文所述写入指定的寄存器:

  • 单通道有3种情况:

    • 8位数据右对齐:用户须将数据写入寄存器DAC_DHR8Rx[7:0]位(实际是存入寄存器DHRx[11:4]位)
    • 12位数据左对齐:用户须将数据写入寄存器DAC_DHR12Lx[15:4]位(实际是存入寄存器DHRx[11:0]位)
    • 12位数据右对齐:用户须将数据写入寄存器DAC_DHR12Rx[11:0]位(实际是存入寄存器DHRx[11:0]位)
      单ADC
  • 双通道有3种情况(高级应用先不看):

    • 8位数据右对齐:用户须将DAC通道1数据写入寄存器DAC_DHR8RD[7:0]位(实际是存入寄存器DHR1[11:4]位),将DAC通道2数据写入寄存器DAC_DHR8RD[15:8]位(实际是存入寄存器DHR2[11:4]位)
    • 12位数据左对齐:用户须将DAC通道1数据写入寄存器DAC_DHR12LD[15:4]位(实际是存
      入寄存器DHR1[11:0]位),将DAC通道2数据写入寄存器DAC_DHR12LD[31:20]位(实际是存入寄存器DHR2[11:0]位)
    • 12位数据右对齐:用户须将DAC通道1数据写入寄存器DAC_DHR12RD[11:0]位(实际是存
      入寄存器DHR1[11:0]位),将DAC通道2数据写入寄存器DAC_DHR12RD[27:16]位(实际是存入寄存器DHR2[11:0]位)
      双ADC

DAC外部触发源

如果TENx位被置1,DAC转换可以由某外部事件触发(定时器计数器、外部中断线)。配置控制位TSELx[2:0]可以选择8个触发事件之一触发DAC转换。
DAC触发源

输出电压计算

电压计算

输出缓存区

适用于输出高电压
输出缓存

实验

1)开启 PA 口时钟,设置 PA4 为模拟输入。
使能 GPIOA 时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能RTA时钟
设置 PA1 为模拟输入只需要设置初始化参数即可:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入
2)使能 DAC1 时钟。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能 DAC 通道时钟
3)初始化 DAC,设置 DAC 的工作模式。
void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct)
4)使能 DAC 转换通道。
DAC_Cmd(DAC_Channel_1, ENABLE); //使能 DAC1
5)设置 DAC 的输出值。
DAC_SetChannel1Data(DAC_Align_12b_R, 0);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值