学习日记——DAC实验(2020.2.6)

2023-11-13

区分ADC和DAC

ADC(输入)——模拟量转到数字量输入
DAC(输出)——数字量转到模拟量输出

概念

  • 数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。
  • DAC可以配置为8位或12位模式,也可以与DMA控制配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有独立的转换器。在双DAC模式下,两个通道可以独立地进行转换,也可以同时进行转换并同步更新两个通道的输出。DAC还可以通过引脚输入参考电压VREF+以获得更多精确的转结果。

DAC主要特征

  • 两个DAC转换器:每个转换器对应一个输出通道(ADC有三个A/D转换器,有16个外部输入通道)
  • 8位或12位单调输出
  • 12位模式下数据左对齐或右对齐
  • 双DAC通道同时或者分别转换
  • 每个通道都有DMA功能
  • 外部触发转换(中断触发TENx位被置1,定时器触发TENx位被置1,软件触发SWTRIG自动清零)
  • 输入参考电压VREF+
    注释:
  • DMA为直接内存访问,是一种不经过CPU而直接从内存中存取数据的数据交换模式,PIO模式下硬盘和内存之间的数据传输是由CPU来控制的;而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。DMA模式与PIO模式的区别就在于,DMA模式不过分依赖CPU,可以大大节省系统资源,二者在传输速度上的差异并不十分明显。
  • **电压VREF+**是指电路中一个与负载、功率供给、温度漂移、时间等无关,能保持始终恒定的一个电压。参考电压可以被用于电源供应系统的稳压器,模拟数字转换器和数字模拟转换器,以及许多其他测量、控制系统。参考电压的大小在不同的应用中有所不同,例如在一般的计算机电源供应系统里,参考电压误差不大于其标称值附近百分之一至百分之几间,而实验室的参考电压标准则拥有更高的、以百万分率度量的稳定性和精确度。

DAC引脚

  • Vref+:输入,正模拟参考电压(DAC使用的高端/正极参考电压)范围:2.4v-3.3v
  • Vdda:输入,模拟电源3.3v
  • Vssa:输入,模拟电源地线GND
  • DAC_OUTx,模拟输出信号
    注释一旦使能DACx通道,相应的GPIO引脚(PA4或者PA5)就会自动与DAC的模拟输出相连(DAC_OUTx)。为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN)。若不设置也可以,设置的话会有效的避免一些问题,所以一般应设置。

使能

  • 使能DAC通道
    将DAC_CR寄存器的ENx位置"1"即可打开对DAC通道x的供电。经过一段时间启动时间tWAKEUP,DAC通道x即被使能。(ENx位只会使能DAC通道x的模拟部分,即便该位被置“0”,DAC通道x数字部分仍然工作。

  • 使能DAC输出缓存
    DAC集成了两个输出缓存,可以用来减少输出阻抗,无需外部运放即可直接驱动外部负载。每个DAC通道输出缓存可以通过设置DAC_CR寄存器的BOFFx位来使能或者关闭(

DAC输出电压

数字输入经过DAC被线性的转换为模拟电压输出其范围是0到VREF+(3.3v)
任以DAC通道引脚上的输出电压满足下面的关系
DAC输出=VREF+X(DOR/4095(2进制的12个1转换成十进制的便是4095))

DAC数据格式

根据选择的配置模式,数据按照下面所述写入指定的寄存器:
——8位数据右对齐:用户将数据写入寄存器DAC_DHR8Rx[7:0]位(实际是存入寄存器DHRx[11:4]位)
——12位数据左对齐:用户将数据写入寄存器DAC_DHR12Lx[15:4]位(实际是存入寄存器DHRx[11:0]位)
——12位数据右对齐:用户须将数据写入寄存器DAC_DHC12Rx[11:0]位实际是存入寄存器DHRx[11:0])
根据对DAC_DHRyyyx寄存器的操作,经过相应的移位后,写入的数据被转存到DHRx寄存器中(DHRx是内部的数据保存寄存器x)随后,DHRx寄存器的内容或被自动地传送到DORx寄存器(非人工),或通过软件触发或外部事件触发被传送到DORx寄存器。

DAC转换

在这里插入图片描述
当我们将数据写入DAC_DHR寄存器 ,实际上是写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12RxDAC8RD、DAC_DHR12LD、DAC12RD。若无硬件触发,则在一个APB1时钟后转入DAC_DORx。若有硬件触发,在3个APB1时钟后写入DAC_DHRx经过tSETTLING之后既可以输出数据
TEN=0触发使能时转换得时间框图如下:
在这里插入图片描述

代码编写说明

1、数模转换分辨率为8位
2、打印换算电压,换算成电压为=转换值*实际电压/255
调用函数:
1、HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);//启动DAC转换
2、HAL_DAC_SetValue(DAC_HandleTypeDef hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);//输出模拟量
3、HAL_GPIO_ReadPin(GPIO_TypeDef
GPIOx, uint16_t GPIO_Pin);//读取按键状态
4、void HAL_Delay(uint32_t Delay);//延时函数,用于消除按键抖动 5、printf();//打印数据到串口函数 需要重新定义函数fputc();才能正常使用printf();

