蓝桥杯 stm32 DAC

news2024/12/23 9:10:06

文章代码使用 HAL 库。

文章目录

  • 前言
  • 一、根据手册了解 DAC 重要特性 :
  • 二、CubeMX 创建工程:
  • 三、DAC 代码:
      • 1. 设置DAC输出值函数。
      • 2. 开启DAC输出函数。
      • 3. DAC 输出电压。
  • 总结


前言

DAC 就是 数字模拟信号转换器 ,也就是把 数字信号转变成模拟信号的设备,它的功能与 ADC 相反。

一、根据手册了解 DAC 重要特性 :

参考 手册:
在这里插入图片描述
在这里插入图片描述

  1. DAC 模块是 12 位 的,就是 2的12 次方,换成十进制就是 4096(0 ~ 4095)

  2. 在12位模式下,数据可以 向左排列 (左对齐)或 向右对齐 (右对齐)。

  • 左对齐: 12 位 写成 十六进制就是 0 x f f f 0.
  • 右对齐: 12 位 写成 十六进制就是 0 x 0 f f f.

我们比赛中最好使用 右对齐,因为 0 x 0 f f f 十进制范围 就是 0 ~ 4095.

  1. 对于蓝桥杯比赛的板子有 2 个ADC(ADC1, ADC2),每个 ADC 都 2 个通道。
    不过 针对于比赛我们只需要了解 ADC1 的 通道 1 ,通道 2。

下面就是 ADC 1 的两个通道的 io 接口, PA4, PA5:
在这里插入图片描述

  1. 我们通过 ADC 模块可以把 数字信号转变成模拟信号,可以 输出一个 3.3 V 的电压,或者波形。
    输出电压后,可以通过 电压表J3 排针的 测量来判断电压是否 正确输出。

下图为 J3 排针的 引脚图:
在这里插入图片描述

二、CubeMX 创建工程:

  1. 设置 RCC。
    在这里插入图片描述

  2. 设置 PA4 ,PA5 为 通道 1,通道 2。
    在这里插入图片描述

  3. 设置 通道 1,通道 2 连接外部引脚。
    在这里插入图片描述

  4. 设置时钟:选用内部时钟,80 MHZ。
    在这里插入图片描述

  5. 设置工程模式和版本。
    在这里插入图片描述

  6. 加入.c /.h文件(便于编写代码)。
    在这里插入图片描述

  7. 创建工程。
    在这里插入图片描述

三、DAC 代码:

1. 设置DAC输出值函数。

HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);

参数一: DAC 结构体名。(位于 dac 头文件中)

参数二: 设置DAC通道。

  • 进入 HAL_DAC_SetValue 函数,再进入 IS_DAC_CHANNEL 函数。
    在这里插入图片描述
  • 找到 参数 二。
    在这里插入图片描述

参数三: 设置DAC对齐方式。

  • 进入 HAL_DAC_SetValue 函数 中的 IS_DAC_ALIGN 函数。
    在这里插入图片描述
  • 找到 参数 三。(前面讲了 我们使用 12 位 右对齐:)
    在这里插入图片描述

参数四: 设置输出电压值 12位最大位4095。

2. 开启DAC输出函数。

HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);

参数一: DAC结构体名。
参数二: DAC通道。

3. DAC 输出电压。

DAC 模块 12位 ,最大输出 4095 ,范围是 0 ~ 4095.
模拟电压是 0 ~ 3.3 V 。

V 输出 = (V设置 / 3.3)* 4095
V设置 范围是 0 ~ 3.3 v.

  1. 设置 DAC1 通道 1 输出 1.1 V 电压。
dac1 = (1.1 / 3.3) * 4095;

HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac1); //设置输出

HAL_DAC_Start(&hdac1, DAC_CHANNEL_1); //启动 DAC
  1. 设置 DAC1 通道 2 输出 2.2V 电压。
dac1 = (2.2 / 3.3) * 4095;

HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, dac2); //设置输出

HAL_DAC_Start(&hdac1, DAC_CHANNEL_2); //启动 DAC

电压表 进行 测量 J3 排针 可以测出 相应电压。


总结

要想 比较 DAC 与 ADC ,这篇文章 详细介绍了 ADC ,可以看看: 蓝桥杯stm32 实现 ADC采集数据CubeMX

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

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

相关文章

实施MES系统前,先想清楚首先用来解决什么问题

MES系统首先用来解决什么问题? 很多人会自然而然地认为,MES系统是用来解决管理问题的,是为了明确管理流程的,是为了建立管控标准的…… 甲方会有很多很多想解决的问题,甚至在系统导入过程中,各个部门也会…

vue中安装与引用echarts示例

第002个点击查看专栏目录Echarts发展到现在,已经陆续经过了很多版本,越来越完善,现在主要研究5.0以上的功能。这里是介绍在vue项目中,如果全局或者局部引用echarts,对项目初装echarts会起到非常大的帮助。 NPM 安装 E…

电脑文件如何自动备份?

电脑文件如何自动备份?计算机的出现是人类科技发展的重要标志,电脑已经成为我们工作、生活以及学习中必不可少的工具,尤其是在工作中的应用,它改变了以前传统的工作方式。电脑的使用给我们带来极大方便的同时,也带来了…

