STM32 ADC基础知识讲解

news2024/11/25 14:58:44

文章目录

  • 前言
  • 一、ADC的基本介绍
  • 二、STM32 ADC讲解
    • 1.ADC分辨率
    • 2.ADC通道讲解
    • 3.ADC转换模式
      • 单次转换模式
      • 连续转换模式
    • 4.扫描模式
    • 5.数据对齐方式
      • 左对齐
      • 右对齐
  • 总结


前言

在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。

一、ADC的基本介绍

ADC 指的是模数转换器(Analog-to-Digital Converter),它是一种用于将模拟信号转换为数字信号的电子设备或电路。
模拟信号是连续变化的信号,可以取无限个可能的值,而数字信号则是离散的,只能表示有限个数值。ADC 的作用就是将模拟信号转换为离散的数字信号,以便数字电子系统进行处理、存储和传输。
ADC 的基本工作原理是通过一系列的采样和量化过程来实现模拟到数字的转换:

1.采样(Sampling):ADC 根据一定的时间间隔,从模拟信号中获取一系列离散的采样点。采样率决定了采样点的密度,较高的采样率可以更精确地表示原始模拟信号。
2.量化(Quantization):采样得到的模拟信号样本通常是连续的,量化则将每个采样点映射为一个特定的数字值。量化过程将连续的模拟信号离散化,并分配给每个样本一个数字值。
3.编码(Encoding):编码将量化后的数字值表示为二进制形式,以便于数字系统处理。常见的编码方式包括无符号二进制、补码和格雷码等。

ADC 的性能特性受到多个指标的影响,包括分辨率(Resolution)、采样率(Sampling Rate)、信噪比(Signal-to-Noise Ratio,SNR)、线性度(Linearity)和动态范围(Dynamic Range)等。
应用领域广泛的 ADC 包括音频处理、数据采集、传感器测量、工业控制、通信系统等。根据不同应用的需求,ADC 可以有不同的类型和工作原理,如逐次逼近型 ADC、积分型 ADC、闩锁型 ADC、ΔΣ(Delta-Sigma) ADC 等。
总结来说,ADC 是将模拟信号转换为数字信号的设备,广泛应用于各个领域的电子系统中,使得我们能够对模拟信号进行准确地采集、处理和分析。

二、STM32 ADC讲解

1.ADC分辨率

在手册中我们可以看到这款STM32F1的ADC位数是12bit的。

ADC 的分辨率决定了它能够将模拟信号转换为多少不同的数字值。12 位的分辨率意味着 ADC 能够将模拟信号分为 2^12(4096)个离散的量化级别。每个量化级别在数字表示上对应于一个不同的数字值。
在这里插入图片描述

2.ADC通道讲解

这个 ADC 具有 16 个复用通道,可以将转换分为两个组:常规组和注入组。一个组包含一系列的转换,可以在任何通道上以任意顺序进行。例如,可以按照以下顺序进行转换:Ch3, Ch8, Ch2, Ch2, Ch0, Ch2, Ch2, Ch15。

常规组(Regular Group):常规组允许进行按照一定顺序执行的转换。可以选择将转换进行到任意通道,并且可以定义转换的顺序。在常规组中,可以设置转换的采样时间、分辨率和触发方式等参数。通过配置 ADC 控制器和寄存器,可以定义常规组的转换顺序和通道的使用。

注入组(Injected Group):注入组也允许进行按照一定顺序执行的转换,但与常规组不同,注入组通常用于特殊的转换需求,如快速转换、优先级更高的转换等。注入组可以在常规组的转换之间进行插入,以满足特定的应用需求。与常规组类似,可以设置注入组转换的参数和顺序。
在这里插入图片描述

3.ADC转换模式

在这里插入图片描述

单次转换模式

单次转换模式是一种简单的模式,ADC在执行一次转换之后就会停止工作。在单次转换模式下,ADC可以执行以下操作:

通过设置ADC_CR2寄存器中的ADON(ADC使能)位启动转换。对于常规通道,这是最常用的方法。
通过外部触发器(external trigger)启动转换。外部触发器可以是来自其他外设的信号或特定的事件触发源。
一旦选定的通道的转换完成,ADC会采取以下操作:

转换的结果将存储在16位的ADC_DR(数据寄存器)中。
EOC(End Of Conversion)标志位将被设置,指示转换已完成。
如果已启用中断,将产生一个中断以通知转换完成。
单次转换模式适用于那些只需要在特定事件或时间间隔内获取单次模拟信号的应用场景。例如,对于传感器数据采集、触发式数据采集或周期性地获取模拟信号的要求较低的应用。

连续转换模式

连续转换模式允许ADC连续不断地执行模数转换,以持续地获取模拟信号的变化。在连续转换模式下,ADC可以执行以下操作:

通过设置ADC_CR2寄存器中的ADON位启动转换(常规通道)。
通过外部触发器启动转换(常规或注入通道)。
在连续转换模式下,ADC将不断地进行转换,以持续获取选定的通道的模拟信号,直到被显式地停止或发生特定的事件(如中断触发)。

