ADC(模数转换)详解

news2024/11/15 15:43:01

ADC(模数转换)详解

  • 前言
  • ADC的定义
  • ADC简介
  • ADC特性
  • ADC时钟
  • 工作模式
  • 单通道单次转换练习
  • 多通道扫描模式单次转换

前言

在STM32微控制器中,ADC代表模数转换器(Analog-to-Digital Converter)。ADC是一种用于将模拟信号转换为数字信号的电子设备或模块。
TLC1543

STM32微控制器中的ADC模块用于将模拟电压信号转换为数字表示,以便微控制器可以对其进行处理和分析。它可以将外部传感器、电压源或其他模拟信号的变化转换为微控制器可以理解和处理的数字形式。

ADC的工作原理是将连续变化的模拟电压信号分割成离散的取样,并对每个取样进行量化,生成相应的数字表示。通常,ADC使用一种称为逐次逼近法(successive approximation)的转换技术,通过逐步比较模拟输入信号和一个内部参考电压来逼近原始模拟信号的值,并将其转换为对应的数字值。

STM32微控制器中的ADC模块提供了多个转换通道,可以选择不同的输入引脚来进行模拟信号的采样和转换。它还提供了各种配置选项,如采样时间、分辨率、转换速率等,以满足不同应用场景的需求。

通过使用STM32的ADC功能,开发者可以方便地将外部模拟信号转换为数字形式,从而实现各种测量、检测和控制应用,如温度监测、电压测量、传感器读取等。

ADC的定义

ADC是模拟到数字转换器(Analog-to-Digital Converter)的缩写。它是一种电子设备或模块,用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统(如微处理器、微控制器等)能够对其进行处理和分析。
在这里插入图片描述
在这里插入图片描述

模拟信号是连续变化的电压或电流信号,其数值在一定范围内变化。而数字信号是由一系列离散的数字表示,只能取有限的值,通常以二进制形式表示。

ADC的工作原理是将模拟信号分割成一系列离散的取样,并将每个取样值转换为相应的数字表示。这个过程涉及到两个主要步骤:采样和量化。

  1. 采样:ADC将连续变化的模拟信号在一定时间间隔内进行取样。取样频率决定了每秒采集的样本数,通常以赫兹(Hz)表示。采样过程通过保持并测量模拟信号在每个采样时间点的电压值来实现。

  2. 量化:采样得到的连续模拟信号经过量化转换为数字形式。量化是将每个采样值映射到一个离散的数字值的过程。这通常通过比较采样值与参考电压之间的差异,并将其转换为数字表示。

ADC的分辨率是指它可以将模拟信号分成多少个离散的级别。较高的分辨率意味着ADC能够提供更精细的数字表示,从而更准确地捕捉和量化模拟信号的细微变化。

ADC在许多应用中起着重要作用,例如传感器信号采集、音频采样、数据采集和控制系统等。它使得模拟信号能够与数字系统进行交互和处理,从而实现各种测量、监测和控制任务。

ADC简介

12 位 ADC 是一种逐次逼近型模拟数字转换器。
它有多达 19 个通道,可测量 16 个外部通道(从外部GPIO口连接的16通道模拟输入)
3个内部信号源,分别为内部温度传感 (VSENSE) 输入、内部参考电压 (VREFINT) 输入、外部电池 VBAT 供电引脚输入
各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。
ADC的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。
在这里插入图片描述

ADC特性

量程:
能测量的电压范围 0 ~ 3.6V
分辨率:
ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。
可配置的转换精度:
6位,8位,10位,12位
转化时间:
模拟输入电压在允许的最大变化范围内,从转换开始到获得稳定的数字量输出所需要的时间称为转换时间
在这里插入图片描述

ADC时钟

SYSCLK 系统时钟
HSI 16Mhz 高速内部时钟
PLL 锁相环倍频器
在这里插入图片描述

工作模式

EOC: 通道转换结束信号
EOS: 序列转换结束信号
单次转换模式: ADC只执行一次转换;
连续转换模式: 转换结束之后马上开始新的转换;

在这里插入图片描述
ADC的单次模式和连续模式
这两种模式的概念是相对应的。这里的单次模式并不是指一个通道。假如同时开了ch0,ch1,ch4,ch5这四个通道。单次模式转换模式下会把这四个通道采集一遍就停止了。而连续模式就是这四个通道转换完以后再循环过来再从ch0开始。

扫描模式
ADC扫描选中的所有通道,在每个组的每个通道上执行单次转换。在每个转换结束时,这一组的下一个通道被自动转换。如果设置了CONT位(开启了连续转换模式),转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。

间断模式
触发一次,转换一个通道,在触发,在转换。在所选转换通道循环,由触发信号启动新一轮的转换,直到转换完成为止。

ADC单通道
单次转换: 只进行一次ADC转换:配置为“单次转换模式”,扫描模式关闭。ADC通道转换一次后,就停止转换。等待再次使能后才会重新转换
连续转换: 进行连续ADC转换:配置为“连续转换模式”,扫描模式关闭。ADC通道转换一次后,接着进行下一次转换,不断连续。

