嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)本文详细介绍了 DAC 的基本概念 主要特性 寄存器功能 数据格式 配置步骤 以及如何实现输出三角波和正弦波

大家好,欢迎来到IT知识分享网。

目录

一、初识DAC

1. 介绍

2. DAC主要特性

3. DAC的特性参数

二、相关寄存器

1. 控制寄存器(DAC_CR)

2. DAC通道1 的12位右对齐数据保持寄存器(DAC_DHR12R1)

3. 通道1数据输出寄存器(DAC_DOR1)

三、DAC结构

1. DAC框图

2. DAC数据格式

(1)单DAC通道

(2)双DAC通道

3. 触发源

4. DMA请求

5. DAC输出电压

四、DAC配置步骤

五、输出三角波理解

六、配置正弦波


一、初识DAC

1. 介绍

        DAC(Digital-to-Analog Converter,指数字/模拟转换器)可以配置为8位或12位模式,也可以与DMA控制器配合使用。

        ADC 与 DAC是模拟电路与数字电路之间的桥梁

嵌入式——数字/模拟转换模块(DAC)

2. DAC主要特性

嵌入式——数字/模拟转换模块(DAC)

补:

(1)12位 模式下数据左对齐或者右对齐。

(2)双 DAC通道 同时或者分别转换。

(3)外部触发 转换。

(4)同步更新功能。

(5)噪声波形 生成。

(6)三角波形 生成。

3. DAC的特性参数

(1)分辨率:表示模拟电压的最小增量,常用二进制位数表示,如:8、12位等。

(2)建立时间:表示将一个数字量转换为稳定模拟信号所需的时间。

(3)精度:转换器实际特性曲线与理想特性曲线之间的最大偏差误差源:比例系统误差、失调误差、非线性误差

原因:元件参数误差、基准电压不稳定、运算放大器零源等。

二、相关寄存器

1. 控制寄存器(DAC_CR

嵌入式——数字/模拟转换模块(DAC)

位12( DMAEN1):DAC通道1 DMA使能。

位5:3( TSEL1[ 2:0 ] ):DAC通道1 触发选择。

位2( TEN1):DAC通道1 触发使能。( 由软件 设置和清除,用来使能/关闭DAC通道1的触发)

位1( BOFF1):关闭DAC通道1 输出缓存。( 可减少阻抗,使输出能力会强一些,但无法输出 0 )

位0( EN1):DAC通道1 使能

2. DAC通道1 的12位右对齐数据保持寄存器(DAC_DHR12R1

嵌入式——数字/模拟转换模块(DAC)

3. 通道1数据输出寄存器(DAC_DOR1)

嵌入式——数字/模拟转换模块(DAC)

三、DAC结构

1. DAC框图

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

2. DAC数据格式

        不能直接对寄存器 DORx写入数据,任何输出到 DAC通道 x 的数据都必须写入 DHRx寄存器( 数据实际写入 DHR8Rx、DHR12Lx、DHR12Rx、 DHR8RD、DHR12LD、DHR12RD寄存器 )

(1)单DAC通道

① 8位模式:只能右对齐。用户须将数据写入寄存器 DHR8Rx位。

② 12位模式:

        1)右对齐。用户须将数据写入寄存器DHR12Rx位。(常用

        2)左对齐。用户须将数据写入 寄存器DHR12Lx位。

嵌入式——数字/模拟转换模块(DAC)

(2)双DAC通道

① 8位模式:只能右对齐。用户须将数据写入寄存器 DHR8RD位。

② 12位模式:

        1)右对齐。用户须将数据写入寄存器 DHR12RD位。

        2)左对齐。用户须将数据写入寄存器 DHR12LD位。

嵌入式——数字/模拟转换模块(DAC)

3. 触发源

        有三种触发转换的方式:自动触发、软件触发、外部事件触发

(1)禁止触发 ( 即自动触发 ):寄存器DAC_CR1的TENx位置0。经过1个APB1时钟周期,DHRx ⇨ DORx

(2)使能触发:寄存器DAC_CR1的 TENx 位 置1。

        ① 外部事件触发:TSELx[2:0] ≠ 111。经过3个APB1时钟周期,DHRx ⇨ DORx

        ② 软件触发:TSELx[2.0] = 111。 经过1个APB1时钟周期,DHRx ⇨ DORx