连续转换模式适用于需要持续监测模拟信号变化的应用场景。例如,声音或图像处理、实时控制系统或需要高速数据采集的应用。

4.扫描模式

ADC的扫描模式(Scan mode)是一种工作模式,允许ADC按照预定义的通道顺序对多个通道进行连续的模数转换。

在扫描模式下,ADC可以按照用户指定的通道顺序连续地进行模数转换,而不需要在每次转换中重新配置通道。以下是扫描模式的关键要点:

通道顺序:用户可以定义一组转换通道,并按照特定的顺序执行转换。通常,这个顺序由用户在配置ADC时设置的通道顺序寄存器(例如ADC_SQRx)来确定。

转换顺序:ADC按照预定义的通道顺序执行模数转换。对于每个通道,ADC执行一次转换,并在完成后自动转到下一个通道进行转换,直到转换完所有指定的通道。

转换结果:每个转换的结果将存储在相应的数据寄存器(例如ADC_DR)中。用户可以使用这些数据寄存器来读取每个通道的转换结果。

扫描结束:一旦完成了指定的所有通道的转换,ADC将发出一个扫描结束标志(Scan End Flag)来指示扫描的完成。

扫描模式适用于需要同时或按照特定顺序转换多个模拟信号的应用。它方便地允许将多个模拟输入通道连接到单个ADC,并按照预定义的顺序进行连续转换。例如,当需要监测多个传感器输入或以特定顺序采集不同模拟信号时,扫描模式是非常有用的。
在这里插入图片描述

5.数据对齐方式

左对齐

左对齐(Left-Alignment):
在左对齐模式下,ADC转换结果的最高有效位(MSB)被放置在数据寄存器的最高位(最左侧),而低有效位(LSB)则按照递增的顺序排列在其右侧。也就是说,数据的高位位于数据寄存器的高位,低位填充为零。

D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0

其中D11到D0表示转换结果的有效位。

左对齐的优点是可以直接将转换结果的高位作为有效数据进行处理,对于一些位操作和直接输出到外设的应用比较方便。

右对齐

在右对齐模式下,ADC转换结果的最低有效位(LSB)被放置在数据寄存器的最低位(最右侧),而高位则按照递增的顺序排列。也就是说,数据的低位位于数据寄存器的低位,高位填充为零。

对于12位ADC转换结果的右对齐模式,排列可能如下所示:

0 0 0 0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

其中D11到D0表示转换结果的有效位。

右对齐的优点是可以将转换结果直接与常量进行比较或进行数值计算,因为有效位的位置是固定的,更方便进行数据处理。
在这里插入图片描述

总结

本篇文章讲解了STM32的ADC的一些基础知识,大家有必要掌握一下。

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

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

相关文章

打造i-SMART智能网联平台,亚马逊云科技助力上汽快速出海

当前在各大外资车企不断加码在华投资之际,越来越多的中国汽车品牌纷纷开始走出国门,加速推进全球化业务,将赛道转至更为广阔的海外市场。 上汽海外出行科技有限公司(简称“上汽海外出行”)成立于2018年,承…

华为OD机试真题 Java 实现【挑选字符串】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题…

vue的生命周期和执行顺序

1,Vue 生命周期都有哪些? 序号生命周期描述1beforecreate创建前vue实例初始化阶段,不可以访问data,methods; 此时打印出的this是undefined;2created创建后vue实例初始化完成,可以访问data,meth…

postgresql部署及优化

目录 一、postgresql概念 二、PostgreSQL 特征 三、postgres安装与登录 3.1、postgres安装 3.2、postgres使用 3.3.1、postgres登录 3.3.2、修改postgres用户密码 四、PostgreSQL 命令 4.1、PostgreSQL 创建数据库 4.2、删除数据库 4.3、创建表格 4.4、删除表格 一、…

Bard:Google AI的下一代语言模型,支持多语言、语音朗读、图片解析和更多

说起时下火爆的生成式AI,并不是只有ChatGPT。Bard也是一个很优秀的产品,并且刚刚发布的很多有趣的新功能。文末告诉你如何访问Bard。 Google AI在最近的更新中发布了Bard,一个新的语言模型。Bard支持多种语言,包括中文&#xff0…

Hadoop和hive一键启动脚本

#!/bin/bashcd $HADOOP_HOME/sbinsh ./start-all.shcd $HIVE_HOME/binnohup hive --service metastore & 停止hadoop服务 #!/bin/bashcd $HADOOP_HOME/sbinsh ./stop-all.sh 停止hive服务

Stability AI 把绘画门槛打为 0!

本文由 GPT- 4 所创作,配图由 Stable Doodle 生成。 编者按 Stability AI 上新了! 其收购的 Clipdrop 发布了全新的 Stable Doodle 工具,我在使用后最为直观的感受就是 —— 把绘画门槛打下来了。 在 Stable Doodle 之前,使用各…

大型企业数字化信创论坛启幕,金蝶携手500强企业论道数字化变革!

