STM32 ADC基础知识讲解

2023-07-18 12:30:16


前言

在正式的学习如何编写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的一些基础知识,大家有必要掌握一下。

更多推荐

Vue系列(二)之 基础语法【上篇】

目录一.插值1.1文本1.2原始HTML1.3属性1.4表达式二.指令2.1v-if/v-else-if/v-else指令2.2v-show指令2.3v-for指令2.4下拉框/复选框2.5动态参数三.过滤器3.1局部过滤器基本应用3.2局部过滤器串行使用3.3局部过滤器传参3.4全局过滤器四.计算属性和监听属性4.1

【Nginx系列】(一)Nginx基础概念

❝有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top❞首发博客地址文章更新计划系列文章地址Nginx的三个主要应用场景静态资源服务通过本地文件系统提供服务静态资源服务是指通过本地文件系统提供静态文件(如HTML、CSS、JavaScript、图片等

【云原生系列】云计算概念与架构设计介绍

1什么是云计算云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算资源共享。2云计算架构介绍在云计算架构中,通常会采用分层的设计思路,将计算资源划分为不同的层次,每个层次

transformer系列1---Attention Is All You Need全文详细翻译

论文链接:AttentionIsAllYouNeed.代码链接:Transformer.Transformer0Abstract摘要1Introduction引言2background背景3ModelArchitecture模型架构3.2Attention注意力3.2.1ScaledDot-ProductAttenti

【Java 基础篇】Java对象反序列化流详解

在Java编程中,对象序列化和反序列化是常见的操作,用于将对象转换为字节流以便于存储或传输,并从字节流中重新构建对象。本文将重点介绍对象反序列化流的用法和相关概念,帮助基础小白理解这一重要的主题。什么是对象反序列化?对象反序列化是将之前序列化的对象字节流还原为对象的过程。这个过程是序列化的逆过程,它可以让我们重新获得原

Vue3路由

文章目录Vue3路由1.载入vue-router库2.实例2.1Vue.js+vue-router实现单页应用2.2router-link创建链接2.3router-view显示与url对应组件2.4`<router-link>`相关属性Vue3路由1.载入vue-router库Vue.js路由需要载入vue-rout

内外统一的边缘原生云基础设施架构——火山引擎边缘云

近日,火山引擎边缘云边缘计算架构师郭少巍在LiveVideoStackCon2023上海站围绕火山引擎边缘云海量分布式节点和上百T带宽,结合边缘计算在云基础设施架构方面带来的挑战,分享了面对海量数据新的应用形态对低时延和分布式架构的需求,边缘计算将成为新一代边缘计算云基础设施以及未来边缘计算发展的未来展望。近十几年众多

浏览量5.54亿,“平替大军”击退“钱包刺客”?丨小红书消费趋势分析

当代年轻人的消费观念,从贷款买大牌的“精致穷”,逐渐演变为人间清醒式地购物...他们爱上麦当劳的“穷鬼套餐”,爱喝瑞辛9.9元畅饮,爱和小学生成为“饭搭子”吃小饭桌,爱买低价打折出售的剩菜盲盒,爱出门吃饭前先查看团购套餐,似乎所有省钱技巧都被他玩得轻车熟路。是大牌不香了吗?还是当代年轻人的消费趋势有了新的变化?本篇内容

《Python趣味工具》——自制emoji(4)计算机二级考试题

前面我们学习了如何制作emoji,相信你也是有很多想法了吧!今天我们就来看看几道计算机二级考试真题。1.绘制套圈使用turtle库的circle()函数和seth()函数绘制套圈。最小的圆圈半径为10像素,不同圆圈之间的半径差是40像素。ps:注意要和题目要求的圆形方向一致哦~可以在绘制前先将方向调整为90度。示例代码

Kubernetes介绍(一)

kubernetes官网:Kubernetes1、Kubernetes是什么Kubernetes也称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,k8s是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes可以实现以下功能:自动化容器的部署和复制

Swing程序设计详解(一)

【今日】“若你决定灿烂,山无遮,海无拦”目录初识Swing一Swing简述二Swing常用窗体2.1JFrame窗体2.2JDialog对话框2.3JOptionPane小型对话框(1)通知框(2)确认框(3)输入框(4)自定义对话框三常用布局管理器3.1绝对布局3.2流布局3.3边界布局3.4网格布局四常用面板4.1

热文推荐