mPEG-SS-NH2 ;mPEG-SS-Amine;甲氧基聚乙二醇-双硫键-氨基-科研用试剂简介

mPEG-SS-NH2 甲氧基聚乙二醇-双硫键-氨基 英文名称:mPEG-SS-NH2 英文别名:mPEG-SS-Amine 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用,不用于诊治 外观: 固体或粘性液体,取…

3D渲染优化入【Three.js】

Three.js 应用程序以每秒 60 帧 (FPS) 的速度执行 3D 渲染是流畅和愉快体验的保证。 然而,这是一个有时难以实现的目标!本文整理了优化 Three.js 应用程序和达到 60 FPS 的最佳提示和技巧! 推荐:使用 NSDT场景编辑器 快速搭建 3D…

Day13【元宇宙的实践构想02】—— 元宇宙与沉浸式交互技术介绍、支撑开发与应用

💃🏼 本人简介:男 👶🏼 年龄:18 ✍今日内容:《元宇宙的实践构想》02——元宇宙与沉浸式交互技术 🚩 今日留言:亮亮被迫去练科目二啦,定时发布的文章&#xff…

鉴源论坛 · 观通丨联锁系统原理浅析

作者 |刘艳青 上海控安安全测评中心安全测评部测试经理 版块 | 鉴源论坛 观通 01 联锁系统的硬件结构 根据联锁系统的层级关系,联锁系统的硬件层级可以分为4层:人机会话层、联锁层、接口层、室外设备层。 图1 联锁系统的硬件结构 02 联锁系统的软件结…

误删照片音视频文件不要担心 几种方法解救慌乱的你

误删照片音视频文件不要担心 几种方法解救慌乱的你 推荐的几款软件涵盖了大量的恢复方式,手机如果刷机或者损坏找回的几率会越低 免费软件获取方式关注公众号回复8585 更多软件获取方式点我 方法1:从手机相册中恢复手机删除的照片 这里以vivo手机为例,其他手机也是差…

C/C++ Linux Socket网络编程

之前已经学习了QT的socket编程 和 C/C在window环境的socket编程,现在再来学习一波C/C在Linux环境下的socket编程,为以后学习C Linux 服务器开发做准备。 目录 一、Socket简介 二、Socket编程基础 1. 网络字节序 2. sockaddr数据结构 3. IP地址转换函数…

新C++(5):异常

"山,请你慢些走向我呀~"一、异常初始每当我们使用传统C写一些诸如malloc\realloc,或者不允许传入的参数为空(nullptr)时,我们时长会加一个断言(assert),一旦条件为false立即终止程序,不仅如此,当申请的空间够大&#xf…

二叉树:二叉树的最近公共祖先

二叉树的最近公共祖先 文章目录一、题目描述二、解题思路三、代码解析一、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x&#xff0c…

Vue实现下载文件而非浏览器直接打开

问题背景 对于一个txt文本、图片、视频、音频等浏览器可以直接使用浏览器进行预览的文件, 使用传统的a标签加download属性进行下载是行不通的,会在浏览器直接打开,因此需要搞一个新的方式进行下载。 实现流程 实现思路 这里使用Vue自定义…

ElasticSearch从入门到出门【中】

文章目录DSL查询文档DSL查询分类全文检索查询使用场景基本语法示例精准查询term查询range查询地理坐标查询矩形范围查询附近查询复合查询相关性算分算分函数查询布尔查询搜索结果处理排序普通字段排序地理坐标排序分页基本的分页深度分页问题高亮高亮原理实现高亮RestClient查询…

档案数据智能采集工厂模型设计与实现

档案信息化从业人员肯定对异构系统数据采集过程中碰到的各种问题深有体会,有源系统供应商不配合的;数据接口不开放的;归档数据不符合规范的;数据敏感不提供的;等等;不一而足。但不幸的是档案信息系统处于政…

C 语言零基础入门教程(二十二)

C 错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是…

VS2017编译c dll的方法-编译bsio

VS2017编译c dll 有三种方法 (1).h和.c文件函数增加 __declspec(dllexport) (2)仅在.h函数添加__declspec(dllexport) (3)使用.def文件,不用在.h和.c文件的函数前增加__declspec(dllexport) …

【数据结构初阶】顺序表的实现(文末附原码)

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:数据结构初阶 ⭐代码仓库:Data Structure 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注&#xff…

基于C讲解协程设计原理

协程设计原理 背景 以epoll处理fd为例: func () {while (1) {epoll_wait();for(;;) {recv();send();}} }在IO操作较为密集的情况下(网络IO和磁盘IO操作多,CPU计算少),由于检测到IO事件后,需要进行同步的…

美颜sdk动态贴纸是什么?

美颜sdk如今已经成了广大视频拍摄平台的刚需,用户们也习惯了这种新颖的拍摄形式,原相机被无情“打入冷宫”,特别是短视频和直播平台中,绝大部分用户都在使用美颜sdk的趣味功能进行拍摄,“动态贴纸”就是一个非常好的例…

什么是PEPPOL BIS?

和常见的X12以及EDIFACT类似,PEPPOL BIS也是一种EDI标准,主要用于B2G和B2B交易,在欧盟的应用十分广泛。在业务场景中,PEPPOL不单单只是用于发票,从下单到开票流程中均可提供标准化的数据传输。 在此前的文章中&#x…