7月14日,“数字中国第二届大型企业数字化信创论坛”在数字化新城成都盛大启幕,中国信通院、金蝶携手来自四川省企业联合会、物产中大集团、浙江省交通投资集团、华彩咨询、四川九洲集团、资阳发展投资集团的大咖、专家论道信创,探索中国企业的…

oc uitableView 展示单组数据

设置模型 #import <Foundation/Foundation.h>interface XMGWine : NSObjectproperty (nonatomic,copy) NSString *name; property (nonatomic,copy) NSString *image; property (nonatomic,copy) NSString *money;(instancetype)wineWithDict:(NSDictionary *)dict; end…

智能会议记录:利用剪映和Claude实现高效会议纪要制作

具体操作步骤可以是: 1、使用录音笔或手机录音将会议过程录制下来。 2、将录音文件上传到pc端&#xff0c;使用剪映程序,利用语音转文本和自然语言处理技术,分析音频&#xff0c;生成文字稿。 3、打开Claude网站。 4、粘贴会议文字。 5、输入提示词&#xff1a; 用中文总结该…

代理模式【静态代理和动态代理实现业务功能扩展】

静态代理 我们在不修改业务的情况下想要给它增加一些功能&#xff0c;这就需要使用代理模式。我们不会在原有业务上直接修改&#xff0c;为了避免修改导致程序不可逆转的破坏。三种角色&#xff1a;抽象角色-接口、真实角色-实现类和代理角色-代理类。真实角色和代理角色继承的…

ARM 架构是什么?

ARM&#xff08;Advanced RISC Machines&#xff09;架构是一种处理器架构&#xff0c;它是一种精简指令集计算机&#xff08;RISC&#xff09;架构。ARM架构最初由ARM Holdings&#xff08;现在是SoftBank Group的子公司&#xff09;开发&#xff0c;并在1980年代末和1990年代…

K8s核心概念 Controller

K8s核心概念 Controller Kubernetes核心概念 Controller一、pod控制器controller1.1 Controller作用及分类1.2 Deployment1.2.1 Replicaset控制器的功能1.2.2 Deployment控制器的功能1.2.3 Deployment用于部署无状态应用1.2.4 创建deployment类型应用1.2.5 访问deployment1.2.6…

SpringCloud集成Sleuth+Zipkin进行链路追踪

关于微服务链路追踪的一些概念&#xff1a;【分布式链路追踪】 文章目录 1、整合Seluth2、日志信息分析3、Zipkin介绍4、Zipkin服务端安装5、搭配Sleuth整合客户端Zipkin6、收集数据7、存储trace数据 1、整合Seluth Spring Cloud Sleuth是一个用于追踪的工具&#xff0c;它可以…

ThinkPHP 多对多关联

用多对多关联的前提 如果模型 A 多对多关联模型 C&#xff0c;必须存在一张中间表 B 记录着双方的主键&#xff0c;因为就是靠着这张中间表 B 记录着模型 A 与模型 C 的关系。 举例&#xff0c;数据表结构如下 // 商品表 goodsgoods_id - integer // 商品主键goods_name - va…

【C#】并行编程实战:使用延迟初始化提高性能

在前面的章节中讨论了 C# 中线程安全并发集合&#xff0c;有助于提高代码性能、降低同步开销。本章将讨论更多有助于提高性能的概念&#xff0c;包括使用自定义实现的内置构造。 毕竟&#xff0c;对于多线程编程来讲&#xff0c;最核心的需求就是为了性能。 延迟初始化 - .NET…

手机怎么编辑pdf?这几款工具可以实现

手机怎么编辑pdf&#xff1f;在如今的数字时代&#xff0c;PDF文档已经成为了一种标准的文件格式。然而&#xff0c;当我们需要编辑这些PDF文档时&#xff0c;我们往往需要使用电脑上的专业软件&#xff0c;这给我们带来了很大的不便。不过&#xff0c;有许多手机应用程序可以让…

AIGC 大模型纷纷部署,企业如何为 AI 数据降本增效

编辑 | 宋慧 出品 | CSDN 云计算 AIGC 从年初开始持续爆火&#xff0c;国内各种大模型纷纷涌现&#xff0c;其中模型参数轻松突破千亿数量级。模型中数据的形态、部署也是多种多样的&#xff0c;庞大数据量背后的管理和成本不容小觑。 混合数据厂商肯睿 Cloudera 今年相继发布…

设计模式的概述

目录 分类 创建型模式 结构型模式 行为型模式 类之间的关系 关联关系 聚合关系 组合关系 依赖关系 继承关系 实现关系 设计原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 一、分类 创建型模式 用于描述“怎样创建对象”&#xff0c;它…

线程池的学习(一)

转载&#xff1a;Java 线程池 线程池的创建方式 方式一&#xff1a;创建单一线程的线程池 newSingleThreadExecutor 特点&#xff1a; 线程池中只包含 1 个线程&#xff0c;存活时间是无限的按照提交顺序执行任务唯一线程繁忙时&#xff0c;新提交的任务会被加入到阻塞队列…