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

STM32 ADC介绍和应用

目录

1.ADC是什么?

2.ADC的性能指标

3.ADC特性

4.ADC通道

5.ADC转换顺序

6.ADC触发方式

7.ADC转化时间

8.ADC转化模式

扫描模式

单次转换/连续转换

9.ADC实验

使用ADC读取烟雾传感器的值

 代码实现思路:


1.ADC是什么?

全称:Analog-to-Digital Converter,指模拟/数字转换器

2.ADC的性能指标

  • 量程:能测量的电压范围
  • 分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、12、 16位等;位数越多,分辨率越高,一般来说分辨率越高,转化时间越长
  • 转化时间:从转换开始到获得稳定的数字量输出所需要的时间称为转换时间

3.ADC特性

  • 12位精度下转换速度可高达1MHZ
  • 供电电压:V SSA :0V,V DDA :2.4V~3.6V
  • ADC输入范围:VREF- ≤ VIN ≤ VREF+
  • 采样时间可配置,采样时间越长, 转换结果相对越准确, 但是转换速度就越慢
  • ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中

4.ADC通道

总共2个ADC(ADC1,ADC2),每个ADC有18个转换通道: 16个外部通道、 2个内部通道(温度 传感器、内部参考电压)。

外部的16个通道在转换时又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多 有4路。

  • 规则组:正常排队的人
  • 注入组:有特权的人(军人、孕妇)

5.ADC转换顺序

每个ADC只有一个数据寄存器,16个通道一起共用这个寄存器,所以需要指定规则转换通道的转 换顺序。

规则通道中的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3,它们都是32位寄存器。SQR寄 存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位SQx中写入相应的通道,这个通 道就是第x个转换。

和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个 JSQR寄存器来控制,控制关系如下:

注入序列的转换顺序是从JSQx[ 4 : 0 ](x=4-JL[1:0])开始。只有当JL=4的时候,注入通道的转换 顺序才会按照JSQ1、JSQ2、JSQ3、JSQ4的顺序执行。

6.ADC触发方式

  • 1. 通过向控制寄存器ADC-CR2的ADON位写1来开启转换,写0停止转换。
  • 2. 也可以通过外部事件(如定时器)进行转换。

7.ADC转化时间

ADC是挂载在APB2总线(PCLK2)上的经过分频器得到ADC时钟(ADCCLK),最高 14MHz

  • 转换时间=采样时间+12.5个周期

 12.5个周期是固定的,一般我们设置 PCLK2=72M,经过 ADC 预分频器能分频到最大的时钟只能 是 12M,采样周期设置为 1.5 个周期,算出最短的转换时间为 1.17us (14/12M)

8.ADC转化模式

扫描模式

  • 关闭扫描模式:只转换ADC_SQRx或ADC_JSQR选中的第一个通道
  • 打开扫描模式:扫描所有被ADC_SQRx或ADC_JSQR选中的所有通道

单次转换/连续转换

  • 单次转换:只转换一次
  • 连续转换:转换一次之后,立马进行下一次转换

9.ADC实验

使用ADC读取烟雾传感器的值

CubeMX配置

时钟配置:

ADC配置:

串口配置:

 代码实现思路:

  1. 启动ADC单次转换
  2. 等待ADC转换完成
  3. 读取ADC转换数据
  4. 重定向printf将数据发送到上位机

核心代码示例:

#include <stdio.h>//重定向printf
int fputc(int ch, FILE *f)
{      unsigned char temp[1]={ch};HAL_UART_Transmit(&huart1,temp,1,0xffff);  return ch;
}//main函数部分while (1){HAL_ADC_Start(&hadc1);  // 启动ADC1转换HAL_ADC_PollForConversion(&hadc1, 50);	// 等待ADC转换完成smoke_value = HAL_ADC_GetValue(&hadc1); // 读取ADC转换数据printf("smoke_value = %f\r\n", 3.3/4096 * smoke_value);// 4096 = 2^12HAL_Delay(500);}

相关文章:

STM32 ADC介绍和应用

目录 1.ADC是什么&#xff1f; 2.ADC的性能指标 3.ADC特性 4.ADC通道 5.ADC转换顺序 6.ADC触发方式 7.ADC转化时间 8.ADC转化模式 扫描模式 单次转换/连续转换 9.ADC实验 使用ADC读取烟雾传感器的值 代码实现思路&#xff1a; 1.ADC是什么&#xff1f; 全称&#…...

