首页 > 其他分享 >STM32 ADC基础知识讲解

STM32 ADC基础知识讲解

时间:2023-10-18 20:05:32浏览次数:28  
标签:顺序 转换 模拟信号 基础知识 STM32 ADC 寄存器 通道

(文章目录)


前言

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

标签:顺序,转换,模拟信号,基础知识,STM32,ADC,寄存器,通道
From: https://blog.51cto.com/u_16153875/7921883

相关文章

  • 基础知识
    绿色框内所有东西都要依靠操作系统来实现。命令接口    并发   ......
  • VMware 虚拟机 Ubuntu 系统没有IP地址 解决:UP BROADCAST MULTICAST 问题【转】
    转自:https://blog.csdn.net/a262624/article/details/95792665几周没使用虚拟机,今天打开的时候发现启动网络就是5分钟,然后还没有ip。百度了下找到了解决办法:  在我的VMware 虚拟机软件里面有许多Ubuntu系统的虚拟机,并且它们都是使用一段时间,就会出现没有IP地址的问题。我一......
  • STM32——GPIO输出
    一、结构二、8种模式三、对推挽输出、开漏输出的理解1、推挽输出:推:将电流推出去    挽:将电流挽回来 上图的前两种情况组合,就是推挽输出模式。情况1时即“推”,情况2时即“挽”。2、开漏输出:漏:漏极啥也没接。情况2与3组合构成开漏模式。(常配一个外接上拉电阻)......
  • 关于STM32 HAL库版本IAP升级跳转一直进入HAL_Delay()函数;只需要在升级 程序中加入如下
    __set_FAULTMASK(1);/*setvectortable/SCB->VTOR=FLASH_BASE|0x1F800;///USERCODEEND1*//*MCUConfiguration--------------------------------------------------------//Resetofallperipherals,InitializestheFlashinterfaceandtheSystick......
  • FPGA, arduino, STM32, RaspBerry 树莓派 简介
    https://www.cnblogs.com/zhenghb31/p/15046496.html 市面上控制器这么多,似乎每一个都很厉害…为什么有的控制器编写起来那么难,功能很少,有的简单易学,功能强大呢?各种控制器又有什么区别呢?经过我的思考,我个人把控制器分为三类!第一类:基于逻辑电路的控制器(FPGA)FPGA(FieldPr......
  • Clion+STM32配置环境
    Clion+STM32配置环境下载安装下载Clion,具体步骤省略https://www.jetbrains.com/clion/download/Clion官方的教程网址如下https://www.jetbrains.com/help/clion/embedded-development.html需要下载的东西有openocd和GNUARM工具链openocd:https://gnutoolchains.com/arm-eab......
  • 图片基础知识
    图片基础知识像素点物理像素点设备像素比几倍图缩略图格式图(webp,jpeg,png,jpg,gif)尺寸大小阴影图片压缩图片分片上传图片分片渲染(几张图片渲染成一张大图)Buffer格式,如何渲染成图片?位图bigBitImage,如何渲染,哪种渲染图片更快?如何缓存位图?......
  • 【STM32基础 CubeMX】PWM输出
    @TOC前言STM32微控制器是一系列功能强大的微控制器,广泛应用于嵌入式系统和电子设备中。其中一个常见的应用是生成PWM信号,用于控制各种设备,如电机、LED灯、声音发生器等。了解如何配置和使用PWM输出对于嵌入式系统开发非常重要。CubeMX是STMicroelectronics提供的一种工具,用于帮助开......
  • 【STM32基础 CubeMX】定时器的使用
    @TOC前言在嵌入式系统开发中,精确地控制时间和时序是至关重要的。STM32微控制器提供了强大的定时器功能,使开发者能够轻松地实现各种时间相关任务。本文将介绍STM32定时器的基础知识和使用方法,帮助初学者了解如何在STM32上利用定时器实现定时任务、生成脉冲信号、进行计时等操作。无......
  • 无涯教程-NumPy - broadcast_to函数
    此功能将数组广播为新维度,它返回原始数组的只读视图,如果新维度不符合NumPy的广播规则,则该函数可能会引发ValueError。注意-此功能自版本1.10.0起可用。该函数采用以下参数。numpy.broadcast_to(array,shape,subok)importnumpyasnpa=np.arange(4).reshape(1,4)prin......