ADC多通道
单次转换: 只进行一次ADC转换:配置为“单次转换模式”,扫描模式使能。ADC的多个通道,按照配置的顺序依次转换一次后,就停止转换。等待再次使能后才会重新转换
连续转换:进行连续ADC转换:配置为“连续转换模式”,扫描模式使能。ADC的多个通道,按照配置的顺序依次转换一次后,接着进行下一次转换,不断连续。

单通道单次转换练习

采集光照/火焰/可燃气传感器数值(这里以G030为例,请根据自己情况配置引脚)
采集光照/火焰/可燃气传感器数值(这里以G030为例,请根据自己情况配置引脚)
采集光照/火焰/可燃气传感器数值(这里以G030为例,请根据自己情况配置引脚)

1.打开ADC对应通道
在这里插入图片描述
2. 使能串口
在这里插入图片描述
3. 编程实现
1)启动ADC

   HAL_StatusTypeDef HAL_ADC_Start (ADC_HandleTypeDef *  hadc)
   功能:启动ADC开始转换
    参数:ADC_HandleTypeDef *  hadc  句柄
    返回值:   状态

2)等待转换结束

  HAL_StatusTypeDef HAL_ADC_PollForConversion  (ADC_HandleTypeDef * hadc, uint32_t Timeout)
  功能:等待转换完成
  参数:   ADC_HandleTypeDef * hadc   句柄   
               uint32_t Timeout    超时时间
   返回值好:转换状态

3)获取转换结果

    uint32_t HAL_ADC_GetValue (ADC_HandleTypeDef * hadc)
   功能:获取转换结果
   参数:ADC_HandleTypeDef * hadc 句柄
   返回值:转换结果

4)停止ADC

 HAL_StatusTypeDef HAL_ADC_Stop (ADC_HandleTypeDef *  hadc)
 功能:停止ADC
  参数:ADC_HandleTypeDef *  hadc  句柄
  返回值: 状态       

5)串口输出转换结果
重定向printf到串口,再通过printf输出转换结果
在这里插入图片描述

多通道扫描模式单次转换

  1. 将PA1(多向按键)设置为ADC的输入通道

在这里插入图片描述

  1. 选择序列-扫描模式
    在这里插入图片描述

  2. 编程实现
    现在有两个通道需要转换且获取结果,当第一个通道转换完成时,会产生一个EOC信号,当整个序列转换完成时,会产生一个EOS信号
    ADCx_ISR 中断和状态寄存器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

【Linux】程序地址空间?进程地址空间

目录 程序地址空间回顾进程地址空间什么是进程地址空间&#xff1f;进程地址空间与PCB、物理内存、页表和磁盘之间的关系为什么要存在虚拟地址空间&#xff1f;重新理解地址空间 程序地址空间回顾 了解进程的运行&#xff1a; 1 #include <stdio.h>2 #include <unist…

Web安全——HTML基础

HTML 一、对于前端以及后端的认识以及分析二、HTML认知1、网页的组成2、浏览器3、Web标准 三、简单的HTML页面架构四、HTML常见标签1、meta标签2、标题标签3、文本属性4、form表单5、a 标签6、锚文本7、img 标签8、table 表格9、列表标签9.1、无序列表9.2、有序列表 10、框架的…

个人工作总结和计划怎么写

工作总结和计划怎么写1 20__年就快结束&#xff0c;回首年的工作&#xff0c;有硕果累累的喜悦&#xff0c;有与同事协同攻关的艰辛&#xff0c;也有遇到困难和挫折时惆怅&#xff0c;时光过得飞快&#xff0c;不知不觉中&#xff0c;充满希望的_年就伴随着新年伊始即将临近。可…

C++ 重载函数

文章目录 前言一、什么是重载函数&#xff1f;二、重载函数的类型&#xff0c;作用。1. 构造函数重载&#xff1a;2. 运算符重载&#xff1a;3. 函数重载&#xff1a;4. 成员函数重载&#xff1a; 总结 前言 一、什么是重载函数&#xff1f; 在C中&#xff0c;函数重载&#x…

【Linux工具篇】---vim的基本使用

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 &#x1f370…

C# 学习(一)概述

今天开始学习 C#&#xff0c;所有学习资料来源于&#xff1a; 菜鸟教程 一、C# 简介 C# 是 .NET 框架的一部分&#xff0c;随之创造出来的语言&#xff0c;所以了解 C# 前&#xff0c;需要知道 .NET 是个什么东西。 1.1 .NET 框架介绍 .NET 是微软提出的 Web 的一种软件开发…

智能文档图像处理技术应用与实践

写在前面智能文档处理面临的技术难题智能文档处理的研究领域● 文档图像分析与预处理● 手写板反光擦除● 版面分析与文档还原 写在最后 写在前面 VALSE 2023 无锡视觉与学习青年学者研讨会近期在无锡国际博览中心举办&#xff0c;由江南大学和无锡新吴区联合承办。本次会议旨…