参考链接

https://www.dianyuan.com/class/video_1574.html
https://blog.csdn.net/baidu_37366055/article/details/98069127
https://wenda.so.com/q/1514458541214925src=170&q=%E7%94%B5%E5%8E%8BVREF%2B

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习日记——DAC实验(2020.2.6) 的相关文章

  • Android Apache安装及局域网手机无法访问解决办法

    Android Apache安装及局域网手机无法访问解决办法 Apache是一款常用的开源Web服务器软件 可以在Android设备上安装并提供Web服务 本文将介绍如何在Android设备上安装Apache 并提供解决方案以解决在同一局域
  • 代码静态分析工具——splint的学习与使用

    引言 最近在项目中使用了静态程序分析工具PC Lint 体会到它在项目实施中带给开发人员的方便 PC Lint是一款针对C C 语言 windows平台的静态分析工具 FlexeLint是针对其他平台的PC Lint版本 由于PC Lint
  • ResNet简介

    ResNet Residual Network 此网络于2015年 国人何先生提出 用于解决随着深度学习的层数加深造成的网络退化现象和梯度消失 梯度爆炸 问题1 退化现象 当深度学习的各项指标能够随着训练轮数收敛的情况下 网络的层数增强未能
  • 深度学习车辆检测实现自动驾驶

    在本文中 我将通过一个车辆检测示例演示如何使用深度学习创建目标检测器 相同的步骤可用于创建任何目标探测器 我经常有朋友和同事问我自动驾驶系统如何感知周围的环境并做出 人类 的决定 目标检测是指对图像和视频中的目标进行定位和分类 下图显示了一
  • MySQL体系结构及数据库在Linux的部署

    数据库 存储数据的仓库 是长期存放在计算机内 有组织 可共享的大量数据的集合 数据库中的数 据按照一定数据模型组织 描述和存储 具有较小的冗余度 较高的独立性和易扩展性 并为各种用户共享 先来看看MySQL的体系架构图 可以看出MySQL的
  • 关于串口通信协议的解析,该怎么解决

    关于串口通信协议的解析 该怎么解决 串口通信协议 由于本系统采用非规范式输入 导致一帧数据可能分成几次接收 为了能够判断一帧数据是否接收完整 本系统制定了一套特殊的串口通信协议 如附图所示 附图 通信协议定义 在本系统的串口通信协议中 一帧
  • sql sever2008 R2 检测到索引可能已损坏。请运行 DBCC CHECKDB。

    1 设置成单用户状态 USE MASTER ALTER DATABASE DBNAME SET SINGLE USER GO DBNAME为修复的数据库名 2 执行修复语句 检查和修复数据库及索引 dbcc checkdb DBNAME R
  • 【pip】彻底解决 module ‘tensorflow‘ has no attribute ‘random_normal‘

    翻译 tensorflow显示没有random normal模块 解决 将代码中的 tf random normal 用tf random normal代替 区分 与
  • [leetcode]python3 算法攻略-回文链表

    请判断一个链表是否为回文链表 方案一 指针法 class Solution def isPalindrome self head 判断一个链表是否是回文的 很自然的想法就是两个指针 一个指针从前往后走 一个指针从后往前走 判断元素值是否相同
  • mysql读写分离与监控的使用(proxysql)

    os rhel 7 3 mysql 5 7 proxysql 1 4 15 1 ip 规划如下 172 25 11 1 node1 proxysql 172 25 11 2 node2 mysql master 172 25 11 3 no

