STM32G4的数模转换器(DAC)功能介绍

目录

概述

1 DAC介绍

1.1 功能

1.2 主要特征

 1.3 DAC特性总结

​2 DAC模块框架结构

3 DAC数据格式

3.1 单DAC通道

 3.2 双通道数据格式

 3.3 有符号、无符号数据

4 DAC数据转换

​5 DAC输出电压


概述

本文主要介绍STM32G4的数模转换器(DAC)功能,包括主要功能特征,DAC在MCU内部的框架结构,数据格式,转换数据波形特征,输出波形电压值计算方法等内容。

1 DAC介绍

1.1 功能

DAC模块是一个12位电压输出数模转换器。DAC可以配置为8位或12位模式,并且可以与DMA控制器一起使用。在12位模式下,数据可以左对齐或右对齐。DAC具有多达两个输出通道,每个输出通道都有自己的转换器。在双DAC通道模式中,当两个通道组合在一起进行同步更新操作时,转换可以独立完成,也可以同时完成。输入参考引脚,VREF+(与其他模拟外设共享)可用于更好的分辨率。

当DAC输出与输出垫断开连接并连接到片上外设时,DACx_OUTy引脚可以用作通用输入/输出(GPIO)。DAC输出缓冲器可以选择性地启用以获得高驱动输出电流。一个单独的校准可以应用于每个DAC输出通道。DAC输出通道支持低功耗模式,采样和保持模式。

1.2 主要特征

DAC的主要特点如下(见图-1:双通道DAC模块)
•多达四个DAC接口,最多两个输出通道
•12位模式下的左或右数据对齐
•同步更新功能
•噪声波和三角波的产生
•锯齿波产生
•双DAC通道独立或同步转换
•每个通道的DMA功能,包括DMA欠运行错误检测
•双重数据DMA功能,减少总线活动
•转换的外部触发器
•DAC输出通道缓冲/非缓冲模式
•缓冲偏移校准
•每个DAC输出可以从DACx_OUTy输出引脚断开
•DAC输出连接到片上外设
•采样和保持模式为低功耗操作在停止模式
•输入参考电压从VREF+引脚或内部VREFBUF参考

 1.3 DAC特性总结

2 DAC模块框架结构

3 DAC数据格式

3.1 单DAC通道

根据所选的配置模式,数据必须按如下方式写入指定的寄存器:

•单DAC通道
有三种可能性:
- 8位右对齐:软件必须将数据加载到DAC_DHR8Rx[7:0]位
(存储在DHRx[11:4]位)
- 12位左对齐:软件必须将数据加载到DAC_DHR12Lx[15:4]位(存储到DHRx[11:0]位)
- 12位右对齐:软件必须将数据加载到DAC_DHR12Rx[11:0]位(存储到DHRx[11:0]位)

根据所加载的DAC_DHRyyyx寄存器的不同,用户写入的数据被转移并存储到相应的DHRx(数据保存寄存器,这是内部非内存映射寄存器)中。然后DHRx寄存器通过软件触发器或外部事件触发器自动加载到DORx寄存器中。

 3.2 双通道数据格式

双DAC通道(可用时)
有三种可能性:
—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]位(存储在dh1[11:0]位中)和DAC通道2的数据加载到DAC_DHR12LD[31:20]位(存储到DHR2[11:0]位)

-
- 12位右对齐:

DAC通道1的数据被加载到DAC_DHR12RD[11:0]位(存储在DHR1[11:0]位中)和DAC的数据channel2被加载到DAC_DHR12RD[27:16]位(存储在DHR2[11:0]位)

根据所加载的DAC_DHRyyyD寄存器的不同,用户写入的数据被转移并存储到DHR1和DHR2(数据保存寄存器,它们是内部非内存映射寄存器)中。然后,DHR1和DHR2寄存器分别通过软件触发器或外部事件触发器自动加载到DAC_DOR1和DOR2寄存器中。

 3.3 有符号、无符号数据

DAC输入数据是无符号的:0x000对应最小值,0xFFF对应12位模式的最大值。

DAC还可以处理2的补码格式的签名输入数据。这是通过在DAC_MCR寄存器中设置SINFORMATx位来实现的。

