当前位置: 首页 > news >正文

ADC转换原理与应用详解

目录

1.ADC介绍

并联比较型 AD(速度最快)

逐次逼近型 adc

ADC的转换模式

ADC的架构

1.ADC输入通道

2.注入通道,规则通道

3.ADC时钟

4.外部触发转换

5.中断

F1与F4区别-ADC

Cubemx的相关配置和配置项说明

ADC相关函数


1.ADC介绍

ADC 基本原理:ADC(Analog - to - Digital Converter,模拟数字转换器)的作用是将模拟信号转换为数字信号。它通过采样、量化和编码三个过程,将连续变化的模拟电压信号转换为离散的数字量 。

并联比较型 AD(速度最快)

vin 是参考电压,接到比较器的+端,- 端接到用来分压的电阻。假设总电压是 8V,8 个电阻可以将其分为 8 等份,精度是 1V;vin 大于- 端的电压比较器输出 1,反之输出 0 ;

比较器的输出端连接锁存器的输入端 D,这个锁存器可以存储一位数据;C 脚的控制引脚,C 脚输入 1 时,锁存器的输入端输入什么,锁存器的输出端就输出什么;如果 C 脚是 0,则无论输入端输入什么,输出端依然保持上一次的数据;

锁存器连接编码器电路,将 8 位转换为 3 位

12位模拟数字转换器

就是ADC的数字存储是12位的 也就是说转换器通过采集转换所得到的最大值是4095 “111111111111”=4095 二进制的12位可表示0-4095个数, 对应着所测电压的实际值,转换的电压范围是0v-3.3v的话,转换器就会把0v-3.3v平均分成4096份。设转换器所得到的值为x,所求电压值为y。

注:有的核心板只有一个ADC(如f411ceu6),具体看具体芯片手册

16个外部通道:芯片上有16个引脚是可以接到模拟电压上进行电压值检测的

2个内部信号源 : 一个是内部温度传感器,一个是内部参考电压

一共支持23个引脚支持ADC,包括21个外部和2个内部信号源

逐次逼近型 adc

原理:二分法

SAR 逐次逼寄存器,执行二分算法的过程

S/H 保持住采集到的 VIN 电压

2^4 次方作为第一次比较,然后是 2^3……到 2^0

ADC的转换模式

a. 单次转换模式:ADC只执行一次转换;

b.连续转换模式:转换结束之后马上开始新的转换;

c.扫描模式:ADC扫描被规则通道和注入通道选中的所有通道,在每个组的每个通道上执行单次转换。在每个转换结束时,这一组的下一个通道被自动转换。如果设置了CONT位(开启了连续 转换模式),转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。

d.间断模式:触发一次,转换一个通道,再触发,再转换。在所选转换通道循环,由触发信号启动新一轮的转换,直到转换完成为止。

扫描模式简单的说是一次对所有所选中的通道进行转换,比如开了ch0,ch1,ch4,ch5。  ch0转换完以后就会自动转换通道1,4,5直到转换完这个过程不能被打断。如果开启了连续转换模式,则会在转换完ch5之后开始新一轮的转换。

这就引入了间断模式,可以说是对扫描模式的一种补充。它可以把0,1,4,5这四个通道进行分组。可以分成0,1一组,4,5一组。也可以每个通道单独配置为一组。这样每一组转换之前都需要先触发一次。

ADC单通道:

只进行一次ADC转换:配置为“单次转换模式”,扫描模式关闭。ADC通道转换一次后,就停止转换。等待再次使能后才会重新转换

进行连续ADC转换:配置为“连续转换模式”,扫描模式关闭。ADC通道转换一次后,接着进行下一次转换,不断连续。

ADC多通道:

只进行一次ADC转换:配置为“单次转换模式”,扫描模式使能。ADC的多个通道,按照配置的顺序依次转换一次后,就停止转换。等待再次使能后才会重新转换

进行连续ADC转换:配置为“连续转换模式”,扫描模式使能。ADC的多个通道,按照配置的顺序依次转换一次后,接着进行下一次转换,不断连续。

也就是:多通道必须使能扫描模式

ADC的架构

(这是F411的ADC框图)

Vdda和Vssa应该分别连接到Vdd和Vss

1.ADC输入通道

从ADCx_INT0-ADCx_INT15 对应三个ADC的16个外部通道,进行模拟信号转换 此外,还有两个内部通道:温度检测或者内部电压检测

选择对应通道之后,便会选择对应GPIO引脚,相关的引脚定义和描述可在开发板的数据手册里找

2.注入通道,规则通道

