DAC特点简介
- 数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。
- DAC输出可以配置为8位或12位模式,也可以与DMA控制器配合使用。
- DAC工作在12位模式时,数据可以设置成左对齐或右对齐。
- DAC模块有2个输出通道,每个通道都有单独的转换器。
- 在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。
- DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
框图
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]位)
-
双通道有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]位)
DAC外部触发源
如果TENx位被置1,DAC转换可以由某外部事件触发(定时器计数器、外部中断线)。配置控制位TSELx[2:0]可以选择8个触发事件之一触发DAC转换。
输出电压计算
输出缓存区
适用于输出高电压
文章来源:https://www.toymoban.com/news/detail-646320.html
实验
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);文章来源地址https://www.toymoban.com/news/detail-646320.html
到了这里,关于STM32—DAC详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!