STM32-一文搞懂DAC

所谓DAC,就是数(Digital)模(Analog)转换,将数字信号转换为模拟信号。骚气的是STM32竟然还能输出噪声和三角波,必须得试试!

 

目录

1 STM32的DAC概述

1.1 主要特性

1.2 框图

2 功能详解

2.1 DAC数据格式

2.2 数据寄存器DHR和DOR的关系

2.3 DAC输出电压

2.4 噪声生成

2.5 三角波生成

2.6 双DAC通道

2.6.1 不使用波形发生器的独立触发

2.6.2 使用相同LFSR的独立触发

2.6.3 使用不同LFSR的独立触发

2.6.4 产生相同三角波的独立触发

2.6.5 产生不同三角波的独立触发

2.6.6 同时软件启动

2.6.7 不使用波形发生器的同时触发

2.6.8 使用相同LFSR的同时触发

2.6.9 使用不同LFSR的同时触发

2.6.10 使用相同三角波发生器的同时触发

2.6.11 使用不同三角波发生器的同时触发

3 相关寄存器

3.1 DAC控制寄存器(DAC_CR)

3.2 DAC软件触发寄存器(DAC_SWTRIGR)

3.3 各种DHR数据寄存器

3.4 两个DOR数据寄存器


1 STM32的DAC概述

STM32的DAC模块是12位数字输入,电压输出的数字/模拟转换器,2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。DAC模块在APB1时钟下!

注意:STM32的DAC模块只存在于大容量产品中(FLASH容量在256K~512K之间的)。

1.1 主要特性

  • 2个DAC转换器:每个转换器对应1个输出通道
  • 8位或者12位单调输出
  • 12位模式下数据左对齐或者右对齐
  • 同步更新功能
  • 噪声波形生成
  • 三角波形生成
  • 双DAC通道同时或者分别转换
  • 每个通道都有DMA功能
  • 外部触发转换
  • 输入参考电压VREF+

1.2 框图

单个DAC的框图如下:

主要分为以下部分:

电源和参考电压输出触发源控制寄存器(对应白色)数据寄存器DHR数模转换单元

电源引脚《STM32-一文搞懂ADC》部分已经有介绍了。

输出也没什么好说的,需要注意的是,一旦使能DACx通道,相应的GPIO引脚(PA4或者PA5)就会自动与DAC的模拟输出相连
(DAC_OUTx)。DAC1DAC2模块的输出引脚分是PA4PA5。为避免寄生的干扰和额外的功耗,使用DAC功能时,相应的引脚应当设置成模拟输入(AIN)。

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

所谓触发是指将数据寄存器DORx中的数据转换成模拟信号输出的信号。简单的来说就是刷新输出的信号,因为DOR数据寄存器中的数据更新后并不会立马进行转换,而是要等到触发信号之后才能转换

触发可以选择为:
(1)不使用触发方式,这种方式下,只在向DAC数据寄存器DHR写入数据之后,DAC转化模块自动转换一次。
(2)软件触发方式,这种方式下,向软件触发寄存器SWTRIGR中写入命令时触发转换,也就是将DOR寄存器中的数据进行转换。
(3)外部触发方式。
    (3.1)定时器触发,这是一种周期性的触发方式,也就是周期性刷新方式。那什么时候会用到这种方式呢?复杂波形!比如输出三角波。后面会说到,三角波的数据生成是由一个单独的计数器往复加减生成的,每次触发之后该计数器会加1/减1。试想,如果我们通过定时器来进行触发使其输出幅度以固定时间间隔增减,再设定了这个计数器的最大值,不就可以生成一定频率的三角波了吗?
    (3.2)外部中断EXTI线触发,主要用于外部信号控制DAC转换。

控制寄存器主要对通道x进行配置,如DMA使能、噪声/三角波生成、触发源选择、通道x触发使能等等。后文详述。

数据寄存器DHR共有9个,但本质上是用于存放输出DAC的数据的,这里的数据会在适当的时候传入ODR寄存器进而进行DA输出。

数模转换单元,将数据寄存器中的数据加载到DOR寄存器中,并进行DA转换。

DAC 输出是受 DORx 寄存器直接控制的,但是我们不能直接往 DORx寄存器写入数据,而是通过 DHRx 间接的传给 DORx 寄存器,实现对 DAC 输出的控制。

2 功能详解

2.1 DAC数据格式

具有双DAC模块的STM32产品,其DAC模块有9个数据寄存器(DHR)!其中单通道模式下DAC1好DAC2分别独立使用三个,双通道模式下也有3个寄存器。

单通道模式下的三种数据格式,包括8位右对齐、12位左对齐、12位右对齐。如下图所示

双通道模式下的三种数据格式,同样是8位右对齐、12位左对齐、13位右对齐。如下图所示

2.2 数据寄存器DHR和DOR的关系

数据寄存器DHR是面向开发的寄存器,可以直接写入数据,该数据就是输出到相应的DAC通道的数据。

数据寄存器DOR是直接控制DAC数据输出的寄存器,不能直接对该寄存器写入数据,该寄存器的数据由数据寄存器DHR传入。

如果没有使能外部触发的方式输出DAC,存入寄存器DHR的数据会在一个APB1时钟周期后自动传至DOR。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值