我们看到,在选择了ADC的相关通道引脚之后,在模拟至数字转换器中有两个通道,注入通道,规则通道,规则通道至多16个,注入通道至多4个

规则通道:

规则通道相当于你正常运行的程序,看它的名字就可以知道,很规矩,就是正常执行程序

注入通道:

注入通道可以打断规则通道,听它的名字就知道不安分,如果在规则通道转换过程中,有注入通道进行转换,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程

3.ADC时钟

图中的ADC预分频器的ADCCLK是ADC模块的时钟来源。通常,由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。RCC控制器为ADC时钟提供一个专用的可编程预分频器。 分频因子由RCC_CFGR的ADCPRE[1:0]配置,可配置2/4/6/8分频

STM32的ADC最大的转换速率为1MHz,也就是说最快转换时间为1us,为了保证ADC转换结果的准确性,ADC的时钟最好不超过14M。

T = 采样时间 + 12.5个周期,其中1周期为1/ADCCLK

例如,当 ADCCLK=14Mhz 的时候,并设置 1.5 个周期的采样时间,则得到: Tcovn=1.5+12.5=14 个周期=1us。

4.外部触发转换

ADC 转换可以由ADC 控制寄存器2: ADC_CR2 的ADON 这个位来控制,写1 的时候开始转换,写0 的时候停止转换

当然,除了ADC_CR2寄存器的ADON位控制转换的开始与停止,还可以支持外部事件触发转换(比如定时器捕捉、EXTI线)

包括内部定时器触发和外部IO触发。具体的触发源由ADC_CR2的EXTSEL[2:0]位(规则通道触发源 )和 JEXTSEL[2:0]位(注入通道触发源)控制。

同时ADC3的触发源与ADC1/2的触发源有所不同,上图已经给出,

具体查看第五部分框图即可理解。

5.中断

中断触发条件有三个,规则通道转换结束,注入通道转换结束,或者模拟看门狗状态位被设置时都能产生中断,

转换结束中断就是正常的ADC完成一次转换,进入中断,这个很好理解;

模拟看门狗中断:

当被ADC转换的模拟电压值低于低阈值或高于高阈值时,便会产生中断。阈值的高低值由ADC_LTR和ADC_HTR配置

模拟看门狗,听他的名字就知道,在ADC的应用中是为了防止读取到的电压值超量程或者低于量程。

DMA

同时ADC还支持DMA触发,规则和注入通道转换结束后会产生DMA请求,用于将转换好的数据传输到内存。

注意,只有ADC1和ADC3可以产生DMA请求,一般我们在使用ADC 的时候都会开启DMA 传输。

F1与F4区别-ADC

F4的ADC支持12位,10位,8位和6位精度,F1只支持12位

F1和F4都具有3个ADC,F1可提供21个输入通道,F4可以提供24个输入通道。

F1的ADC最大采样频率为1Msps,2路交替采样可到2Msps(F1不支持3路交替采样)。F4的ADC最

大采样频率为2.4Msps,3路交替采样可到7.2Msps。

Cubemx的相关配置和配置项说明

下面到了CubeMax的创建时间

H7支持16 14 12位等,最高是16位

配置ADC

设置ADC引脚

因为只有设置了ADC引脚,才能够设置ADC的时钟分频

ADCs_Common_Settings          ADC模式设置

Mode     ADC_Mode_Independent

这里设置为独立模式

独立模式模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,应该设成独立模式,多个ADC同时使用时会有其他模式,如双重ADC同步模式,两个ADC同时采集一个或多个通道,可以提高采样率

Data Alignment (数据对齐方式): 右对齐/左对齐

Scan Conversion Mode( 扫描模式 ) :   DISABLE

如果只是用了一个通道的话,DISABLE就可以了(也只能DISABLE),如果使用了多个通道的话,会自动设置为ENABLE。 就是是否开启扫描模式

Continuous Conversion Mode(连续转换模式)    ENABLE

设置为ENABLE,即连续转换。如果设置为DISABLE,则是单次转换。两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以进行转换

Discontinuous Conversion Mode(间断模式)    DISABLE

因为我们只用到了1个ADC,所以这个直接不使能即可

规则通道设置

Enable Regular Conversions (启用常规转换模式)    ENABLE

使能 否则无法进行下方配置

Number OF Conversion(转换通道数)    1

用到几个通道就设置为几

多个通道自动使能扫描模式

Regular Conversion launched by software 规则的软件触发 调用函数触发即可

Timer X Capture Compare X event 外部引脚触发,