随机推荐

  • 对于解决Visual Studio中scanf函数报错的原因及解决方法

    对于C语言初学者 可能会用到devC 或者是visual studio软件 我本人是比较推荐visual studio软件的 毕竟这个软件使用起来功能比devc 软件功能更多 而初学者在使用visual studio软件时会发现在使用初始的
  • Unity-委托2种常用使用场景总结

    委托使用场景1 调用委托 可以分发多个方法出去 举例 定义多个通知不同人的信息 例如经理 员工 客户 可以针对性的制定不同的通知 调用委托 可以一次性的群发给他们 委托使用场景2 方法的参数是个方法 例如按钮方法 参数是一个点击事件的方法
  • 麦克灵敏度调整

    1 先看MIC电路连接 这是个差分输入的例子 MICP2和MICN2是一对差分信号 经过C156的滤波 输入到MIC两端 MIC两引脚分别是到地和供电 上图的R177参数就关系到MIC输入的灵敏度 2 电阻R177影响灵敏度分析 MICBI
  • C++中函数返回引用

    1 返回引用和不返回引用的区别 下面两个代码是在类中的成员函数 而m data 变量为类的私有成员变量 int at return m data int at return m data 上面两个函数 第一个返回值是int的引用int 第二
  • Log Structured Merge Trees(LSM) 原理

    Log Structured Merge Trees LSM 原理 十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree
  • 【数据结构】唯一确定一个二叉树的方法

    唯一确定一棵二叉树的方法 在了解以何种方式能唯一确定一棵二叉树之前 需要先认识树的遍历方式有哪几种 树的遍历方式 先序遍历 后序遍历 层序遍历 二叉树的遍历方式 先序遍历 中序遍历 后序遍历 层序遍历 确定的方式 那么如何唯一确定一棵二叉树
  • “0xc000007b无法正常启动”解决方案汇总

    今天在运行一个Opengl项目时总是一直报 0xc000007b无法正常启动 的错误 于是百度了一些解决方案 当然这些解决方案是针对不同错误原因提出来的 所以如果读者也遇到同样的错误可以一一尝试 或者首先分析原因再选择解决方案 现将这个问题
  • 如何在windows编译ffmpeg

    在Windows上编译FFmpeg可以使用MSYS2或Cygwin来配置编译环境 然后使用MinGW或Visual Studio等工具进行编译 下面是使用MSYS2和MinGW的步骤 下载并安装MSYS2 https www msys2 o
  • qt中关于按钮的click()函数卓见

    概述 按钮有一个基类QAbstractButton 这个类中有一个函数click j几乎所有的函数都继承了这个类QAbstractButton 同时这个函数click 是一个公有的槽函数 也就是意味着所有的子类都可以调用这个函数 而这个cl
  • java基础之用switch判断学生成绩等级

    package 流程控制 练习 1 用switch语句完成输入学生的考试成绩判断成绩等级 2 等级 优秀 90 100 良好 80 90 中等 70 80 及格 60 70 不及格 0 60 3 成绩必须在 0 100 之间 import
  • Vue中filters过滤器的封装

    目录 Vue中的filters过滤器是什么 Vue中为什么要封装filters过滤器 封装准备开始 如何封装一个全局的filters过滤器 Vue中的filters过滤器是什么 在vue中过滤器实质上是对文本进行格式化 在渲染前对数据进行处
  • joblib嵌套式并行运行方式

    20220811 0 引言 在进行机器学习的相关实验中 当使用sklearn的时候 通常可以通过n jobs 1这个参数实现某些算法的并行化 例如集成学习的方法 或者是参数搜索的函数 通过查看相关的文档 或者直接去看这个代码 可以发现skl
  • 您的设备不支持googleplay服务_[GoPro] APP不支持Google Play服务解决办法

    很多安卓手机用户在初次使用GoPro APP的时候有可能会遇到下图设备不支持Google Play服务的提示 这是因为国内手机默认设置没有Google三件套 接下来我们介绍两种解决办法 一适用除部分华为新机型以外的安卓机 首先直接网页搜索或
  • 【论文笔记】nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation

    nnU Net 一种基于深度学习的自配置生物医学图像分割方法 Results nnU Net的自动配置基于将领域知识提取成三个参数组 固定的 基于规则的和经验的参数 收集不需要在数据集之间进行调整的设计决策 并确定稳健的通用配置 fixed
  • mysql一行逗号分割的数据分解为多行

    在 MySQL 中 你可以使用函数 REPLACE 和 SUBSTRING INDEX 来将一行逗号分隔的数据分解为多行 例如 假设你有一个表 其中包含一列 items 该列包含逗号分隔的字符串 如下所示 id items 1 item1
  • 机器学习笔记 - 【机器学习案例】在表格数据上应用高斯混合模型GMM和网格搜索GridSearchCV提高分类精度

    1 需求及数据集说明 这是一项二分类任务 评估的是分类准确性 正确预测的标签百分比 训练集有1000个样本 测试集有9000个样本 你的预测应该是一个9000 x 1的向量 您还需要一个Id列 1到9000 并且应该包括一个标题 格式如下所
  • 【学习笔记】数据存储的顺序与对齐_计算机原理

    学习笔记 数据存储的顺序与对齐 计算机原理 开了个新坑 做一个计算机原理的读书笔记 自用 仅做分享 数据存储的顺序 介绍了机器端模式 数据存储的对齐 这里介绍的是 数据结构的存储方式是根据给定的字节和自己本身的字节做对齐的 比如 4 4 4
  • 浅谈SSM框架下实现简单登录界面

    SSM框架搭建结果 Login jsp
  • C:\Python27\python.exe: can't open file '2.py': [Errno 2] No such file or directory

    最近开始学习了 笨方法学python 在练习的第一个程序就出现了如下错误 C Python27 python exe can t open file 2 py Errno 2 No such file or directory 刚开始自己找
  • 学习日记——DAC实验(2020.2.6)

    区分ADC和DAC ADC 输入 模拟量转到数字量输入 DAC 输出 数字量转到模拟量输出 概念 数模转换器 又称D A转换器 简称DAC 它是把数字量转变成模拟的器件 D A转换器基本上由4个部分组成 即权电阻网络 运算放大器 基准电源和