STM32 ADC转换器、串口输出

news2024/11/17 3:49:38

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

文章目录

  • 前言
  • 一、ADC是什么?
  • 二、STM32的ADC
    • 2.1 认识STM32 ADC
    • 2.2转换方式
    • 2.3 为什么要校准?
    • 2.4 采样时间计算
    • 2.5 触发方式
    • 2.6 多通道采集解决方案
    • 2.7 提高ADC采样时间的方法
  • 三、如何使用STM32的ADC
    • 3.1. 使用哪个ADC
    • 3.2. 电压基准
    • 3. 3使用什么通道
    • 3.4. 用什么规则
    • 3.5. 时钟来源,配置最大吗?14Mhz
    • 3.6. 如何触发,软件还是硬件
    • 3.7.是否中断 ,读取数据
  • 四、编程步骤
    • 4.1大概步骤
      • 4.1.1 开时钟
      • 4.1.2 配置gpio
      • 4.1.3 初始化ADC_init()
      • 4.1.4 开启转换
      • 4.1.5 等待转换完成
      • 4.1.6 读取转换数据
      • 4.1.7 串口输出显示电压,模拟电压和数字电压
    • 4.2 具体举例:
  • 五、测试
    • 1.引入库
    • 2.读入数据


前言

提示:这里可以添加本文要记录的大概内容:
在工程应用中,除了对数字信号进行处理,常常还要处理模拟信号,这个时候就要用到模拟转换器,也就是模拟信号转换成数字信号的器件。
比如,设置一个比较器,电压低于1v,就输出3.3v,电压高于1v,就输出0v。这个就是我们常见到的一位模数转换器

什么是比较器

快速上手双电压比较器LM393,并制作巡线小车和传感器模块无需单片机【IC原来如此】

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


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

一、ADC是什么?

ADC 是 Analog-to-Digital Converter 的缩写,意思是模/数转换器或者模数转换器。它是将连续变化的模拟信号转换为离散的数位讯号的器件。这种转换器可以将真实世界的模拟信号,如温度、压力、声音或者图像等,转换成更容易储存、处理和发射的数字形式。

将引用B站大神的作品进行介绍

ADC——模数转换器的基础知识和几个常见类型

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

模数转换框图
在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述

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

二、STM32的ADC

STM32中的ADC是12位逐次逼近型ADC,最快转换速度大约1us。

2.1 认识STM32 ADC

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

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

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

2.2转换方式

在这里插入图片描述

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

2.3 为什么要校准?

在这里插入图片描述

2.4 采样时间计算

在这里插入图片描述

2.5 触发方式

在这里插入图片描述

2.6 多通道采集解决方案

在这里插入图片描述

2.7 提高ADC采样时间的方法

在这里插入图片描述

三、如何使用STM32的ADC

3.1. 使用哪个ADC

3.2. 电压基准

3. 3使用什么通道

3.4. 用什么规则

3.5. 时钟来源,配置最大吗?14Mhz

3.6. 如何触发,软件还是硬件

3.7.是否中断 ,读取数据

四、编程步骤

4.1大概步骤

4.1.1 开时钟

4.1.2 配置gpio

4.1.3 初始化ADC_init()

4.1.4 开启转换

4.1.5 等待转换完成

4.1.6 读取转换数据

4.1.7 串口输出显示电压,模拟电压和数字电压

4.2 具体举例:

1.选用ADC1,
2.则时钟
在这里插入图片描述

//1.开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
  1. 选定通道0
    在这里插入图片描述
    在这里插入图片描述
    引脚配置模式
    在这里插入图片描述

通道和引脚对应关系
在这里插入图片描述

	//1.开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE);
	//2.配置引脚   PA0为模拟输入
	
	GPIO_InitStruct.GPIO_Pin=  GPIO_Pin_0;          //TX
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
	
	GPIO_Init(GPIOA, &GPIO_InitStruct);   //&x

3.初始化adc

ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);

在这里插入图片描述

在这里插入图片描述

	ADC_InitStruct.ADC_ContinuousConvMode= DISABLE;
	ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
	ADC_InitStruct.ADC_ExternalTrigConv=  ADC_ExternalTrigConv_None;
	ADC_InitStruct.ADC_Mode= ADC_Mode_Independent;
	ADC_InitStruct.ADC_NbrOfChannel= 1;
	ADC_InitStruct.ADC_ScanConvMode= DISABLE;
	ADC_Init(ADC1,  &ADC_InitStruct);

4.开启转换

ADC_Cmd(ADC1, ENABLE);

5.等待转换完成

五、测试

1.引入库

代码如下(示例):


2.读入数据

代码如下(示例):



---

# 总结

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

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

相关文章

五周年活动周历!AutoGen解析·技术畅聊·3大城市工坊本周启动!

飞桨星河社区在成立的5年以来,已汇集660万AI开发者,覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等,已成为AI领域最具影响力的社区之一,无论是AI爱好者还是AI开发者,都能在这里探索AI的无限可能。 …

Python的控制流语句使用

Python的控制流语句使用 判断语句 if分支示意图语法介绍注意事项示例 for循环示意图语法介绍列表推导式示例 while循环与for的区别语法介绍示例 判断语句 if分支 示意图 单、双、多分支: 语法介绍 # 单分支 if condition:expression # 双分支 if condition:exp…

儿童绘本故事:鱼小乐的海洋奇幻之旅

《鱼小乐的海洋奇幻之旅》Chapter 1: 美好的计划一个晴朗的日子,鱼小乐和她的同学们聚在一起,兴奋地计划着一场奇妙的冒险。他们决定一起前往珠海海洋王国,展开一场海洋奇幻之旅。On a sunny day, Fishy Joy and her classmates gathered tog…