当设置SINFORMATx位时,写入DHRx寄存器的数据在复制到DAC_DORx寄存器时MSB位反转,DAC接口可以接受签名数据(Q1.15、Q1.11或Q1.7格式)。DAC_DHR12Lx寄存器可用于在数据保持寄存器中存储16位有符号数据。16位数据的12个MSB用于DAC输出数据,MSB位倒置。这四个llb被简单地忽略了。

 

4 DAC数据转换

 DAC_DORx不能直接写入,任何数据传输到DAC通道必须通过加载DAC_DHRx寄存器来执行(写入操作到DAC_DHR8Rx,DAC_DHR12Lx, DAC_DHR12Rx, DAC_DHR8RD, DAC_DHR12RD或DAC_DHR12LD)。

存储在DAC_DHRx寄存器中的数据在一个dac_hclk时钟周期后自动转移到DAC_DORx寄存器中,如果没有选择硬件触发器(TENx位)DAC_CR寄存器被重置)。但是,当选择硬件触发器时(TENx位)设置DAC_CR寄存器)并且触发发生,则在触发信号后执行三个dac_hclk时钟周期的传输。

当DAC_DORx加载DAC_DHRx内容时,根据电源电压和模拟输出负载的不同,经过一段时间的沉淀后,模拟输出电压才可用。

当dac_hclk时钟速率大于80mhz时,需要设置DAC_MCR的HFSEL位。它为从DAC_DHRx寄存器到DAC_DORx寄存器的传输增加了额外的延迟。


有关DAC_DORx更新速率取决于HFSEL位和dac_hclk时钟频率的限制,请参阅下面的表HFSEL描述。
如果在不允许的时间段内发生数据更新或软件/硬件触发事件,则外围设备的行为是不可预测的。
上述时序仅与DAC接口的限制有关。另请参考产品数据表中的tsettlement参数值。

触发器禁用时转换时序图TEN = 0

 5 DAC输出电压

数字输入通过0和VREF+之间的线性转换转换为输出电压。每个DAC通道引脚上的模拟输出电压由以下公式确定:

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Pointnet++改进68:添加FFCM |融合傅里叶卷积

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介绍 …

Linux:解决远程X无法连通问题,X-Server开启TCP连接

一、问题分析 提前申明: 本次实验使用REHL 8 进行操作! 客户机 A 为X-Client ,即远程X的客户端。 服务机 B 为X-Server,即远程X的服务端。 问题的所有操作均在已经配置好Xorg的前提下进行的,不知道不配置会有什么影响&…

零基础Java第十九期:认识String(一)

目录 一、String的重要性 二、String的常用方法 2.1. 字符串构造 2.2. String对象的比较 2.3. 字符串查找 2.4. 转化 2.4. 字符串替换 2.5. 字符串拆分 2.6. 字符串截取 一、String的重要性 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能…

HarmonyOS4+NEXT星河版入门与项目实战--------ArkTs语言与TypeScript语法

文章目录 1、ArkTs语言1、ArkTs 特点2、ArkTs与Javascript关系 2、TypeScript 语法 1、ArkTs语言 在html的开发中,实现一个页面元素,比如Button,往往包含了以下三种要素:JS、HTML、CSS。JS处理逻辑与响应、HTML 用来声明标签生成…

使用yak编写yakit漏洞检测插件

前言 在使用yakit进行编写yaml插件的时候遇到了yaml无法处理的情况,我不知道是不是yaml无法处理或者说是yakit和yaml的兼容还不够,面对变量的处理还是有些难受,于是花了点时间看了官网的yak语法的手册和其他人写的yak插件尝试使用yak语言来完…

信也科技和云杉网络的AI可观测性实践分享

1. 信也科技 2、云杉网络 2.1 中国移动

Blossom:开源私有部署的markdown笔记软件

在信息化、数字化时代,我们每个人的生活和工作都离不开笔记和知识管理。从简单的待办事项,到复杂的项目计划,再到存储大量个人知识的工具,如何选择一个高效、便捷且符合个人需求的笔记软件,成了许多人的难题。最近在逛…

Spring:DI依赖注入的方式

Spring为我们提供了两种注入方式,分别是: setter注入 简单类型引用类型 构造器注入 简单类型引用类型 setter注入 在bean中定义引用类型属性,并提供可访问的set方法配置中使用property标签ref属性注入引用类型对象 (1)项目中添加BookDao、BookDaoIm…

