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

STM32单片机ADC功能详解

文章目录

1. ADC概述

2. ADC结构图

3. 引脚定义

4. 转换模式

5. 数据对齐

6. 转换时间

7. 硬件电路

8. STM32使用ADC单/多通道检测数据


1. ADC概述

  • 功能:ADC是一个将模拟信号(如电压)转换为数字信号的设备。在微控制器中,它允许模拟信号如传感器输出或其他电压形式被数字化,进而可以由数字系统处理。
  • 分辨率:12位,这意味着ADC输出的数字可以在0到4095之间变化。更高的分辨率意味着更精确的输入信号量化。
  • 转换速度:1μs转换时间指每个ADC样本的获取和转换仅需1微秒。
  • 输入电压范围:0至3.3V,这是微控制器能够安全处理的电压范围,超过此范围可能导致硬件损伤或数据不准确。
  • 多通道输入:STM32F103C8T6具备10个外部和2个内部的ADC通道,使得可以同时从多个源获取数据,非常适合复杂或多变量的监测任务。
  • 18个触发输入:这些触发输入支持从10个外部源和2个内部源触发ADC,允许在特定事件发生时自动启动ADC转换,增强了系统的自动化和响应速度。

对于将数字信号转为模拟信号的功能称为DAC,和PWM相似,PWM只有导通和断开两种状态。这两种状态都没有功率损耗,所以适用于直流电机这种大功率场景。而DAC主要应用于波形生产:比如信号发射器。

2. ADC结构图

从结构图中可以看出,有18个输入通道(C8T6只有10个),到达模拟多路开关,可以指定想要选择的通道,再往右边是多路开关的输出,进入到模数转换器,这里的转换器采用逐次比较的方法,也就是二进制从高位到地位依次比较,转换的结果会存放到数据寄存器中,读取寄存器就可以得到数据。

对于普通的ADC,多路开关一般只选择一个,也就是选择其中一个通道,然后转换,转换完成后取出结果,但在这里可以选择多个通道,并且stm32还有分组的功能,规则组和注入组。

规则组可以一次性选择16个通道,注入组可以选择4个通道。但是由于数据寄存器只能存放一个数据,所以选择多个通道会导致前面的数据被覆盖,这时就需要使用到DMA,它可以将每个数据进行转移。

对于注入组,不用担心数据覆盖的问题,因为注入通道有4个寄存器,可以同时储存4个通道的数据。

并且还可以在模拟看门狗中设置阈值,例如如果超出阈值,就会触发中断。

3. 引脚定义

引脚定义也可以在数据手册中查到:

通道编号ADC1ADC2ADC3
通道0PA0PA0PA0
通道1PA1PA1PA1
通道2PA2PA2PA2
通道3PA3PA3PA3
通道4PA4PA4PF6
通道5PA5PA5PF7
通道6PA6PA6PF8
通道7PA7PA7PF9
通道8PB0PB0PF10
通道9PB1PB1
通道10PC0PC0PC0
通道11PC1PC1PC1
通道12PC2PC2PC2
通道13PC3PC3PC3
通道14PC4PC4
通道15PC5PC5
通道16温度传感器
通道17内部参考电压

4. 转换模式

在ADC初始化的结构体中有两个参数,单词转换/连续转换,扫描模式/非扫描模式,这两个参数组成了不同的转换模式。

  • 单次转换,非扫描模式

在这个模式下只有序列1有效(非扫描模式),如果想转换某一个通道,例如选择通道2,这时就会转换通道2的数据并将数据存入寄存器,如果想换一个通道就需要将选择的新通道替换掉原来的通道2.

  • 连续转换,非扫描模式

非扫描模式,所以还是序列1有效,和单次转换不同的是,连续模式代表转换一次后,不需要等待,会自动进行下一轮的转换。

  • 单次转换,扫描模式

依然是单次转换,所以只触发一次,转换结束后会停止。扫描模式代表可以使用菜单,也就是使用多个序列,多个通道。比如这里指定通道数目为7,代表会依次扫描前7个通道,转换结果放到寄存器中,为了防止数据被覆盖,需要用DMA及时将数据转移走。七个通道转换完成后,产生ECO信号,代表转换结束。

  • 连续转换,扫描模式

相对于单次转换,扫描模式,这个模式在转换完成后,立刻开始下一次的转换。也就是转换一次后,不需要等待,会自动进行下一轮的转换。

5. 数据对齐

在ADC中,转换结果为12位的数据,但是数据寄存器是16位的,这就存在一个数据对齐的问题。有两种方式,数据右对齐和数据左对齐。

数据右对齐:

12位的数据向右靠,高位多出来的几位就补0,这个方式读取寄存器,直接得到的就是转换结果。

数据左对齐:

12位的数据向左靠,低位补0,这个方式直接读取的话数据会较大,因为二进制左移一次相当于把这个数据乘以2,下面的例子相当于把结果乘以16倍。

6. 转换时间

AD转换的步骤位:采样,保持,量化,编码