《On Java》

文章目录 一、Java概述1.JVM、JRE和JDK的关系2.什么是Java程序的主类3.Java和C的区别 三、面向对象3.1 面向对象三大特性封装继承多态 3.2 基本类型默认值3.3 和 equals 四、操作符4.1 比特和字节4.2 位操作&^ 4.3 运算符Math.round()loat f3.4;是否正确 4.4 实战小于n的最…

uni-app x生成的安卓包,安装时,提示不兼容。解决方案

找到 manifest.json 进入:源码视图 代码 {"name" : "xxx康养","appid" : "__xxx6","description" : "xxx康养","versionName" : "1.0.12","versionCode" : 100012,&…

4.3-Linux网络命名空间

查看本机的netWork namespace ip netns list 删除netWork namespace ip netns delete netnsName 创建netWork namespace ip netns add test1 查看test1这个netWork namespace的ip信息: ip netns exec test1 ip a 可以在虚拟机上执行:ip link 同样&#…

【探索Linux】—— 强大的命令行工具 P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )

阅读导航 引言一、阻塞信号1. 信号相关常见概念(1)信号递达(2)信号未决(3)阻塞信号(4)忽略信号 2. 信号在内核中的表示⭕信号在内核中的表示示意图 3. sigset_t (数据类型…

振弦式轴力计和振弦采集仪组成的安全监测解决方案

振弦式轴力计和振弦采集仪组成的安全监测解决方案 振弦式轴力计和振弦采集仪是一种常用的结构安全监测工具,可以用于评估建筑物、桥梁、隧道或其他结构的结构健康状态和安全性能。这种监测方案较为先进、精确,并且能够监测长期的结构反应,因此…

环境土壤物理Hydrus2D/3D模型实践技术应用

HYDRUS是基于Windows系统界面开发的环境土壤物理模拟软件,是用于模拟一维和多维变饱和多孔介质的水分运动、溶质(污染物等)运移、根系吸水和溶质吸收、以及热量传导等方面的强有力工具。HYDRUS还包括一个参数优化算法,用于各种土壤…

elFinder ZIP 参数注入导致命令注入 (CVE-2021-32682)

漏洞描述 elFinder 是一个用于 Web 的开源文件管理器,使用 jQuery UI 用 JavaScript 编写。 在 elFinder 2.1.48 及更早版本中发现一个参数注入漏洞。此漏洞可能允许攻击者在托管 elFinder PHP 连接器的服务器上执行任意命令,即使配置最少也是如此。这…

MySQL用得好好的,为何要转ES?

MySQL是一种关系型数据库,它可以高效地存储和查询结构化的数据。 ES是一种分布式搜索引擎,它可以快速地对海量的非结构化或半结构化的数据进行全文检索和分析。 MySQL 和 ES 的数据存储方式也不同。MySQL 中的数据通常是以关系型表的形式存储在磁盘上&…

第二十章(多线程)

一.线程的简介 Windows操作系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进程。系统可以分配给每一个进程有一段有限的使用CPU的时间(也可以…

Echarts tooltip配置项的属性 图表悬浮框

这个小图标就是tooltip的配置项 tooltip:{} //默认样式 自定义显示数据 如果没有自定义的属性可以 只是写data [1254,1551,574,10]… series: {//图表配置项 如大小,图表类型name: 图表名字,type: bar,//图表类型data: [{value: 454,time: 2012-11-12},{value: 898…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(6)

注解目录 1、znFAT 的起源 1.1 源于论坛 (那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。) 1.2 硬盘 MP3 推了我一把 (“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。) 1.3 我…

Python用itertools.product函数生成10位的0,1组合

需求:有10个指标,每个指标有0、1两种结果,生成所有可能出现的情况。解决:基于数学知识,我们很容易知道总共有组合数为2^101024种 那么使用python我们该如何用代码实现呢? python中的函数为itertools.produ…

ArkUI 如何将$r(’app.string.xxx‘) 转成string字符串

一、正常引用字符串资源文件内容 在 ArkUI 中,string.json 中的字符串资源正常情况下使用如下方式引用: Entry Component struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型 上面的代码没问题是因为 Text(con…

283. 移动零(双指针)

一次遍历&#xff0c;j相当于遍历到第一个零元素&#xff0c;将其和非零元素i交换&#xff0c; 使用的是leetcode题解的动图 class Solution { public:void moveZeroes(vector<int>& nums) {int n nums.size();int j 0;for (int i 0; i < n; i) {if (nums[i]…

Java多线程核心技术二-synchronzied同步方法

1 概述 关键字synchronzied保障了原子性、可见性和有序性。 非线程安全问题会在多个线程对同一个对象中的同一个实例变量进行并发访问时发生&#xff0c;产生的后果就是“脏读”&#xff0c;也就是读取到的数据其实是被更改过的。而线程安全是指获取的实例变量的值是经过同步处…

坚鹏:中国人寿福建省公司当下宏观经济形势分析与二十大精神解读

中国人寿保险&#xff08;集团&#xff09;公司属国家大型金融保险企业&#xff0c;2016年中国人寿入主广发银行&#xff0c;开启保险、投资、银行三大板块协同发展新格局。2022年&#xff0c;集团公司合并营业收入站稳万亿平台&#xff1b;合并总资产突破6万亿元大关。中国人寿…

java学习part18抽象类

Java抽象类 详解-CSDN博客 111-面向对象(高级)-抽象类与抽象方法的使用_哔哩哔哩_bilibili 1.概念 2.抽象类 抽象类不能实例化&#xff0c;可以有属性&#xff0c;也可以有方法。 方法可以实现或者只声明不实现&#xff0c;要加一个abstract abstract class A{//定义一个抽…