嵌入式——数字/模拟转换模块(DAC)

        每次 DAC接口 侦测到来自 选中的定时器 TRGO 输出,或者 外部中断线 9 的上升沿,最近存放在 寄存器DHRx 中的数据会被传送到 寄存器DORx 中。如果选择 软件触发,一旦SWTRIG位 置1,转换即开始。在数据从 DHRx寄存器 传送到 DORx寄存器 后,SWTRIG位 由硬件自动清 0。

嵌入式——数字/模拟转换模块(DAC)

        一旦数据从 DHRx寄存器 装入 DORx寄存器 ,在 经过时间 tSETTLING之后 ,输出即有效,这段时间的长短依 电源电压和模拟输出负载 的不同会有所变化。

4. DMA请求

        任—DAC通道都具有DMA功能。2个DMA通道可分别用于2个DAC通道的DMA请求

嵌入式——数字/模拟转换模块(DAC)

        如果 DMAENx位 置1,一旦有外部触发(不是软件触发)发生,则产生一个DMA请求,然后DHRx寄存器 的数据被传送到 DORx寄存器。

        在双DAC模式下,如果2个通道的 DMAENx位 都为1,则会产生 2个DMA请求。如果实际只需要 一个DMA传输,则应只选择其中一个 DMAENx位 置1。这样,程序可以在只使用一个DMA请求,一个 DMA通道的情况下,处理工作在 双DAC模式的2个DAC通道

        DAC的 DMA请求不会累计,因此如果 第 2个外部触发发生在响应第 1个外部触发 之前,则不能处理第 2个DMA请求,也不会报告错误。

5. DAC输出电压

(1)12位模式,DAC输出电压计算方法:

嵌入式——数字/模拟转换模块(DAC)

(2)8位模式,DAC输出电压计算方法:

嵌入式——数字/模拟转换模块(DAC)

四、DAC配置步骤

1. 初始化DAC:HAL_DAC_Init()

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

2. DAC MSP初始化:HAL_DAC_Msplnit()   (配置NVIC、CLOCK、GPIO等)

3. 配置DAC相应通道的相关参数:HAL_DAC_ConfigChannel()

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

4. 启动D/A转换:HAL_DAC_Start()

嵌入式——数字/模拟转换模块(DAC)

5. 设置输出数字量:HAL_DAC_SetValue()

嵌入式——数字/模拟转换模块(DAC)

6. 读取通道输出数字量(可选):HAL_DAC_GetValue()

嵌入式——数字/模拟转换模块(DAC)

五、输出三角波理解

1. 设置一个DAC最大幅值

2. 设置定时器溢出时间

3. 每次定时器溢出,三角波计数器就会累加1

4. 若该值小于设定的最大幅值,就会正常输出。

5. 当该值大于等于最大幅值时就会递减。

6. 减到0之后又开始累加。

7. 周而复始,形成了三角波

嵌入式——数字/模拟转换模块(DAC)

六、配置正弦波

1.初始化DMA、将DMA和ADC句柄联系起来:HAL_DMA_Init()、__HAL_LINKDMA()( 函数连接DMA和外设)

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

2.初始化DAC:HAL_DAC_Init()

3.DAC MSP初始化:HAL_DAC_Msplnit() ( 配置NVIC、CLOCK、GPIO等)

4.配置DAC相应通道相关参数:HAL_DAC_ConfigChannel()

5.启动DMA传输:HAL_DMA_Start()

嵌入式——数字/模拟转换模块(DAC)

6.配置定时器溢出频率并启动:HAL_TIM_Base_Init()、 HAL_TIM_Base_Start()

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

7.配置定时器触发DAC转换:HAL_TIMEx_MasterConfigSynchronization()

嵌入式——数字/模拟转换模块(DAC)

嵌入式——数字/模拟转换模块(DAC)

8.停止/启动DAC转换、DMA传输:HAL_DAC_Stop_DMA()、HAL_DAC_Start_DMA()

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137015.html

(0)
上一篇 2025-06-23 17:33
下一篇 2025-06-23 17:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信