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

目录

一、初识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是模拟电路与数字电路之间的桥梁

2. DAC主要特性

补:

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

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

(3)外部触发 转换。

(4)同步更新功能。

(5)噪声波形 生成。

(6)三角波形 生成。

3. DAC的特性参数

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

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

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

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

二、相关寄存器

1. 控制寄存器(DAC_CR

位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

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

三、DAC结构

1. DAC框图

2. DAC数据格式

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

(1)单DAC通道

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

② 12位模式:

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

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

(2)双DAC通道

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

② 12位模式:

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

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

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

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

4. DMA请求

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

        如果 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输出电压计算方法:

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

四、DAC配置步骤

1. 初始化DAC:HAL_DAC_Init()

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

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

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

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

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

五、输出三角波理解

1. 设置一个DAC最大幅值

2. 设置定时器溢出时间

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

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

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

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

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

六、配置正弦波

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

2.初始化DAC:HAL_DAC_Init()

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

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

5.启动DMA传输:HAL_DMA_Start()

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# .Net Framework Swagger

1.安装 Swagger 在NuGet程序包中安装以下文件 Swashbuckle: Swagger: Swagger.Net: 2.在项目APP_Start 文件夹下面找到 SwaggerNet.cs文件 1.注释掉这两行代码 2.将PreStart方法的内容修改为以下 public static void PreStart() {RouteTable.Routes.MapHttpRoute(…

Message Queue --- RabbitMQ

MessageQueue Intro 什么是MQ为什么使用MQ常见的MQ 什么是MQ MQ全称是Message Queue,消息的队列,因为是队列,所以遵循FIFO 先进先出的原则,它是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,M…

Win搭建PalWorld服务器,幻兽帕鲁开服联机教程,0基础保姆级教程

Windows系统搭建幻兽帕鲁私服,PalWorld开服联机教程,零基础保姆级教程。 最近这游戏挺火,很多人想跟朋友联机,如果有专用服务器,就不需要房主一直开着电脑,稳定性也好得多。 视频教程:https:/…

vue-cli组件的使用

一、前言 ​ 本文介绍 vue-cli组件的使用&#xff0c;基于已经搭建好的基础项目。关于 vue-cli 构建项目的详细流程&#xff0c;可参考博文&#xff1a;使用vue脚手架构建项目 二、使用步骤 1、创建Header.vue组件 在components 目录下创建 Header.vue 编写Header.vue <…

figure方法详解之清除图形内容

figure方法详解之清除图形内容 一 clf():二 clear():三 clear()方法和clf()方法的区别&#xff1a; 前言 Hello 大家好&#xff01;我是甜美的江。 在数据可视化中&#xff0c;Matplotlib 是一个功能强大且广泛使用的库&#xff0c;它提供了各种方法来创建高质量的图形。在 Mat…

SSE长连接( SpringBoot整合SSE(Server-Sent Events)可以实现后端主动向前端推送数据)

Demo代码分享 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.or…

Java编程练习之类的封装2

1.封装一个股票&#xff08;Stock&#xff09;类&#xff0c;大盘名称为上证A股&#xff0c;前一日的收盘点是2844.70点&#xff0c;设置新的当前值如2910.02点&#xff0c;控制台既要显示以上信息&#xff0c;又要显示涨跌幅度以及点数变化的百分比。运行效果如下&#xff1a;…

【2024美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文 引言 题目将于2024年2月2日6:00发布。我们团队将会在8点前准时更新问题分析&#xff0c;逐步更新数学模型和实现代码&#xff0c;最后发布完整的论文。 更新进展&#xff1a; &#xff08;…

朋友,我在项目挺好的

2024年&#xff0c;是优橙教育成立第7年。过去6年&#xff0c;我们迎来送往&#xff0c;曾与一届届网优人并肩作战。 今天&#xff0c;我们不问所在何处&#xff1f;只想遥问曾在优橙的每一个你 嘿&#xff01;朋友&#xff0c;最近过得怎么样&#xff1f;现在的你和曾经的自…

IEC 104电力规约详细解读(二) - 总召唤

1功能简述 总召唤功能是在初始化以后进行&#xff0c;或者是定期进行总召唤&#xff0c;以刷新主站的数据库。总召唤时请求子站传送所有的过程的变量实际值。定期进行总召唤的周期的是一个系统参数&#xff0c;可以是15分钟或者更长的时间。 总召唤的内容包括子站的遥信、遥测…

【软件设计师笔记】计算机系统基础知识考点

&#x1f413; 计算机系统组成 计算机系统是由硬件和软件组成的&#xff0c;它们协同工作来运行程序。计算机的基本硬件系统由 运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成 在一起统称为中央处理单元&#xff08;Central Processing …

springboot+AOP+自定义注解+RBAC自定义操作权限管理02

springbootAOP自定义注解RBAC自定义操作权限管理02!经过上一次的凑话部署&#xff0c;我们这一次&#xff0c;增加了一个后端管理系统菜单栏的访问权限的数据表。用角色表&#xff0c;和这张菜单栏的数据表进行映射。不同的角色&#xff0c;可以看见不同的菜单栏目。 这个就是菜…

Maya------创建多边形工具

配合导入图像使用 Tab键可以删除一个点&#xff01; 模型不能超过4边面&#xff01;多切割工具进行连接&#xff01; 15.maya常用命令5.创建多边形工具 反转 双显 挤出_哔哩哔哩_bilibili

不做烧钱买卖,2025年实现双百万量产!奇瑞和大卓智能「不客气」了

随着造车从技术思维向用户思维转变&#xff0c;车企的自研边界逐渐清晰。 一方面&#xff0c;前两年各车企围绕高阶智驾制定的目标&#xff0c;基本都没有达到预期。尤其是疯狂烧钱堆料&#xff0c;并没能换来销量暴涨和C端消费者的满意度&#xff0c;也让部分车企也开始反思&…

电子电器架构——车载网关转发buffer心得汇总

电子电器架构——车载网关转发buffer心得汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力…

leetcode-704.二分查找

题目 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9输出: 4 解释: 9 …

Unity使用反向遮罩实现镂空shader

实现步骤&#xff1a; 1&#xff0c;创建两个材质球&#xff0c;遮罩层的属性如下&#xff1a; 被遮罩层的属性如下&#xff1a; 2&#xff0c;使用两张image&#xff0c;遮罩层在父节点&#xff0c;被遮罩层在子节点&#xff0c;然后分别添加材质球与镂空图片 实现效果如下&a…

使用AnimeGAN2将照片动漫化--入门

使用AnimeGAN2将照片动漫化--入门 1. 环境准备2. 使用3. 总结 1. 环境准备 首先下载AnimeGAN2:https://github.com/TachibanaYoshino/AnimeGANv2.git 然后使用conda 创建一个python3.6的环境conda create -n pyt36 python3.6&#xff1a; 创建一个requirements.txt文件&am…

Linux文本三剑客-awk

一、awk的介绍&#xff1a; 1.awk的简介&#xff1a; AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具 可以在无交互的模式下实现复杂的文本操作 相较于sed常作用于一整个行的处理&#xff0c;awk则比较倾向于一行当中分成数个字段来处理&#xff0c;因…

骨传导耳机是什么?使用骨传导耳机可以保护听力吗?

骨传导耳机是一种特殊的蓝牙耳机&#xff0c;通过人体骨骼来传递声音&#xff0c;可以绕过耳道和耳膜直接传达音频到听者的内耳&#xff0c;开放双耳的佩戴方式可以在享受音乐或通话的同时保持对周围环境的感知&#xff0c;这种设计在户外活动或运动等场景下的使用尤为实用&…