卡尔曼滤波在目标跟踪中的应用(4)

在前一节内容中&#xff0c;我们学习了二维匀加速运动目标的卡尔曼滤波问题&#xff0c;同时利用MATLAB进行了仿真验证&#xff0c;今天我们继续往下扩展一个维度&#xff0c;学习三维空间下的卡尔曼滤波问题。 话不多说&#xff0c;开整&#xff01;&#xff01;&#xff01; …

【深度学习】6-1 卷积神经网络 - 卷积层

卷积神经网络(Convolutional Neural Network&#xff0c;CNN)。 CNN 被用于图像识别、语音识别等各种场合&#xff0c;在图像识别的比赛中&#xff0c;基于深度学习的方法几乎都以 CNN 为基础。 首先&#xff0c;来看一下 CNN 的网络结构&#xff0c;了解 CNN 的大致框架。CNN…

算法程序设计 之 装载问题(6/8)

一、实验目的&#xff1a; 理解并掌握回溯法与分支限界法的联系与区别&#xff0c;学会构造不同问题的解空间树&#xff0c;用上述两种算法解决装载问题。 实验内容问题描述&#xff1a;有n个集装箱要装上2艘载重量分别为C1和C2的轮船&#xff0c;其中集装箱i的重量为wi&#…

论文浅尝 | DEER:解释实体关系的描述性知识图谱

笔记整理&#xff1a;王润哲&#xff0c;东南大学硕士&#xff0c;研究方向为多元关系抽取 链接&#xff1a;https://aclanthology.org/2022.emnlp-main.448.pdf 动机 实体关系是知识图谱中不可或缺的一层重要信息&#xff0c;它们描述了实体之间的语义关系&#xff0c;这种连接…

【力扣刷题 | 第十二天】

目录 前言&#xff1a; 104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09; 前序遍历&#xff1a; 后序遍历&#xff1a; 总结&#xff1a; 前言&#xff1a; 今天还是对树的基础题进行刷题&am…

大数据Doris(四十七):开启Steam Load记录

文章目录 开启Steam Load记录 一、停止 Doris 集群 二、在 node3-node5 BE 节点上配置 be.conf 三、重新启动 Doris 集群 开启Steam Load记录 后续执行Stream Load 导入任务后&#xff0c;我们会在Doris集群中会查询对应Stream Load任务的情况&#xff0c;默认BE是不记录S…

【Rust日报】2023-06-20 使用Quickwit、Jaeger和Grafana监控您的Rust应用程序

使用Quickwit、Jaeger和Grafana监控您的Rust应用程序 你可能已经看过了Lucas Palmieri的博客文章Are we observable yet? An introduction to Rust telemetry。如果你还没有看过&#xff0c;我们建议阅读一下&#xff0c;因为它提供了一个全面的介绍&#xff0c;介绍了如何处理…

【Python 基础篇】Python 函数:代码重用的利器

文章目录 导言一、创建函数二、函数参数1、位置参数2、关键字参数3、默认参数 三、函数返回值四、函数的高级用法1、递归函数2、匿名函数3、内置函数 总结 导言 函数是一种在Python中定义和封装可重用代码的重要机制。它们使我们能够将复杂的任务分解为更小的部分&#xff0c;…

【算法与数据结构】15、LeetCode三数之和

文章目录 一、题目二、双指针法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、双指针法 思路分析&#xff1a;我们使用双指针法&#xff0c;但这道题因为要求数组三个元素的和&#xff0c;一共用到了三个指…

新人拿到一个web项目如何使用idea发布运行

本文描述的是一个新手&#xff0c;拿到一个web项目&#xff0c;使用idea如何发布运行。项目中没有非常复杂的元素&#xff0c;只是试着描述应该如何配置相关内容。 内容描述前提&#xff0c;首先请您确认tomcat已经安装&#xff0c;其次确认jdk已经安装&#xff0c;并明确他们在…

基于Java农产品仓库管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

管理类联考——逻辑——技巧篇——论证推理(10-12 道左右)——五大秒杀思路

逻辑考试出题思路分类 论证推理&#xff08;10-12 道左右&#xff09; 论证推理细分思路 假设——补全逻辑假设——引入前提前真后假 - 前假后真建立联系型支持由果推因的削弱由因推果 / 直接引入他因指出不同 / 指出相同五大固定秒杀思路解释类题目评价类题目 论证推理题目…

C语言学习(二十四)---递归与冒泡排序法

在前面几节的内容中&#xff0c;我们学习了指针的相关概念&#xff0c;至此&#xff0c;指针的内容就暂时告一段落了&#xff0c;今天我们将继续向下学习&#xff0c;主要内容为递归和冒泡排序法&#xff0c;好了&#xff0c;话不多说&#xff0c;开整&#xff01;&#xff01;…