采样保持的作用:因为AD转换时,量化和编码需要一段时间,如果在这段时间中,输入电压依然不断变化,就无法准确判断电压的数据,所以就需要用到采样开关,先打开开关收集外部电压,然后断开采样开关,再进行量化和编码,这个过程所用的时间就是采样时间。

  • STM32 ADC的总转换时间​:

总转换时间是进行一次完整AD转换所需要的时间,它由两部分组成:

  1. 采样时间:ADC模块在将模拟信号转换成数字信号前,需要一定的时间来采样模拟信号。这段时间是可编程的,可以根据信号的性质和需要的精度来调整。
  2. 转换时间:这是ADC完成实际的模数转换过程所需的固定时间,通常由内部时钟频率决定。
  • 公式说明:

总转换时间的计算公式为: T(CONV) = 采样时间 + 12.5个ADC周期

其中T(CONV) 是ADC模块的时钟周期,这取决于ADC时钟(ADC Clk)的频率。

  • 示例:

假设 ADC Clk 的频率是14MHz,则每个时钟周期T(ADC)是 1/114MHz,1/14MHz​ 约为 71.4ns。因此,如果采样时间设置为1.5个ADC时钟周期(通常是最小设置),转换时间计算如下: T(CONV) = 1.5×71.4ns+12.5×71.4nsTCONV​=1.5×71.4ns+12.5×71.4ns

T(CONV) = 1.071ns + 892.5ns

T(CONV) = 893.571ns 即转换时间大约是893.571纳秒,接近1微秒。

7. 硬件电路

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差,所以建议在每次上电后执行一次校准,启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期,这些都会在初始化代码中设置。

下面三种电路就是常见的ADC的外围输入电路。

第一个是电位器产生可调电压,中间的PA0,也就是滑动端可以输出一个0-3.3v可调的电压输出,当滑动端向上时,电压增大,往下滑时,电压减少,另外这里电阻的阻值不能太小,太小可能会损坏,至少要接千欧的电阻。

第二个是传感器输出电压的电路,它们都可以等效为一个可变电阻,因为电阻阻值无法直接测量,所以这里可以通过和一个固定电阻串联分压,来得到一个反应电阻值电压的电路,这里传感器阻值变小时,下拉作用变强,输入端电压就下降。传感器阻值变大时,下拉作用变弱,输出端收上拉电阻的作用,电压就会升高,固定电阻一般可以选择和传感器阻值相近的电阻。

第三个是电压转换电路,比如测量一个5v电池输入电压,但ADC只能测量不超过3.3v的电压,就可以使用电阻进行分压,上面加下面的阻值一共50K,根据分压公式,中间的电压为VIN/50K*33K,最后得到的电压就是0-3.3V.

8. STM32使用ADC单/多通道检测数据

正在写,明天发布

完整工程文件:

STM32通过ADC单通道检测数据

STM32通过ADC多通道检测数据

相关文章:

STM32单片机ADC功能详解

文章目录 1. ADC概述 2. ADC结构图 3. 引脚定义 4. 转换模式 5. 数据对齐 6. 转换时间 7. 硬件电路 8. STM32使用ADC单/多通道检测数据 1. ADC概述 功能:ADC是一个将模拟信号(如电压)转换为数字信号的设备。在微控制器中&#xff0c…...

47.Redis学习笔记

小林coding -> 图解redis的学习笔记 文章目录 Rediswindwos安装docker安装redis启动redis使用RDM访问虚拟机中的redispython连接redis缓存穿透、击穿、雪崩基本数据类型高级数据类型高并发指标布隆过滤器分布式锁Redis 的有序集合底层为什么要用跳表,而不用平衡…...

数控六面钻适用场景-不止家具制造

在快节奏的现代生活中,家具作为我们生活的重要组成部分,其美观度和实用性日益受到人们的关注。而在这背后,一个不可或缺的“工匠”正默默地发挥着它的作用——那就是数控六面钻。 数控六面钻,顾名思义,是一种高度自动…...

【力扣】86. 分隔链表

