STM32之单DAC数模转换输出(2021-07-30)

article/2025/9/26 5:49:47

STM32之单DAC数模转换输出

1.DAC简介及框图:

在这里插入图片描述

  • DAC功能只有STM32大容量的芯片才具有;中低容量的芯片没有;

  • DAC有两个 8位*(右对齐)或者是12位(左或右对齐)*的转换器,每个转换器只有一个通道,所以通常在使能时都是直接操作对应的通道,DAC_OUT1对应PA4;DAC_OUT2对应PA5;

  • 注意:为防止对DAC造成干扰,使用DAC对应的IO应设置为模拟输入

  • 在上图的寄存中,DORx寄存器是无法直接写值的,只有DHRx寄存器可以进行写操作,控制器会在一个时钟脉冲后将DHRx的值转入DOR寄存器中。

  • DAC功能可以有一个参考电压的输入V_REF+ (要求在2.4-3.3V之间,没有的话是默认VCC*(3.3V)*)

    当选择12位数据格式,且默认VCC为参考时,输出电压的转换如下:
    V O U T P U T = D O R 2 12 ∗ V R E F + = D H R ∗ V R E F + 4096 V_{OUTPUT}=\frac{DOR}{2^{12}}*V_{REF+}=\frac{DHR*V_{REF+}}{4096} VOUTPUT=212DORVREF+=4096DHRVREF+

2.相关寄存器:

  • DAC_CR:操作DAC的相关使能位,如:DAC1/2(低16位的低13位分配DAC1;高16位的低13位给DAC2)

    • 使能位EN[0] /[16],

    • 缓冲区使能位BOFF[1]/[17],

    • 软件触发位(置1即触发DAC转换):TEN[2]/[18]

    • 外部触发的选择使能位TSEL[5:3]/[21:19]

    • 三角波WAVE,噪声波MAMP的使能位

    • DMA使能位DMAEN[12]/[28]

  • DAC_SWTRIGR(DAC software trigger register)低两位有效,分别是DAC1/2的软件触发使能

  • DAC_DHR12R1 和 DAC_DHR12L1 和 DAC_DHR8R1:

    DAC_DHR12R2 和 DAC_DHR12L2 和 DAC_DHR8R2:

    分别是单DAC模式下的DHR(可写的数据输入寄存器data holding register)的DAC1/2的12位左对齐,右对齐,8位右对齐的数据位;

  • DAC_DHR12RD 和DAC_DHR12LD 和DAC_DHR8RD:

    结尾的D表示DUAL(双DAC模式);双DAC模式下的寄存器高16位分给DAC2,低16位分给DAC1;

  • DAC_DOR1和DAC_DOR2( data output register只能读,不能写,用于装载写在DHR中的值,可以读出此时我们写入的值);

3.库函数操作:

  • 使能对应的GPIO的时钟及GPIO配置(注意:做DAC输出的引脚PA4或者是PA5要设成模拟输入;GPIO_Mode_AIN)

  • 使能外设DAC的时钟,及初始化(用对应的结构体,具体成员的分析如下:)

    {
    //...表示对应的前缀uint32_t DAC_Trigger;//触发方式,若是软件触发,选..._None uint32_t DAC_WaveGeneration; //波形发生,不产生波形选..._Noneuint32_t DAC_LFSRUnmask_TriangleAmplitude;// 屏蔽/复制选择,波形发生时才使用,不使用,选..._Bit0uint32_t DAC_OutputBuffer;//输出缓存,关闭..._DISABLE/开启..._ENABLE
    }DAC_InitTypeDef;

    关于输出缓存:开启时,能使对应的输出能够有较大的驱动能力,但输出较小的电压值(0V)时精度较差,所以如果想要有较小值电压输出,应将输出缓存关闭;

  • 使能DAC外设

    DAC_Cmd(DAC_Channel_x, ENABLE); //与ADC不同,一个转换器只有一个通道,所以直接使能通道即可(库函数封装时没有分开了)。

  • 常用的两个库函数:

    DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);
    //x通道的对齐方式,及DHR的数值
    //可选对齐方式有DAC_Align_12b_R / DAC_Align_12b_L / DAC_Align_8b_R
    //Data 值需在所需对齐方式的范围内
    
     DAC_GetDataOutputValue(uint32_t DAC_Channex)//获取我们所设置的值,即读取DOR寄存器的值
    

    4.PWM模拟DAC输出

对于没有DAC输出的小容量芯片,可以采用PWM方波模拟DAC输出,只需要在硬件上加上滤波电路,滤去高次谐波即可;以下是原子战舰板上所带的二阶低通滤波器的电路图:

在这里插入图片描述


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

相关文章

pycinrad学习入门笔记,数据为雷达新旧格式基数据、pup产品数据

安装步骤 1.更改pip源为清华径向 2.pip install cinrad 3.运行上传的代码,在我的资料上传里 4、可以解码的基数据有:old 、new,格式可以是bz2和bin格式,分别使用不同的函数 file1 "Z_RADR_I_Z9552_20200711161600_O_DO…

Linux 初级 文件与目录管理(3)

文件和目录管理 在开始目录的切换之前,先了解一下路径,什么是相对路径,什么是绝对路径。 绝对目录 : 路径的写法,一定是由根目录写起/ 写起。例如如: /usr/share/dor这个目录 相对路径: 路径的…

bwapp通关教程

** HTML Injection - Reflected (GET) ** low: 低级漏洞中&#xff0c;输入数据没有做校验 First name: <script>alert( xss )</script> Last name: <script>alert( xss )</script> 出现xss即为成功。 medium 和low一样&#xff0c;但发现被全…

新一代天气雷达文件三维可视化

链接&#xff1a;从最新文章获取百度盘地址 支持新一代天气雷达SA SB CA&#xff0c;支持FMT&#xff0c;支持SWAN格式直接将文件拖进程序即可 支持列表样例Z_RADR_I_Z***_20200803100000_O_DOR_SA_CAP.bin.bz2Z_RADR_I_Z***_20210514000000_O_DOR_SA_CAP_FMT.bin.bz2Z_OTHE_…

激光雷达动态障碍物滤除-调研与展望

0. 简介 激光雷达作为自动驾驶中最常用的传感器之一&#xff0c;由于其深度感知特性优良&#xff0c;这也让以激光SLAM为主的SLAM方法被广泛应用。但是我们发现在人员密集&#xff0c;车辆密集的场景经常会造成点云定位效果不佳&#xff0c;而这些情况传统滤波方法是没有办法解…

DAC的简单应用

1.简介 DAC指数字/模拟转换。STM32F103RCT6具有2个12位数字输入&#xff0c;模拟输出的DAC&#xff1b;支持数字输入配置成8位右对齐、12位左对齐或12位右对齐格式&#xff1b;在双DAC通道模式下支持单通道独立转换或双通道同步转换。 2.框图 根据框图&#xff0c;将数据写入…

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模…