【STM32学习】ADC(一)—— STM32 内置 AD 模块框图

这篇具有很好参考价值的文章主要介绍了【STM32学习】ADC(一)—— STM32 内置 AD 模块框图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现在我们大致知道,ADC 的大致转换流程就是输入模拟信号,经由采样、保持、量化、编码等过程,最终转换成数字信号。下面将通过ADC模块框图了解ADC模块正常运作需要做哪些事。

准备阶段:

  • 配置分频数(控制ADC周期)
  • ADC 的输入范围控制(需要让输入信号在ADC转换范围内)
  • ADC 采样时间
  • ADC 输入方式(规则组 / 注入组)
  • ADC 工作模式(单次/连续、是否扫描)

ADC 转换:开始转换的时间点

ADC 转换完毕:是否使能转换完成的中断(不同输入方式对应的中断不同)

一、什么是 ADC?

1、ADC 的基本概念

ADC(Analogto-Digital Converter)模拟数字转换器,是将模拟信号转换成数字信号的一种外设。我们所熟悉的温度值、电压值其实都是模拟信号,但是单片机只认识高低电平,如果我们希望单片机去处理这些模拟信号,那就需要通过 ADC 将模拟信号转换成数字信号。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

2、ADC 分辨率

我们平时总说“12位AD采样”,这里代表的意思是,当前AD值的取值范围为 0 ~ 2^12-1,即0~4095。如果输入电压是0~3.3V,相当于可以把 3.3 V等分成 4096份;如果是 16 位AD采样,那就相当于可以把3.3V等分成 65536 份。

分辨率强调的是精度,分的份数越多,粒度越细,转换结果也就更精确。

二、ADC 实现框图

下面是 ADC 模块的结构图,为了方便理解,这里大体是分为了七个部分。请从左边按照逆时针的顺序了解。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

① 电压输入范围

为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰,ADC的电源引脚为VDDA,独立的电源地VSSA。

Vref+ 和 Vref- 代表了 ADC 能够转换的电压范围,即ADC所能测量的电压范围就是Vref- ≤ Vin ≤ Vref+。(内部Vref+ 连到了VDDA,Vref-连到了 VSSA)

② 模拟信号采样(采样时间)

