ADC详解

一、ADC  简介

        ADC 即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。
        STM32F4xx 系列芯片拥有 3 个 ADC,这些 ADC 可以独立使用,其中 ADC1 和 ADC2 还可以组成双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。ADC1 有 16 个外部通道和 3 个内部通道,而 ADC2和 ADC3 只有有 16 个外部通道。ADC1 的外部通道是通道 17、通道 18 和通道 19,分别连接到内部温度传感器、内部Vrefint和Vbat。 ADC 中的各个通道的A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以以左对齐或者右对齐存储在16 位数据寄存器中。ADC 具有模拟看门狗的特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
STM32F407 的 ADC 主要特性我们可以总结为以下几条:
        1、可配置 12 位、10 位、8 位或 6 位分辨率;
        2、转换结束、注入转换结束和发生模拟看门狗事件时产生中断
        3、单次和连续转换模式
        4、自校准
        5、带内嵌数据一致性的数据对齐
        6、采样间隔可以按通道分别编程
        7、规则转换和注入转换均有外部触发选项
        8、间断模式
        9、双重模式(带 2 个或以上 ADC 的器件)
        10、ADC 转换时间:最大转换速率为 2.4MHz,转换时间为 0.41us
        11、ADC 供电要求:2.4V 到 3.6V
        12、ADC 输入范围:V REF – ≤V IN ≤V REF+
        13、规则通道转换期间有 DMA 请求产生

二、ADC 的配置流程

(1)输入 电压

将需要采样获取电压的一端  连接到   指定MCU的引脚  

(2)输入通道

(3)转换顺序

        当任意 ADCx 多个通道以任意顺序进行一系列转换就诞生了成组转换,这里就有两种成组转换类型:规则组和注入组。规则组允许最多 16 个输入通道进行转换,而注入组允许最多 4 个输入通道进行转换

规则组(规则通道)
        规则组,按字面理解,“规则”就是按照一定的顺序,相当于正常运行的程序
注入组(注入通道)
        注入组,按字面理解,“注入”就是打破原来的状态,相当于中断。当程序执行的时候,中
断是可以打断程序的执行。同这个类似,注入组转换可以打断规则组的转换。假如在规则组转
换过程中,注入组启动,那么注入组被转换完成之后,规则组才得以继续转换

通过设置寄存器里面不同的值,来配置不同通道的转换顺序以及转换的总通道数量 

(4)触发源

        ADC 的触发转换有两种方法:分别是通过软件或外部事件(也就是硬件)触发转换。

        软件触发转换的方法。方法是:通过写 ADC_CR2 寄存器的 ADON 这个位来控制,写 1 就开始转换,写 0 就停止转换,这个控制 ADC 转换的方式非常简单。
        外部事件触发转换的方法,有定时器和输入引脚触发等等

(5)转换时间

T CONV  = 采样时间 + 12 个周期

 

(6)数据寄存器

ADC 转换完成后的数据输出寄存器。

(7)中断

规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。

三、ADC其他解释

1、模数转换,即Analog-to-Digital Converter,常称ADC,是指将连续变量的模拟信号转换为离散的数字信号的器件

2、模数转换ADC是怎么实现的呢? 简单来说需要采样、保持、量化和编码。我们首先需要对这个信号进行采样,每隔一段时间记录一下信号当时的电压值。采集到的数值会经过量化,转换成相应的数字信号值,最后再通过某种编码表示出来,比如补码、格雷码等等。

3、ADC转换速率:ADC每秒钟将模拟量转换成数字量的操作次数。它反映了ADC的转换速度有多快,即从输入端获取到模拟信号到输出端得到数字化结果所需的时间。常见的单位为每秒转换次数(samples per second或samples per second,简写为sps)。

4、ADC采样率:ADC每秒钟对模拟信号进行采样的次数。采样率决定了对模拟信号进行离散采样的频率,也是数字化过程中模拟信号在时间上的离散化程度。采样率通常以每秒采样次数(samples per second或samples per second,简写为sps)表示。总结来说,ADC转换速率是指ADC完成一次完整的模拟转数字转换所需的时间,而采样率是指ADC在单位时间内对模拟信号进行采样的频率。

5、通道:Arduino UNO的ATmega328有一个8通道10位ADC。术语“8通道”意味着ATmega328微控制器上有8个引脚可以读取模拟电压,每个引脚可以读取10位分辨率的电压。并非微控制器上的每个引脚都可以读取模拟电压,这因不同型号的微控制器而异。

6、分辨率:分辨率被定义为输入信号值的最小变化,这个最小数值变化会改变ADC数字输出值的一个码值。在ADC有同样输入范围的情况下,分辨率越高,一个码值所代表的最小变化就越小。如果我们的 ADC 范围是从 0V 到 5V,并且我们有一个 10 位 ADC,这意味着我们的输入电压 0-5 伏将被分成 1024 级离散模拟值(0000000000—1111111111,2^10 = 1024)。1024 是 10 位 ADC 的分辨率,类似地,8 位 ADC 的分辨率为 216 (2^8 ),16 位 ADC 的分辨率为 65536 (2^16 )。实际输入电压为 0V,则 MCU 的 ADC 会将其读取为 0,如果为 5V,则 MCU 将读取为 1024,如果是2.5V,则 MCU 将读取为 512。

7、ADC 的参考电压: ADC 转换过程中,通过将其与已知电压进行比较来找到未知电压的值,这个已知电压,称为参考电压。注意:ADC量程与基准电压值的关系是典型ADC的量程恰好是基准电压值的两倍,并且ADC测量误差与基准电压误差成正比

8、ADC的吞吐率并不等同于转换速率。吞吐率指的是ADC在单位时间内能够完成的转换数量,通常以每秒转换次数(SPS)来表示。而转换速率指的是ADC完成一个单次转换所需的时间

9、ADC量程和分辨率C输入和GPIO输入具有相同的量程和分辨率。ADBMS1818内部的ADC量程约为–0.82 V至+5.73V。负读数四舍五入为0 V。数据格式为16位无符号整数,LSB表示100μV。因此,读数0x80E8(十进制33,000)表示测量值为3.3 V。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值