嵌入式系统(八):ADC原理及应用

您所在的位置:网站首页 芯片是用来干什么的 嵌入式系统(八):ADC原理及应用

嵌入式系统(八):ADC原理及应用

2024-07-13 06:43| 来源: 网络整理| 查看: 265

文章目录 一、ADC概述1:概述2:STM32的ADC功能及结构(1)具体功能(2)硬件结构(3)ADC的相关引脚(4)STM32的ADC工作模式 二、ADC转化模式1:单次转化模式2:连续转换模式3:扫描模式4:间断模式 三:其他重要操作1:校准2:数据对齐3:可编程的通道采样时间4:外部触发转换5:DMA请求6:温度传感器 四、STM32的ADC库函数1:`ADC_Init`函数2:`ADC_StartCalibration`校准函数3:其他函数

一、ADC概述 1:概述 模数(A/D)转换: 将模拟量转换为数字量的过程模数转换器 完成这一转换的器件称为模数转换器(简称ADC)数模(D/A)转换 将数字量转化为模拟量的过程数模转换器 完成这一转换的器件称为数模转换器(简称DAC)

A/D转换中通常要经过以下两步:

采样保持:A/D转换需要时间,一般在us级别量化编码:将采样后得到的样点幅值转换为数字量(是模数转换的核心。以一定的量化单位,将信号的连续取值近似为有限的离散值的过程。) 常见技术: 计数式、双积分转换 逐次逼近式转换 并联式转换采样保持只是保证信号一段时间内不变,量化编码才是转化中最重要的部分。 STM32在片上集成的ADC外设非常强大,12位ADC是一种逐次逼近型模数转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的转换结果是12位,最后存储在16位的寄存器中:(这些都是需要自己初始化的) 左对齐:12位的最高位是寄存器的最高位,低四位没有数据; 右对齐:12位的最低位是寄存器的最低位,高四位没数据。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。 2:STM32的ADC功能及结构 STM32F103RB系列产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,可以实现单次或扫描转换。ADC的分辨率为12位;供电为2.4~3.6V;输入范围为0~3.6V(VREF-≤VIN≤VREF+);转换时间是可编程的,采样一次至少要用14个ADC时钟周期,而ADC的时钟频率最高为14MHz,也就是说它的采样时间最短为1us,足以胜任中、低频数字示波器的采样工作。 (1)具体功能

1)规则转换和注入转换均有外部触发选型;

2)在规则通道转换期间,可以产生DMA(直接存储器存取)请求;(由于转化后的12位数据一般存储在ADC的寄存器中,转化后可以直接用DMA直接存储到存储器中),注入转换不允许产生DMA请求。

3)自校准,在每次ADC开始转换前进行一次自校准;

4)通道采样间隔时间:可编程;

5)带内嵌数据一致性的数据对齐;(12位存储到16位的寄存器,我们需要设置左对齐还是右对齐)

6)可设置成单次、连续、扫描、间断模式;

7)双ADC模式,带2个ADC设备ADC1和ADC2;

8)规则转换结束、注入转换结束和发生模拟看门狗事件(输入电压超出阈值)时产生中断。

(2)硬件结构 1)模拟信号通道。 共有18个通道(可以看作输入的引脚,可以检测的源),可测16个外部信号源和2个内部信号源。其中16个外部通道对应ADCx_IN0到ADCx_IN15;2个内部通道连接到温度传感器和内部参考电压( V R E F I N T = 1.2 V V_{REFINT}=1.2V VREFINT​=1.2V)。2)A/D转换器。转换原理为逐次逼近型A/D转换,分为注入通道和规则通道。每个通道都有相应的触发电路,注入通道的触发电路为注入组,规则通道的触发电路为规则组;每个通道也有相应的转换结果寄存器,分别称为规则通道数据寄存器和注入通道数据寄存器。3)模拟看门狗部分。用于监控高低电压阈值,可作用于一个、多个或全部转换通道,当检测到的电压低于或高于设定电压阈值时,可以产生中断。4)中断电路。有3种情况可以产生中断,即规则组转换结束、注入组转换结束和模拟看门狗事件。ADC1和ADC2的中断映射在同一个中断向量上。 在这里插入图片描述 (3)ADC的相关引脚

在这里插入图片描述 V D D A V_{DDA} VDDA​和 V S S A V_{SSA} VSSA​应该分别连接到VDD和VSS,传感器信号通过任意一路通道进入ADC并被转换成数字量,该数字量会被存入一个16位的数据寄存器中,在DMA使能的情况下,STM32的存储器可以直接读取转换后的数据。ADC必须在时钟ADCCLK的控制下才能进行A/D转换,ADCCLK的值是由时钟控制器控制,与高级外设总线APB2同步。时钟控制器为ADC时钟提供了一个专用的可编程预分频器,默认的分频值为2。

(4)STM32的ADC工作模式

STM32的每个ADC模块可以通过内部的模拟多路开关切换到不同的输入通道并进行转换。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3->通道8->通道2->通道2->通道0->通道2->通道2->通道15。(所谓的通道就是上述的模拟输入信号)

举例:比如要处理环境数据,通道3处理噪声,通道8处理大气污染。。。各司其职。

规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0](4位刚好表示16个转换总数)位中。注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。

所谓规则通道就是一个常规的程序从前往后进行执行,在规则通道执行的过程中会存在注入通道,类似于一个中断,也就是说我们先处理注入通道,处理完之后再回到规则通道这里。(注入转换在特殊情况下才会使用,正常情况下我们只需要不断的检测外部数据进行转化,但是有可能我们需要其他不频繁的外部数据,因此我们可能会设置一个按钮,在某些情况下按下按钮使得系统转向采集其他类型的数据,此时称之为注入,这个任务完成之后又回到正常的外部数据采集与转换-也就是又回到了规则通道) 在这里插入图片描述

二、ADC转化模式 1:单次转化模式

单次转换模式下,ADC只执行一次转换。该模式有两种启动方式

既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。然后ADC停止。

一旦选择通道的转换完成:

如果一个规则通道被转换,转换数据被储存在16位ADC_DR寄存器中,EOC(转换结束)标志被设置,如果设置了EOCIE,则产生中断。如果一个注入通道被转换,转换数据被储存在16位的ADC_DRJ1寄存器中,JEOC(注入转换结束)标志被设置,如果设置了JEOCIE位,则产生中断。ADC停止。在这里插入图片描述 2:连续转换模式

在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。注意这里,单次转换CONT(continue)位是0,这里是1 每个转换后:

如果一个规则通道被转换,转换数据被储存在16位的ADC_DR寄存器中,EOC(转换结束)标志被设置,如果设置了EOCIE,则产生中断。如果一个注入通道被转换,转换数据被储存在16位的ADC_DRJ1寄存器中,JEOC(注入转换结束)标志被设置,如果设置了JEOCIE位,则产生中断。 在这里插入图片描述

注意无论是单次还是连续转换,都是对单个通道进行的转换

3:扫描模式

此模式用来扫描一组模拟通道。扫描模式可通过设置ADC_CR1寄存器的SCAN位(进行写1操作)来选择。

一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道(我们预设的通道都是保存在上述两个寄存器上)。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换(也就是不会到结束位置,通道n连一条边到通道1)。如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。而注入组通道转换的数据总是存储在ADC_JDRx寄存器中。(注入组不能DMA,谨记)

当然扫描模式的通道顺序也是可以设置的。 在这里插入图片描述

4:间断模式

把长序列分割成短序列,依次进行转换。 在这里插入图片描述

规 则 组 规则组 规则组 此模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3