ADCx_IN0 ~ 17 是 ADCx 的输入通道,每个通道都可以接一个模拟信号的输入源。在向通道输入模拟信号之前,需要先对模拟信号做 “ 采样保持 ” 操作,这一步所花费的时间便是 “ 采样时间 ”,这也是我们后续程序的一个必要配置项。(采样保持的原因参考文章最后一个模块

ADCx的某个通道要连接到哪个IO引脚,都是事先决定好的,下面是 stm32f4 系列的通道-引脚对应关系。比如 ADC1 的通道0连接到的IO引脚是 PA0。第 16 ~ 18 通道比较特殊,第 16 通道接到了芯片内部的温度传感器,第 17 通道接到了内部参考电压 Vrefint,第 18 通道备份电源引脚 Vbat。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

③ 触发AD转换的方式(软件 / 硬件)

触发AD转换的方式包含软件触发、硬件触发。软件触发则是通过向 ADC-CR2 寄存器的 AD ON 位写1来开启转换;硬件触发可以是定时器(TIM)触发、外部引脚(EXIT)触发。

图中有左右两组触发,这和 AD 的输入方式有关,左边是注入组专用,右边是规则组专用。

④ ADC分频(ADC周期)

时钟分频决定的是ADC周期,这个需要参考时钟树。ADC 的时钟来自于 APB2 总线,将 APB2 总线的时钟再次分频就可以得到 ADC 的时钟频率,分频数可以是 2 / 4 / 6 / 8。 

stm32 adc,# STM32,stm32,学习,嵌入式硬件

从时钟树可以看到,我们可以对 180MHz 进行 1 / 2 / 4 / 8 / 16 分频,分频后的时钟频率就是APB2总线的时钟频率。APB2总线上的不同外设对时钟需求不同,不可能每个外设都使用相同的时钟频率,因此在提供给 ADC 之前还需要再做一次分频。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

⑤ 输入方式

ADC 有两种输入方式,分别是注入组(injected channels)、规则组(regular channels)。相当于给 AD 转换器发送一个转换列表,告诉他要转换哪些通道。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

注入组:

        一次最多可以转换4个通道,转换结果保存到注入组数据寄存器(注入组有4个数据寄存器,每个寄存器长度为16bit)

规则组:

        一次最多可以转换 16 个通道,转换结果保存到规则组数据寄存器(规则组只有1个数据寄存器,每个寄存器长度为16bit)。规则组最好搭配 DMA 使用,规则组只有一个寄存器,一旦上层没有及时取走寄存器内的转换结果,寄存器内的结果便会被下一次的结果覆盖

stm32 adc,# STM32,stm32,学习,嵌入式硬件

​⑥ 工作方式

ADC 的工作方式主要体现在量化编码阶段,我们可能就得考虑两个问题:

  • 开始转换以后,虽然会输入多个通道,但每次是转换一个还是一组?(非扫描 / 扫描)
  • 转换完毕以后,是就此停下,还是继续转换?(单次 / 连续)

假设输入方式是注入组。

非扫描 / 扫描模式

非扫描:无论输入多少,只转换第一个。比如下面输入了三个通道,但最终只会转换第 0 个位置,即通道0

扫描:输入多少,转换多少。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

单次 / 连续转换

单次转换:转换一次后就停下来,下一次要重新启动才会开始转换

连续转换:转换一次后,继续开始下一次转换

stm32 adc,# STM32,stm32,学习,嵌入式硬件

⑦ 标志位、中断使能

当转换完成时,对应的标志位会自动置1,我们可以启动中断使能来通知。

  • OVR:使用DMA搬移转换结果完毕
  • EOC:注入组 / 规则组转换完毕
  • JEOC:注入组转换完毕
  • AWD:触发看门狗事件(需要设置水位线,当高于或者低于某个水位线时,就会触发事件)

stm32 adc,# STM32,stm32,学习,嵌入式硬件

三、为什么需要 “ 采样保持 ” ?

 模拟信号是在源源不断输入的,也就是在变化的,我们希望在转换模拟信号的时候,模拟信号是固定不变的。因此就需要用到采样保持(实现这一目的就是采样保持电路)

        采样阶段,开关 S 闭合,电容 CH 充电,输出电压 Vo 随模拟信号变化

stm32 adc,# STM32,stm32,学习,嵌入式硬件

         保持阶段,开关 S 断开,电容 CH 放电,输出电压 Vo 保持在模拟开关断开瞬间的输入信号值。

stm32 adc,# STM32,stm32,学习,嵌入式硬件

         从开关 S 闭合到开关 S 断开的时间便是所谓的 “ 采样时间 ”。采样时间过长,会影响到整体AD转换时间;采样时间过短,容易导致电容充电时间不够,采集到的电压值低于实际电压值。

四、ADC 转换时间计算

采样完毕后,相当于做好了准备数据的工作,接下来要经过 “ 量化编码 ” 阶段来将模拟信号转换成数字信号(二进制编码)。

由此可知,转换时间 = 采样时间 + 量化编码时间。其中量化编码一般是12.5 个ADC周期。因此,

转换时间 = 采样时间 + 12.5个ADC周期

ADC时钟频率最大为14MHz,假设采样时间为 1.5 个周期,那么

转换时间 = 1.5 + 12.5 = 14 个ADC周期 = 1us

参考文章:

STM32学习笔记—ADC采集数据常见问题 - 知乎 (zhihu.com)

详解STM32中的ADC-电子发烧友网 (elecfans.com)

STM32—ADC详解入门(ADC读取烟雾传感器的值)_stm32 adc_wlkq~的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-743957.html

到了这里,关于【STM32学习】ADC(一)—— STM32 内置 AD 模块框图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

    上一篇:[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 学C语言时,使用的printf()函数,就是通过串口打印出来的。 跟外部器件通信,比如GPS模块、蓝牙模块、wifi模块; 两个开发板之间通信,制定私有协议。 PC电脑通信,使用上位机显示数据或控制下位机。 操作:打

    2024年01月22日
    浏览(71)
  • STM32模拟SPI协议获取24位模数转换(24bit ADC)芯片AD7791电压采样数据

    STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。AD7791是亚德诺(ADI)半导体一款用于低功耗、24位Σ-Δ型模数转换器(ADC) ,适合低频测量应用,提供50 Hz/60 Hz同步抑制。 这里介绍基于AD7791的24位ADC采样实现。 AD7791的管脚

    2024年02月09日
    浏览(61)
  • STM32 ADC使用学习笔记

    个人认为,ADC是stm32中最核心的功能之一,因为stm32所处理的信号是数字信号,而现实生活中所接触的大部分是模拟信号,因此需要对模拟信号进行采样使其变成数字信号后再对其进行处理,也是大部分电子信息相关专业本科所学的信号处理方法得以运用的关键步骤之一,由于

    2024年02月05日
    浏览(36)
  • 【STM32学习】模数转换器——ADC

    [STM32固件库(标准外设库)入门学习 第七章 ADC数模转换(一) 刘凯:STM32F103(一):ADC 通过上述的两个链接以及stm32的参考手册,应该可以把ADC理解的差不多了,接下来说一下自己对某些内容的理解。 STM32 ADC转换速度与精度 对于AD转换所需要的时间,我们经常看到:Tconv = S

    2024年02月05日
    浏览(46)
  • STM32F103学习(ADC)

    1、定义 ADC(Analog-to-Digital Converter  模数转换器 )。是指将连续变化的模拟信号转换为离散的数字信号的器件。 2、原理 stm32上的ADC外设采用逐次比较的方式。 逐次比较型ADC工作原理可以类比天平称物体。比如我们假定要称一个21g的物体,我们有16g、8g、4g、2g、1g的砝码。一开

    2024年02月10日
    浏览(46)
  • stm32——hal库学习笔记(ADC)

    ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器 优点:转换速度快 缺点:成本高、功耗高、分辨率低 优点:结构简单、低功耗 缺点:转换速度较慢 特点: 分辨率和采样速度相互矛盾, 分辨率越高,采样速率越低 ①参考电压/模拟部分电压 ②输入通道 ③转换序列 ④触

    2024年02月22日
    浏览(49)
  • stm32学习笔记-7ADC模数转换器

    注:笔记主要参考B站 江科大自化协 教学视频“STM32入门教程-2023持续更新中”。 注:工程及代码文件放在了本人的Github仓库。 ADC(Analog-Digital Converter)模拟-数字转换器 可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立 模拟电路到数字电路的桥梁 。当然

    2024年02月13日
    浏览(48)
  • STM32CubeMX学习六 之ADC配置

    记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。 如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从ADC配置讲起。 编译环境:KEIL 代码生成:STM32CubeMX 库:HAL MCU:STM32F072 假设你的cubeMX工程已经建好,这里我们开始配置ADC引脚(PA1设置为

    2023年04月10日
    浏览(37)
  • 备赛电赛学习STM32篇(九):ADC

    目录 一、ADC的简介 二、逐次逼近型ADC 2.1、逐次逼近型ADC框图  2.2、STM32 ADC内部介绍 2.2.1、STM32ADC的通道以及存储数据的寄存器  2.2.2、触发方式 2.2.3、STM32ADC时钟部分 2.2.4  三、ADC基本结构框图 四、另外的细节问题 4.1、输入通道 4.2、转换模式 4.2.1、单次转换、非扫描模式

    2024年02月05日
    浏览(39)
  • stm32f030 学习笔记 (1)adc单/双通道采集

     1.实现单通道         如 pa0 pa1 pa2 温度传感器         1.实现单通道步骤                 1):配置RCC   GPIOA,UART1,ADC1使能                         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);                         RCC_APB2PeriphClockCmd(RCC_APB2Periph_A

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包