当前位置: 首页 > news >正文

STM32 DAC+串口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、DAC是什么?
  • 二、STM32 DAC
    • 1.什么型号有DAC
    • 2. 简介
    • 3. 主要特点
    • 4. DAC框图
    • 5. DAC 电压范围和引脚
  • 三、程序步骤
    • 1. 开启DAC时钟
    • 2. 配置引脚 PA4 PA5 模拟输入
    • 3. 初始化DAC
    • 5. 使能DAC
    • 6. 写入数字电压
    • 7. 触发转换
    • 8测试结果
  • 四、加入串口互动
    • 1.定义发送字符格式:
    • 方案1 比较符合人性
    • 方案2,用mv输出,没有小数,提取会更简单
    • 2.获取字符串
    • 3.解释字符串
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

前面学习了STM32的ADC,掌握了模拟信号如何转化成数字信号,现在学习如何将数字信号转换成模拟信号。

目标:串口输入3.3v->stm32->DAC->3.3V ->ADC ->串口 ->电压
举例: 3.3v -> "3.3v"字符串->解释前面的数字 3.3怎么给DAC

具体:(ADC) PA0 ->(DAC) ?


提示:以下是本篇文章正文内容,下面案例可供参考

一、DAC是什么?

示例:DAC是数字模拟转换器(Digital to Analog Converter)的缩写,它是一种将数字信号转换为模拟信号的设备。

DAC数模转换实验工作原理

https://www.bilibili.com/video/BV11Z4y1z7mP/?spm_id_from=333.337.search-card.all.click

二、STM32 DAC

1.什么型号有DAC

在这里插入图片描述

查看数据手册
在这里插入图片描述
在这里插入图片描述

2. 简介

在这里插入图片描述

3. 主要特点

在这里插入图片描述

4. DAC框图

在这里插入图片描述

5. DAC 电压范围和引脚

在这里插入图片描述

三、程序步骤

1. 开启DAC时钟

在这里插入图片描述

在这里插入图片描述

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

2. 配置引脚 PA4 PA5 模拟输入

在这里插入图片描述在这里插入图片描述

	GPIO_InitStruct.GPIO_Pin=  GPIO_Pin_4;          //GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;     //模拟输入GPIO_Init(GPIOA, &GPIO_InitStruct);   //&x

3. 初始化DAC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

	//3.初始化DAC//DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Disable;DAC_InitStruct.DAC_Trigger=DAC_Trigger_Software; //软件触发DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;DAC_Init(DAC_Channel_1,&DAC_InitStruct);

5. 使能DAC

在这里插入图片描述

DAC_Cmd(DAC_Channel_1, ENABLE);

6. 写入数字电压

在这里插入图片描述
在这里插入图片描述

DAC_SetChannel1Data(DAC_Align_12b_R, 2048); // 12位 电压范围  0-4095

7. 触发转换

在这里插入图片描述
在这里插入图片描述

 DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);//软件使能转换

完整初始化参考