逆向攻防世界CTF系列37-crackme

逆向攻防世界CTF系列37-crackme 参考https://blog.csdn.net/xiao__1bai/article/details/120230397 nspack的壳,查了一下好像是北斗的一个壳 没找到什么脱壳软件,只能手动脱壳了 手动脱壳的最终要的是ESP定律 ESP定律的原理就是“堆栈平衡”原理 涉及…

按钮权限的操作方法

首先先在你的本地储存里边,加入一些你指定的字段 然后创建一个文件夹,在此文件夹下创建一个js文件,文件内容如下 在你所需要隐藏按钮的页面引入此js文件,并且通过 directives自定义指令绑定你的每一个按钮。在js文件中通过三个常量…

vscode 关闭绑定元素 隐式具有“any”类型这类错误

在vue的项目里面,经常看到any类型的报错,真的很烦的 在tsconfig.json中配置以下参数 “noImplicitAny”: false 就可以了 出现类型“never”上不存在属性“userName”。ts-plugin(2339) 配置该参数 modeuleResolution : node "compilerOptions&qu…

springboot 的 Profile

什么是 Profile ? 应用所在的运行环境发生切换时,配置文件常常就需要随之修改。 Profile:——就是一组配置文件及组件的集合。 可以整个应用在不同的profile之间切换(设置活动profile),整个应用都将使用该…

onvif协议相关:4.1.6 Digest方式云台控制启动

背景 关于onvif的其实很早之前我已经在专栏中写了不少了, 使用onvif协议操作设备 但最近有陆陆续续的粉丝问我, 希望我在写一些关于 onvif的设备自动发现、预置位跳转、云台操作的博客。 满足粉丝的需求,安排。 今天我们来实现 设备云台的控制(启动) 实现 1.在ONVIF Devi…

【JAVA毕业设计】基于Vue和SpringBoot的农机电招平台

本文项目编号 T 615 ,文末自助获取源码 \color{red}{T615,文末自助获取源码} T615,文末自助获取源码 随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业&#x…

基于Jmeter的分布式压测环境搭建及简单压测实践

写在前面 平时在使用Jmeter做压力测试的过程中,由于单机的并发能力有限,所以常常无法满足压力测试的需求。因此,Jmeter还提供了分布式的解决方案。本文是一次利用Jmeter分布式对业务系统登录接口做的压力测试的实践记录。按照惯例&#xff0…

代码随想录算法训练营day41|动态规划04

最后一块石头的重量|| 返回剩余最后一块石头石头最小的可能重量,那么就应该最后剩余的两块石头尽量都等于或接近总重量的一半,这样剩下的就是一半的质量 目标和 给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有…

Python+Flask实现随机选谷票游戏

西方曾进行一项著名的投资随机性实验,对比基金经理与猴子在选股上的表现。 实验方法:主持人提供一系列股票,基金经理依靠其专业知识(如财务报表、行业趋势、产品市场及公司文化与管理层分析等)进行筛选;而…

【Python数据可视化分析实战】数据爬取—京东手机品牌信息数据爬取和数据分析与可视化

大数据分析设计方案 1.数据集来源:https://search.jd.com 2.实现思路: (1)数据爬取 首先,我们需要从京东平台上采集手机品牌的相关数据。可以通过网络爬虫或API接口等方式获取数据。为了保证数据的完整性和准确性&…

使用 TensorFlow 实现 ZFNet 进行 MNIST 图像分类

ZFNet(ZF-Net)是由 Matthew Zeiler 和 Rob Fergus 提出的卷积神经网络架构,它在图像分类任务中取得了显著的效果。它在标准卷积神经网络(CNN)的基础上做了一些创新,例如优化了卷积核大小和池化策略&#xf…

11.15 HTML

传统路线 HTML、CSS、JS AjaxJQueryMySQLJDBCServletJSPEL&JSTLCookieSessionFilterServlet案例MybatisSpringSpringMVCSpringBoot 全新路线 HTM、CSS、JSAjax、AxiosVue、Element前端工程化 vue脚手架MavenSpringBoot基础 基于SpringBoot进行讲解Spring的IOC&#xff…