Timer X Trigger Out event 定时器通道输出触发 需要设置相应的定时器设置

这个具体在上方ADC框图的5部分有讲解

Rank          转换顺序

这个只修改通道采样时间即可 默认为1.5个周期

ADC相关函数

开启ADC 3种模式(轮询模式 中断模式DMA模式)

  • HAL_ADC_Start(&hadcx); //轮询模式开启ADC

  • HAL_ADC_Start_IT(&hadcx); //中断轮询模式开启ADC

  • HAL_ADC_Start_DMA(&hadcx); //DMA模式开启ADC

关闭ADC 3种模式(轮询模式 中断模式DMA模式)

  • HAL_ADC_Stop()

  • HAL_ADC_Stop_IT()

  • HAL_ADC_Stop_DMA()

ADC校准函数:

  • HAL_ADCEx_Calibration_Start(&hadcx);

F4系列不支持

读取ADC转换值

  • HAL_ADC_GetValue()

等待转换结束函数

  • HAL_ADC_PollForConversion(&hadc1, 50);

第一个参数是对应的ADC句柄,第二个参数为最大等待时间

ADC中断回调函数

  • HAL_ADC_ConvCpltCallback()

转换完成后回调DMA模式下DMA传输完成后调用


文章转载自:

http://o0bA8zVb.tqrxm.cn
http://LMR6Bcyl.tqrxm.cn
http://P6p5jXaE.tqrxm.cn
http://9bfpK1EL.tqrxm.cn
http://0KWGwqFx.tqrxm.cn
http://qyHhkkJY.tqrxm.cn
http://N14wSSvT.tqrxm.cn
http://L4MoH3iQ.tqrxm.cn
http://lWIlI14X.tqrxm.cn
http://v4iWV7DU.tqrxm.cn
http://KoW6kH1T.tqrxm.cn
http://2Eg2wL3o.tqrxm.cn
http://RKsCzIjn.tqrxm.cn
http://F5b96nO9.tqrxm.cn
http://eBCh6gAu.tqrxm.cn
http://MpYJJTnn.tqrxm.cn
http://B8CVrDqi.tqrxm.cn
http://YEjK9DPK.tqrxm.cn
http://FLf0T71I.tqrxm.cn
http://i3saNnp7.tqrxm.cn
http://av7lLUEb.tqrxm.cn
http://hXpVJzfc.tqrxm.cn
http://fLBEmOCN.tqrxm.cn
http://gIvFy82k.tqrxm.cn
http://vqonwQMT.tqrxm.cn
http://YM51wlrh.tqrxm.cn
http://0iAvzfIP.tqrxm.cn
http://fEPBqj1K.tqrxm.cn
http://bUCDuOL3.tqrxm.cn
http://cUlEJ8fR.tqrxm.cn
http://www.dtcms.com/a/385031.html

相关文章:

  • 第五章 搭建ZYNQ视频图像处理系统——软件设计
  • Chapter6—原型模式
  • Java字符串操作:从入门到精通
  • 如何科学评估CMS系统性能优化效果?
  • 批量更新和批量插入,内含jdbc工具类
  • 3D地球可视化教程 - 第2篇:夜晚纹理与着色器入门
  • Ajax笔记2
  • DDoS高防IP是什么? DDoS攻击会暴露IP吗?
  • Java 设计模式——原则:从理论约束到项目落地指南
  • 从零开始打造个性化浏览器导航扩展:极简高级风格设计
  • 软件包安装
  • QARM:Quantitative Alignment Multi-Modal Recommendation at Kuaishou
  • 通达信抓波段指标(主图)
  • Django基础环境入门
  • Java学习笔记2——简单语法
  • LLM-LLM大语言模型快速认识
  • Winogender:衡量NLP模型性别偏见的基准数据集
  • Oracle UNDO表空间使用率过高解决方案
  • Qt 中 OPC UA 通讯实战
  • 生产制造数智化
  • ensp配置学习笔记 比赛版 vlan 静态路由 ospf bgp dhcp
  • java-代码随想录第33天|62.不同路径、63.不同路径II
  • 突破限制:FileCodeBox远程文件分享新体验
  • 对讲机模块 TDD 噪音:原理、快速止噪解决方案
  • 知识点11:总线驱动的多Agent调度
  • 使用 Docker 搭建私有 PyPI 镜像仓库:支持多平台二进制包同步
  • HarmonyOS实现快递APP自动识别地址(国际版)
  • IPsec实验笔记
  • 工业IOT平台助力水泥集团实现数字化转型
  • 【CSS】图片自适应等比例缩放