void dac_init()
{GPIO_InitTypeDef GPIO_InitStruct;DAC_InitTypeDef DAC_InitStruct;//1.开时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE);//2. 配置位模拟输入GPIO_InitStruct.GPIO_Pin=  GPIO_Pin_4;          //GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;     //模拟输入GPIO_Init(GPIOA, &GPIO_InitStruct);   //&x//3.初始化DAC//DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Disable;DAC_InitStruct.DAC_Trigger=DAC_Trigger_Software; //软件触发DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;DAC_Init(DAC_Channel_1,&DAC_InitStruct);// 4. 使能DACDAC_Cmd(DAC_Channel_1, ENABLE);DAC_SetChannel1Data(DAC_Align_12b_R, 2048); // 12位 电压范围  0-4095DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);//软件使能转换}

程序框架

void main
{ADC_init();uart_init();DAC_init();while(1){//adc 读取//发送串口}
}

8测试结果

***

在这里插入图片描述

四、加入串口互动

1.定义发送字符格式:

方案1 比较符合人性

“DAC输出:3.3v” 则输出3.3v
“DAC输出:1.65v” 则输出1.65v

方案2,用mv输出,没有小数,提取会更简单

“DAC输出:3300mv” 则输出3300mv
“DAC输出:1650v” 则输出1650mv

2.获取字符串

串口中断获取

3.解释字符串

举例
“DAC输出:3.3v” 在字符串种查找 DAC关键字,然后再找到 ':'从这里 获取后面的’3.3’字符,直到’v’停止将获取的字符 3.3 转换成实际数字,
3.3 在转换成数字电压

字符转整型STM32史上最短 字符转整形 简简单单

https://blog.csdn.net/weixin_51102592/article/details/121125622?app_version=6.2.4&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22121125622%22%2C%22source%22%3A%22ganhui13000%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app

#include "string.h"
#include "stdlib.h"
u8 DATA[200]="X12Y34Y56Y78";
int shuju_chuli(const char *shuju,char zifu )
{char *shu_ju_1=strchr(shuju,zifu)+1;			//数据return atoi(shu_ju_1); 					//数值
}int shuju_chuli1(const char *shuju,char zifu )
{char *shu_ju_1=strchr(shuju,zifu)+1;			//数据char *shu_ju_2=strchr(shu_ju_1,zifu)+1;			//数据return atoi(shu_ju_2); 					//数值
}printf("X是:%d\r\n",shuju_chuli((const char*)DATA,'X'));printf("y是:%d\r\n",shuju_chuli((const char*)DATA,'Y'));printf("Y1是:%d\r\n",shuju_chuli1((const char*)DATA,'Y'));

总结

DAC的原理,STM32DAC的特点,STM32DAC实操,用ADC和DAC闭环,实现了ADC和DAC 的检测。

相关文章:

STM32 DAC+串口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、DAC是什么?二、STM32 DAC1.什么型号有DAC2. 简介3. 主要特点4. DAC框图5. DAC 电压范围和引脚 三、程序步骤1. 开启DAC时钟2. 配置引脚 PA4 PA5…...

SolidWorks二次开发 C#-读取基于Excel的BOM表信息

SolidWorks二次开发 C#-读取基于Excel的BOM表信息 问题点来源解决方案及思路相关引用链接 问题点来源 这是一位粉丝问的一个问题,他说到: 老师,请问Solidworks二次开发工程图中"基于Excel的材料明细表"怎么读取里面的数据? Ps:这…...

maui中实现加载更多 RefreshView跟ListView(2)

一个类似商品例表的下拉效果&#xff1a; 代码 新增个类为商品商体类 public class ProductItem{public string ImageSource { get; set; }public string ProductName { get; set; }public string Price { get; set; }}界面代码&#xff1a; <?xml version"1.0&quo…...

win10环境下git安装和基础操作

简述 关于git的作用就不多赘述了&#xff0c;配合GitHub&#xff0c;达到方便人们日常项目维护和管理&#xff0c;每一次项目增删改查都可以看的清清楚楚&#xff0c;方便团队协作和个人项目日常维护。 下载git 首先我们自然是要到官网下载git&#xff0c;下载地址为https:/…...

将yolo格式转化为voc格式:txt转xml(亲测有效)

1.文件目录如下所示&#xff1a; 对以上目录的解释&#xff1a; 1.dataset下面的image文件夹&#xff1a;里面装的是数据集的原图片 2.dataset下面的label文件夹&#xff1a;里面装的是图片对应得yolo格式标签 3.dataset下面的Annotations文件夹&#xff1a;这是一个空文件夹&…...

字符串 - 541.反转字符串II(C#和C实现)

字符串 - 541.反转字符串II(C#和C实现) 题目描述 给定一个字符串 s 和一个整数 k&#xff0c;你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0…...

机器视觉技术与应用实战(开运算、闭运算、细化)

开运算和闭运算的基础是膨胀和腐蚀&#xff0c;可以在看本文章前先阅读这篇文章机器视觉技术与应用实战&#xff08;Chapter Two-04&#xff09;-CSDN博客 开运算&#xff1a;先腐蚀后膨胀。开运算可以使图像的轮廓变得光滑&#xff0c;具有断开狭窄的间断和消除细小突出物的作…...

云原生之深入解析云原生架构的日志监控

一、什么是云原生架构的日志监控&#xff1f; 云原生架构的日志监控要求现代 Web 应用程序采用与传统应用程序略有不同的方法。部分原因是应用程序环境要复杂得多&#xff0c;包括从微服务中获取数据、使用 Kubernetes 和其他容器技术&#xff0c;以及在许多情况下集成开源组件…...

基于hfl/rbt3模型的情感分析学习研究——文本挖掘

参考书籍《HuggingFace自然语言处理详解 》 什么是文本挖掘 文本挖掘&#xff08;Text mining&#xff09;有时也被称为文字探勘、文本数据挖掘等&#xff0c;大致相当于文字分析&#xff0c;一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生&…...

计算机网络基础——常用的中英文网络述语大全,强烈建议收藏

系统网络体系结构(System Network Architecture&#xff0c;SNA) 国际标准化组织(International Organization for Standardization&#xff0c;ISO) 开放系统互连基本参考模型(Open System Interconnection Reference Model。OSI/RM) 物理层(Physical Layer) 数据终端设备…...

c++如何自定义类及成员函数

#include <iostream>using namespace std;class Box {public:double length; // 长度double breadth; // 宽度double height; // 高度// 成员函数声明double get(void);void set( double len, double bre, double hei ); }; // 成员函数定义 double Box::get(void) …...

100G云数据中心网络建设解决方案

随着数据和流量的快速增长&#xff0c;近年来数据中心已经进入了一个全新的100G时代。为了更高效地提供包括人工智能、虚拟现实、4K视频等在内的云计算服务&#xff0c;全球范围内正在大规模建设众多大型100G数据中心&#xff0c;如云数据中心。作为一种新型高效的基础设施&…...

Zoho Desk为何受到跨境电商企业青睐:优势与特点解析

现如今&#xff0c;跨境电商已成为中国外贸发展的一支重要力量&#xff0c;正从一种新业态成长为外贸的新常态。越来越多的国内电商玩家加入了跨境电商这个战场。跨境电商自有其特殊性&#xff0c;海外客户服务不好一样惨遭投诉&#xff0c;Zoho Desk可以帮助您赢得客户满意度&…...

git 删除仓库中多余的文件或者文件夹

目录 问题 解决方案 第一步&#xff1a;同步代码 第二步&#xff1a;删除文件 第三步&#xff1a;提交 第四步&#xff1a;推送远端 问题 在项目开发测试阶段&#xff0c;将无意间将本地敏感的、或无用的文件或目录不小心提交到远程仓库&#xff0c;该怎么解决呢。 解决方…...

搭建git服务器(本地局域网)

搭建git服务器&#xff08;本地局域网&#xff09; 创建仓库 (假定在/home/git目录下创建仓库) git init --bare sample.git克隆远程仓库到本地 git clone git192.168.0.100:/home/git/sample.git已有项目&#xff0c;绑定远程仓库 # 查看远程仓库绑定 git remote -v# 解除…...

如何让营销更生动,更有效!

作为专业的营销人员&#xff0c;我们深知在当今竞争激烈的市场环境中&#xff0c;如何让自己的产品或服务脱颖而出&#xff0c;吸引更多的潜在客户&#xff0c;是企业成功的关键。而中昱维信视频短信平台&#xff0c;正是您实现这一目标的得力助手。 一、视频短信&#xff0c;…...

RestTemplate请求参数需要转义 处理

项目需求 iam的token鉴权 需要带转义的回调http路径 用以下处理参数 接口仍然返回异常&#xff1a; public String authBack(String backUrl){ // backUrl http://192.168.1.156:sdm/String state URLEncoder.encode(state, "UTF-8"); }查了一下&#xff0c;Rest…...

使用Kaptcha实现的验证码功能

目录 一.需求 二.验证码功能实现步骤 验证码 引入kaptcha依赖 完成application.yml配置文件 浏览器显示验证码 前端页面 登录页面 验证成功页面 后端 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 一.需求 1.页面生成验证码 2.输入验证码&#xff…...

【无标题】CTF之SQLMAP

拿这一题来说 抓个包 复制报文 启动我们的sqlmap kali里边 sqlmap -r 文件路径 --dump --dbs 数据库 --tables 表...

【Qt之Quick模块】1. 概述及Quick应用程序创建流程

概述 Qt的Quick模块是用于创建现代化、动态和响应式用户界面的工具集。它是基于QML&#xff08;Qt Meta-Object Language&#xff09;和JavaScript的。 QML是一种声明性的语言&#xff0c;用于描述用户界面的结构和行为。它使用层叠样式表&#xff08;CSS&#xff09;的语法来…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...