86. 分隔链表 题目描述 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head […...

海云安受邀参加诸子云 4.27南京「金融互联网」私董会

4月27日,“安在新媒体网安用户行业活动”第四期私董会在南京顺利举办。活动以“金融&互联网”为主题,邀请十余位业内资深的甲方用户以及典型厂商代表。摒弃传统的议题分享,采取“随时问答,自由讨论”的形式,提问题…...

docker操作使用注意事项

文章目录 一、运行docker二、拉取的镜像存放位置1、查询所有拉取的镜像2、查询所有安装的镜像3、查询docker应用的所有信息 一、运行docker 该命令执行后是在窗口下运行的,关闭或退出后docker应用会停止运行 -p:设置绑定端口映射,10022对应…...

Leetcode—163. 缺失的区间【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—163. 缺失的区间 实现代码 class Solution { public:vector<vector<int>> findMissingRanges(vector<int>& nums, int lower, int upper) {int n nums.size();vector<vector<int>> an…...

Ansible自动化运维工具 - playbook 剧本编写

一. inventory 主机清单 Inventory 支持对主机进行分组&#xff0c;每个组内可以定义多个主机&#xff0c;每个主机都可以定义在任何一个或多个主机组内。 1.1 inventory 中的变量含义 Inventory 变量名 含义ansible_hostansible连接节点时的IP地址ansible_port连接对方…...

Web前端一套全部清晰 ⑥ day4 CSS.2 复合选择器、CSS特性、背景属性、标签的显示模式

别人的议论&#xff0c;那是别人的&#xff0c;你的人生&#xff0c;才是你的 —— 24.5.7 一、复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09; 1.后代选择…...

Linux 认识与学习Bash——3

在Linux bash中&#xff0c;数据流重定向是指将命令的输出从默认的标准输出&#xff08;通常是终端&#xff09;重定向到其他位置&#xff0c;如文件或另一个命令的输入。这是通过使用特定的符号来实现的。例如&#xff0c;>用于将输出重定向到文件&#xff0c;而<用于将…...

匠心精神与创新力量:构筑网络安全的新防线

一、匠心精神在网络安全中的重要性 匠心精神代表着对工作的专注和对质量的极致追求。在网络安全领域&#xff0c;这意味着对每一个安全漏洞的深入挖掘&#xff0c;对每一项安全技术的精心打磨。亿林网络李璐昆的提名&#xff0c;正是对其在网络安全领域匠心精神的认可。 二、…...

接口信息解析

目录 一、通讯流程 二、如何获取接口信息--抓包 1、抓包步骤: 2、抓包工具 接口文档:又称为API文档&#xff0c;是由后端开发编写&#xff0c;用来描述接口信息的文档 一、通讯流程 功能&#xff08;比如&#xff1a;登录&#xff09;请求&#xff08;请求路径、请求方式、…...

scikit-learn实现单因子线性回归模型

1.是什么&#xff1a; 针对机器学习提供了数据预处理&#xff0c;分类&#xff0c;回归等常见算法的框架 2.基于scikit-learn求解线性回归的问题&#xff1a; 2.1.求解a&#xff0c;b对新数据进行预测&#xff1a; 2.2评估模型表现&#xff08;y和y’的方差MSE&#xff09;…...

【笔记】Anaconda命令提示符(Anaconda Prompt)操作

通过anaconda配置python环境有时需要conda安装一些包或者文件&#xff0c;这里作为一个笔记记录如何打开Anaconda命令提示符&#xff08;Anaconda Prompt&#xff09;&#xff0c;并用conda操作 1.打开Anaconda命令提示符&#xff08;Anaconda Prompt&#xff09; 可直接在搜…...

Unity射击游戏开发教程:(12)使用后处理

后处理 后期处理是向您的游戏场景添加一个或多个滤镜,确实可以为您的游戏提供精美的外观。在本文中,我们将讨论如何在 Unity 中设置后处理系统,从那里您可以探索和试验 Unity 提供的所有过滤器。 首先,我们需要从包管理器添加后处理器堆栈。包管理器是 Unity 产品的集合,…...

python:机器学习特征优选

作者&#xff1a;CSDN _养乐多_ 在Python中进行机器学习特征选择的方法有很多种。以下是一些常用的方法&#xff1a; 过滤法&#xff08;Filter Methods&#xff09;&#xff1a;通过统计方法或者相关性分析来评估每个特征的重要性&#xff0c;然后选择最相关的特征。常用的…...

花一个月时间为 vue3 重制了 vue-styled-components

花一个月时间为 vue3 重制了 vue-styled-components 前言 styled-components 在 React 是一个超级热门的 css in js 工具库。其实 styled-components 也有 Vue 版本&#xff08;vue-styled-components&#xff09;&#xff0c;可惜的是只支持 Vue2&#xff0c;并且该项目已有…...

API接口调用|京东API接口|淘宝API接口

什么是电商API接口&#xff1a; 电商API接口是电商服务平台对外提供的一种接口服务&#xff0c;允许第三方开发者通过编程方式与电商系统进行数据交互和功能调用。 这些接口提供了一种标准化的方法来获取、更新或处理电商平台上的商品信息、订单状态、用户数据、支付信息、物流…...

pgsql和mysql比较

pgsql相对于mysql的优势主要体现在以下几个方面&#xff1a; 稳定性和可靠性&#xff1a;PostgreSQL的稳定性极强&#xff0c;即使在崩溃、断电等灾难场景下也能表现出很好的抗打击能力。相比之下&#xff0c;很多MySQL用户都遇到过Server级的数据库丢失的情况。此外&#xff…...

【太赫兹偏振保持亚波长波导链路功率预算分析】

在进行太赫兹&#xff08;Terahertz&#xff0c;THz&#xff09;偏振保持亚波长波导链路的功率预算分析时&#xff0c;我们需要考虑多个因素&#xff0c;包括波导的传输损耗、耦合损耗、偏振保持性能、以及可能存在的其他系统损耗。以下是一个基本的分析框架&#xff1a; 传输…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...