DAC的简单应用

article/2025/9/26 5:42:08

1.简介

DAC指数字/模拟转换。STM32F103RCT6具有2个12位数字输入,模拟输出的DAC;支持数字输入配置成8位右对齐、12位左对齐或12位右对齐格式;在双DAC通道模式下支持单通道独立转换或双通道同步转换。

2.框图

在这里插入图片描述

  1. 根据框图,将数据写入DHRX寄存器后,经过控制逻辑后被传输到DORX寄存器后再转成模拟输出
  2. 值得注意的是,一旦使能DACx通道(ENx位置1),相应的GPIO引脚(DAC1对应PA4,DAC2对应PA5)会自动与DAC的模拟输出(DAC_OUTx)相连为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5应在使能DACx通道前设置成模拟输入(AIN)

3.使能DAC通道

将ENx置1即可打开对DACx的供电。在经过一段启动时间Twakeup(见规格书,6.5us)后,DACx被使能
注:ENx只会使能DACx的模拟部分,即使ENx置0,DACx的数字部分仍在工作
在这里插入图片描述

4. DAC的转换

  1. 不能直接对DORx寄存器直接写入数据,任何输出到DACx的数据都必须写入到DHRx,经系统自动传输到DORx寄存器
  2. 如果没有选中硬件触发(TENx置0)写入到DHRx的数据,会在1个APB1时钟周期后自动传输到DORx寄存器;如果选中硬件触发(TENx置1),写入到DHRx的数据会在硬件触发后经3个APB1时钟周期自动传输到DORx寄存器(注:软件触发,在置1后经1个APB1时钟周期数据传输到DORx寄存器
  3. 一旦数据从DHRx传输到DORx后,经Tsetting后,模拟输出有效(见规格书,STM32F103RCT6的典型值为3us)
    在这里插入图片描述
    附:没有选中硬件触发(TENx = 0)时的时间框图
    在这里插入图片描述

5. 输出电压

数字输入经过DAC被线性地转换为模拟电压输出,其范围为0到VREF+。
任一DAC通道引脚上的输出电压满足下面的关系:
DAC输出 = VREF x (DOR / 4096)

6. DAC触发

如果TENx位被置1, DAC转换可以由某外部事件触发(定时器计数器、外部中断线)。配置控制位TSELx[2:0]可以选择8个触发事件之一触发
在这里插入图片描述

  1. 每次检测到TRGO事件发生或者外部中断9的发生,最近一次的DHRx的数据在经3个APB1时钟周期后传输到DORx寄存器
  2. 如果是软件触发,在置1后,经1个APB1周期后DHRx的数据传输到DORx寄存器,此时,SWTRIG由硬件自动清0
    注:在ENx置1后,不能再改变TSELx[2:0]

7. DAC寄存器

以**字(32位)**的方式操作这些寄存器

7.1 DAC控制寄存器(DAC_CR)

该寄存器用于控制DAC1和DAC2,低12位为DAC1,[28:16]为DAC2,这里仅看低12位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

bit0和bit1分别用于设置DAC1和DAC2通道的软件触发,其余bit均保留
在这里插入图片描述在这里插入图片描述

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

这里仅说一下DAC1的12bit右对齐格式,其他的格式请查参考手册
低12bit为写入DHR寄存器的数据,这里用的是12bit右对齐格式
在这里插入图片描述

7.4 DAC通道 1 数据输出寄存器(DAC_DOR1)

DAC1和DAC2的格式一样,该DORx寄存器的数据会传输到DACx的模拟电路并转换成模拟输出
注:不能直接写数据到该寄存器,输出数据只能通过写入到DHR寄存器,经系统传输到DORx
在这里插入图片描述

8. 简单应用

不使用外部触发,噪声、三角波生成的简单初始化如下:

/****************************************************************************
* 函数名:bspDACInit()
* 功能:初始化DAC
* 输入:无
* 输出:无
*/
void bspDACInit(void)
{uint32_t ulTemp;RCC->APB2ENR |= 1 << 2;		/*使能GPIPA时钟*/GPIOA->CRL &= 0xFFF0FFFF;	/*PA4模拟输入*/RCC->APB1ENR |= 1 << 29;	/*使能DAC时钟*/ulTemp = DAC->CR;ulTemp &= 0xFFFF0000;ulTemp |= 0x00000003;DAC->CR = ulTemp;	/*失能ADC1的DMA,MAMP,波形发生器,触发;使能ADC1*/	DAC->DHR12R1 = 0;	/*输出数据初始值为0*/
}

在例程中运行如下:
在这里插入图片描述

9. 注意

  1. DAC输出电压 = VREF x (DOR / 4096)
  2. 在使能ENx前,必须先把DACx对应的GPIO设置成模拟输入
  3. 不建议使能DACx缓存(BOFFx = 0),因为启用缓存后,DACx的模拟输出不能到 0
  4. ENx使能后,不能再配置DAC控制寄存器了,因此ENx放在最后使能,并且ENx只控制DACx模拟部分的电,ENx = 0,不会影响DACx数字部分的工作
  5. 不使用外部触发,DHR写入的数据会在1个APB1时钟周期后传输到ODR寄存器;使用外部触发,DHR写入的数据会在3个APB1时钟周期后传输到ODR寄存器(软件触发,在置1后,只需1个APB1时钟周期即可把数据从DHR传输到ODR寄存器)

http://chatgpt.dhexx.cn/article/jMo0IE5x.shtml

相关文章

STM32学习笔记--DAC

目录&#xff1a; 一、DAC原理1.DAC定义2.STM32DAC简介3.STM32DAC工作原理 二、STM32DAC库函数配置参考资料 一、DAC原理 1.DAC定义 DAC是Digital-to- Analog Converter的缩写&#xff0c;数字/模拟转换模块的简称&#xff0c;它的作用就是把输入的数字编码&#xff0c;转换成…

Bwapp 04 05

文章目录 Insecure DOR (Change Secret)Insecure DOR (Reset Secret)Insecure DOR (Order Tickets)安全配置 Insecure DOR (Change Secret) 抓包的话&#xff0c;就可以实行篡位修改 Insecure DOR (Reset Secret) 同上&#xff0c;换成了xml的形式 Insecure DOR (Order Ticke…

水处理相关工艺控制程序汇总(RXXW_Dor)

水处理和化工行业流程控制类程序工艺有很多相似之处,属于过程控制,并不太关心控制实时性和控制速度,这篇博客汇总项目各种工艺写法,陆续会更新。流程控制类程序很多可以利用状态机思想进行编程,有关状态机编程的详细方法可以参看下面的文章链接: PLC面向对象编程系列之有…

整理 kanban 的 DoR 和 DoD

所谓 DoR 和 DoD 就是 Definition of Ready 和 Definition of Done。 我们的敏捷团队在需求管理上主要有两个会:需求梳理会和需求计划会议。 需求梳理会的阐述的意向用户故事会放到 Backlog,后由研发 Owner 跟进,在计划会上,将符合 DoR 放入 Sprint Todo。 「Backlog」…

人生的DoR和DoD:志向、遗产

我们要为两件事做好准备&#xff1a;太阳升起和太阳落山。前者没准备好&#xff0c;则错过了大好时光。后者没准备好&#xff0c;则坠入无边黑暗。前者让你醒的来&#xff0c;后者让你睡得着。 &#xff08;一&#xff09;立志是人生的DoR 年少的刘备与同族的孩子在树下玩耍时&…

【Scrum模式语言9】准备就绪的定义(Definition of Ready - DoR )

译者序&#xff1a;在很多敏捷项目中&#xff0c;秩序诞生的标志之一是有了成文的DoR。但是项目组和需求方的折中往往也无可奈何地始于将没有就绪的需求纳入到Sprint待办事项列表&#xff0c;并为Sprint实施阶段带来一系列的不可控因素。为什么市场和产品人员时常要求技术人员在…

敏捷开发中的 DoD 和 DoR 是什么?

在敏捷开发中&#xff0c;让所有成员保持目标统一、步调和节奏一致非常重要&#xff0c;但是在团队协作中&#xff0c;认知偏差却在所难免。需求在不同环节中流转&#xff0c;是否存在某种途径能保证所有成员的理解一致&#xff0c;将偏差最小化&#xff1f; 今天跟大家介绍敏…

传播动力学--SIR模型及其应用

王道谊 2020年3月 1. 传播动力学 “道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物。” ---《道德经》 所谓“不积跬步无以至千里”&#xff0c;任何变化都是由点滴变化决定并发展起来的。知道所有的微观点滴变化&#xff0c;就能够掌握宏观变化。点滴…

SIR传播模型的科普和预测

>关注公众号&#xff1a;大数据技术派&#xff0c;回复资料&#xff0c;领取1024G资料。 注&#xff1a;本文仅是个人对于几个疾病模型做的一些概念性描述&#xff08;科普&#xff09;&#xff0c;并进行了简单的编程实现。切勿当做现实的行动指导。因为文章内容原因&#…

6.复杂网络实验六:SIR病毒传播模型(matlab)

一、SIR模型简介 在典型的传染病模型中&#xff0c;种群&#xff08;Population&#xff09;内的N个个体的状态可分为如下几类&#xff1a; (1)、易染状态S(Susceptible),即健康状态&#xff0c;可被感染的个体。 (2)、感染状态I(Infected),处于感染状态的个体还能够感染将康…

传染病SIR传播模型(搬运,含带MATLAB代码)

学习笔记之SIR传染病模型TOC 本文主要是对此篇文章代码部分的详解 function ysir(~,x)a0.8; %感染率0.8b0.2; %治愈率0.2y[-a*x(1)*x(2),a*x(1)*x(2)-b*x(2),b*x(2)]; end %t 为持续时间&#xff0c;%x为三维矩阵&#xff0c;其中x(1)为易感染者&#xff0c;x(2)为传染者&…

传染病模型(4)——SIRS模型和SIER模型及matlab具体程序

前言 常见的传染病模型按照具体的传染病的特点可分为 SI、SIS、SIR、SIRS、SEIR 模型。其中“S”“E”“I”“R”的现实含义如下&#xff1a; S (Susceptible)&#xff0c;易感者&#xff0c;指缺乏免疫能力健康人&#xff0c;与感染者接触后容易受到感染&#xff1b; E (Ex…

信息传播模型——SIR的Python实现

本文通过Python语言实现SIR模型&#xff0c;并进行可视化&#xff0c;所用例子为足球俱乐部数据集。 author&#xff1a;xiao黄 缓慢而坚定的生长 我之前还写过SI和IC模型的Python实现及可视化&#xff0c;请点击传送门查看&#xff0c;希望对你们有帮助。 SIR模型是传染病模型…

疫情模拟中的SIR模型与扩展的SIRD模型

一.SIR模型 SIR模型起源于流行病学的研究&#xff0c;是模拟传染病动力学的经典模型。至今仍在流行病学中占据中心位置&#xff0c;核心在于微分方程。 SIR模型描述了流行病下三大人群&#xff1a;易感者 susceptible、感染者 infectious、痊愈者 recovered之间的关系。 SIR模…

基于SIR模型的疫情预测 matlab

基于SIR模型的疫情预测 庚子年 庚辰月 丁丑日&#xff0c;疫情从爆发到今天&#xff0c;已经有100多万人感染&#xff0c;而我国有一群这样的逆行者他们以自己的生命筑起了我国的防疫长城&#xff0c;鲁迅先生曾说“我们从古以来&#xff0c;就有埋头苦干的人&#xff0c;有拼…

python实现SI、SIS、SIR、SIRS、SEIR、SEIRS模型

传染病传播模型 SISISSIRSIRSSEIR&#xff08;相比较贴合新冠状病毒&#xff09;SEIRS 在家闲着无事&#xff0c;搜了一些关于传染病模型的知识&#xff0c;在此做个总结。 SI 最简单的SI模型首先把人群分为2种&#xff0c;一种是易感者(Susceptibles)&#xff0c;易感者是健康…

流行病模型(SIR Model)

流行病模型(SIR Model) by : ZhuoFei, Zhou 首先定义一个函数bernoulli(p) #以概率p判断是否会被感染或恢复 function bernoulli(p::Number)if rand(1)[1] < preturn trueelsereturn falseend endbernoulli (generic function with 1 method)恢复所需的时间函数recovery_…

SIR模型与R模拟

SIR病毒模型R模拟 文章目录 SIR病毒模型R模拟[toc]1.SIR病毒模型2.R模拟 1.SIR病毒模型 SIR病毒模型的的三个字母分别为病毒传播过程中的三种状态&#xff0c;其中 S&#xff0c;表示易感染者&#xff0c;即没有被感染病毒的人群I&#xff0c;表示已感染者&#xff0c;即被感…

【python】SIR模型实现

SIR模型python实现 SIR模型是传染病模型中最经典的模型&#xff0c;其中S表示易感者&#xff0c;I表示感染者&#xff0c;R表示恢复者。SIR模型中&#xff0c;染病人群为传染的源头,他通过一定的几率把传染病传给易感人群,他自己也有一定的几率/可以被治愈并免疫,或者死亡;易感…

传染病模型(3)——SIR模型及matlab运行结果

前言 常见的传染病模型按照具体的传染病的特点可分为 SI、SIS、SIR、SIRS、SEIR 模型。其中“S”“E”“I”“R”的现实含义如下&#xff1a; S (Susceptible)&#xff0c;易感者&#xff0c;指缺乏免疫能力健康人&#xff0c;与感染者接触后容易受到感染&#xff1b; E (Exp…