vue项目打包_以生产环境prod模式打包_vue-cli-service 不是内部或外部命令,也不是可运行的程序---vue工作笔记0025

打开命令行: 首先执行npm install 不执行会报错: npm run build:prod --scripts-prepend-node-pathauto 然后再这样执行就是以生产环境模式打包了....

FreeSWITCH的liberal dtmf

sip profile配置liberal-dtmf为true&#xff0c;或者通道变量rtp_liberal_dtmf为true&#xff0c;其含义就是不挑剔协商的DTMF&#xff0c;offer rfc2833并接受远端的rfc2833 和SIP INFO。 sofia.c的部分内容&#xff1a; // 收到sip info的处理 void sofia_handle_sip_i_inf…...

透明度模糊Android实现

最近有个需求&#xff0c;需要透明度加模糊&#xff0c;并且无法通过Glide的方式实现。研究后发现有一个第三方库可以实现这个效果 implementation com.github.Dimezis:BlurView:version-2.0.3在activity的onCreate&#xff08;&#xff09;方法中 实现效果 可以看到上边的bar…...

JavaScript学习笔记04

JavaScript笔记04 方法 定义方法 当一个函数是一个对象的属性时&#xff0c;称之为方法。例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script>let p…...

18 Python的sys模块

概述 在上一节&#xff0c;我们介绍了Python的os模块&#xff0c;包括&#xff1a;os模块中一些常用的属性和函数。在这一节&#xff0c;我们将介绍Python的sys模块。sys模块提供了访问解释器使用或维护的变量&#xff0c;以及与解释器进行交互的函数。 通俗来讲&#xff0c;sy…...

Spring Boot 各版本的支持时间

1. Spring Boot 各版本的支持时间 Spring Boot 2.7 的版本&#xff0c;支持到2023-11-18&#xff0c;之后就要停止支持了。 按照官网的数据&#xff0c;3.0 的版本也是到2023年11月就停止支持了。如果要转到SpringBoot3&#xff0c;直接从3.1开始吧。到写这篇文章时&#xff…...

华为云云耀云服务器L实例评测|Git 私服搭建指南

前言 本文为华为云云耀云服务器L实例测评文章&#xff0c;测评内容是 云耀云服务器L实例 Git 私有服务器搭建指南 系统配置&#xff1a;2核2G 3M Ubuntu 20.04 我们平时在使用代码托管服务的时候&#xff0c;可能某些代码托管平台对成员有限制&#xff0c;或是由于内容原因会对…...

Linux下的Swap内存

目录 一、Swap简介二、Swap内存查看三、Swap内存释放1、关闭swap2、查看关闭进度2、开启swap 一、Swap简介 swap space 是磁盘上的一块区域&#xff0c;可以是一个分区&#xff0c;也可以是一个文件。所以具体的实现可以是 swap分区 也可以是 swap文件。 当系统物理内存吃紧时…...

Unity中程序集dll

一&#xff1a;前言 一个程序集由一个或多个文件组成&#xff0c;通常为扩展名.exe和.dll的文件称为程序集&#xff0c;.exe是静态的程序集&#xff0c;可以在.net下直接运行加载&#xff0c;因为exe中有一个main函数(入口函数&#xff09;&#xff0c;.dll是动态链接库&#…...

识典百科取代快懂百科,如何在识典百科创建词条?

我们一个营销项目里面有四个百科词条的创建&#xff0c;在执行过程中遇见了快懂百科升级&#xff0c;创建词条请前往识典百科&#xff0c;看这个意思字节跳动是要把快懂百科升级整合到识典百科了。 快懂百科升级整合进入识典百科 近年来&#xff0c;字节跳动动作不断&#xff0…...

入门python

[NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了 N N N 个 1 1 1 到 1000 1000 1000 之间的随机整数 ( N ≤ 100 ) (N\leq100) (N≤100)&#xff0c;对于其中重复的数字…...

基于vue的黑马前端项目小兔鲜

目录 项目学习 初始化项目 建立项目 引入elementplus elementPlus主题设置 配置axios 路由 引入静态资源 自动导入scss变量 Layout页 组件结构快速搭建 字体图标渲染 一级导航渲染 吸顶导航交互实现 Pinia优化重复请求 Home页 分类实现 banner轮播图 …...

细节决定成败!jdbc的List<?> qryList4Sql(String sql)报错-标志符过长

问题产生背景&#xff1a; 在写sql时&#xff0c;想着简单直接就偷懒了&#xff0c;没有看清细节 操作步骤跟发现问题&#xff1a; 1. sql语句的执行选用的是jdbc提供的List<?> qryList4Sql(String sql) 方法 2&#xff0c;这是我的sql语句(简化处理) String sql "…...

ChatGLM Pytorch从0编写Transformer算法

预备工作 # !pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl numpy matplotlib spacy torchtext seaborn import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import math, copy, tim…...

9.18算法

机器人重物1126 注意编号是方块的&#xff0c;而不是格点的 及如果为n*m的矩阵&#xff0c;需要开(n1)*(m1)的矩阵 //如果没有转向&#xff0c;就是走迷宫&#xff0c;结合记忆化&#xff0c;如果这个点之前走过就不走了 //又转向的话&#xff0c;就用一个变量记录当前转向&…...

【Spring Bean的生命周期】

文章目录 Spring Bean的生命周期实例化构造器实例化工厂方法实例化 属性赋值XML方式注解方式 初始化postProcessBeforeInitialization()和postProcessAfterInitialization()InitializingBean接口的afterPropertiesSet()方法通过Bean注解定义的初始化方法使用PostConstruct注解标…...

信息化发展49

软件设计 1 、软件设计是需求分析的延伸与拓展。需求分析阶段解决“做什么” 的问题&#xff0c;而软件设计阶段解决“怎么做” 的问题。同时&#xff0c; 它也是系统实施的基础&#xff0c; 为系统实施工作做好铺垫。合理的软件设计方案既可以保证系统的质量&#xff0c; 也可…...

linux常用命令(4):mkdir命令(创建目录)

文章目录 一、命令简介二、命令格式三、常用示例 一、命令简介 mkdir&#xff08;make directories&#xff09;创建目录。 若指定目录不存在则创建目录。若指定目录已存在&#xff0c;则会提示已存在而不继续创建。 touch与mkdir的区别? 很多人可能会把这个搞混淆&#xff…...

企业架构LNMP学习笔记58

开始学习Tomcat&#xff1a; 学习目标和内容&#xff1a; 1&#xff09;能够描述Tomcat的使用场景&#xff1b; 2&#xff09;能够简单描述Tomcat的工作原理&#xff1b; 3&#xff09;能够实现部署安装Tomcat&#xff1b; 4&#xff09;能够实现和配置Tomcat的Server服务…...

[JAVAee]SpringBoot配置文件

配置文件的介绍 配置文件当中记录了许多重要的配置信息,例如: 数据库的连接信息(用户的账户与密码)项目的启动端口第三方系统的调用密匙用于记录问题产生的日志 在spring框架中一些特定的框架会自动调用配置文件中的配置信息来运用. 配置文件中的属性也起到了类似全局变量的…...

复制远程连接到Linux使用VIM打开的内容到Windows

我们经常是使用SSH工具远程连接到Linux服务器上进行工作&#xff0c;有时候需要将Linux下使用VIM打开的文件内容复制到Windows上来&#xff0c;默认情况下&#xff0c;可能会复制不了&#xff0c;因为VIM默认情况下是使用的set mousea的设置&#xff0c;它会让鼠标选中的时候进…...

左神算法之中级提升班(9)

目录 【案例1】 【题目描述】 【思路解析】 【代码实现】 【案例2】 【题目描述】 【思路解析 平凡解技巧 从业务中分析终止条件 重点】 【代码实现】 【案例3】 【题目描述】 【思路解析】 【案例4】 【题目描述】 【思路解析】 【代码实现】 【动态规划代码】…...

SmartNews 基于 Flink 的 Iceberg 实时数据湖实践

摘要&#xff1a;本文整理自 SmartNews 数据平台架构师 Apache Iceberg Contributor 戢清雨&#xff0c;在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为五个部分&#xff1a; SmartNews 数据湖介绍基于 Icebergv1 格式的数据湖实践基于 Flink 实时更新的数据…...

websocket请求通过IteratorAggregate实现流式输出

对接国内讯飞星火模型&#xff0c;官方文档接口采用的是websocket跟国外chatgpt有些差异。 虽然官网给出一个简单demo通过while(true)&#xff0c;websocket的receive()可以实现逐条接受并输出给前端&#xff0c;但是通用和灵活度不高。不能兼容现有项目框架的流式输出。故模仿…...

《C和指针》笔记28:可变参数和stdarg宏

可变参数列表可以通过宏来实现&#xff0c;这些宏定义于stdarg.h头文件&#xff0c;它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏——va_start、va_arg和va_end 。我们可以声明一个类型为va_list的变量&#xff0c;与这几个宏配合使用&#xff0c;访问参数的值…...

Matlab论文插图绘制模板第114期—带图形标记的图

之前的文章中&#xff0c;分享了Matlab带线标记的图&#xff1a; 带阴影标记的图&#xff1a; 带箭头标记的图&#xff1a; 进一步&#xff0c;分享一下带图形标记的图&#xff0c;先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&…...

Python:用于有效对象管理的单例模式

1. 写在前面 在本文中&#xff0c;我们将介绍一种常用的软件设计模式 —— 单例模式。 通过示例&#xff0c;演示单例创建&#xff0c;并确保该实例在整个应用程序生命周期中保持一致。同时探讨它在 Python 中的目的、益处和实际应用。 关键点&#xff1a; 1、单例模式只有…...

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制 以及拥塞控制 1. 滑动窗口&#xff08;效率机制&#xff09;2. 流量控制&#xff08;安全机制&#xff09;3. 拥塞控制&#xff08;安全机制&#xff09; 1. 滑动窗口&#xff08;效率机制&#xff09; TCP 使用 确认应答 策略&#xff0c;对每一个发送的数…...

Xilinx FPGA管脚约束语法规则(UCF和XDC文件)

文章目录 1. ISE环境&#xff08;UCF文件&#xff09;2. Vivado环境&#xff08;XDC文件&#xff09; 本文介绍ISE和Vivado管脚约束的语句使用&#xff0c;仅仅是管脚和电平状态指定&#xff0c;不包括时钟约束等其他语法。 ISE使用UCF文件格式&#xff0c;Vivado使用XDC文件&…...

偷dede网站模板/合肥网站优化推广方案

众所周知&#xff0c;SQL的查询快慢直接影响用户的使用体验&#xff0c;而一个SQL的执行速度主要取决于它采用何种执行计划&#xff0c;在常年累月的系统使用中&#xff0c;数据的不断积累&#xff0c;很可能曾经飞快的SQL变得颤颤巍巍&#xff0c;一秒十卡。其幕后元凶就是表数…...

西安网站建设公司都有哪些/广东疫情最新消息今天

^表示异或&#xff0c;也就是相同为0&#xff0c;不同为1 。 其有很多性质&#xff1a; a ^ a 0。 a ^ 0 a等 使用异或交换a 和 b的值。 a 5; b 6; a a ^ b; b a ^ b; a a^ b;该段代码执行完&#xff0c;就交换 a 和 b 的值了。不用添加任何代码...

经营网站挣钱/seo公司排名教程

使用宝塔面板安装mysqlLinux基本内容&#xff0c;里面有涉及到安装Mysql修改密码而且也要在数据库的菜单中设置root密码修改后密码后进行登录&#xff0c;就不会出现下面的报错了[rootcentos7 ~]# mysql -u root -pEnter password:ERROR 1045 (28000): Access denied for user …...

郑州疫情最新消息今天/宁波seo外包服务平台

拿到 .bin 文件&#xff0c;在文件所在目录下执行如下命令即可安装&#xff0c; ./your-file-name.bin 如果提示 “没有那个文件或目录” &#xff0c;给它加上执行权限即可&#xff0c;执行如下命令&#xff0c; chmod x ./your-file-name.bin...

网站生成海报功能怎么做/网站如何快速收录

1。确定c:\windows\system32\下有xcopy.exe文件 2。我的电脑---右键---属性----高级----环境变量----在系统变量中找到path(不分大小写&#xff09;---双击它----在其变量值 (V)中添加“c:\windows\system32”&#xff01;&#xff0c;添加方法为&#xff1a;在原变量值后面加英…...

网站改版iis301跳转如何做/十大seo公司

Linux新建虚拟机网络配置(1)配置ip地址给linux系统配置ip地址等信息&#xff0c;这样我们的系统就可以彼此实现通信效果&#xff0c;并且也可以提供网络服务&#xff0c;例如apache服务、mysql服务。编辑配置文件&#xff1a;cd /etc/sysconfig/network-scriptsifcfg-eth0&…...