stm32专题二十四:ADC简介

ADC简介:

ADC  :Analog to Digital,模拟数字转换器

三个独立的ADC 1 / 2 / 3;
分辨率为12位;
每个ADC具有18个通道,其中外部通道16个;
ADC结构框图,主要分成7个部分:

       电压输入范围、输入通道、转换顺序、触发源、转换时间、数据寄存器、中断。

(1)输入电压范围:

       ADC 输入范围为:VREF- ≤ VIN ≤ VREF+。由VREF-、VREF+ 、VDDA 、VSSA、这四个外部引脚决定。
在设计原理图的时候一般把VSSA 和VREF-接地,把VREF+和VDDA 接3V3,得到ADC 的输入电压范围为:0~3.3V。

       如输入电压超过3.3v,如希望测量的电压范围是 -10v ~ 10v,怎么做?

       图中电路的输出:vo = (vi + 10) / 6,可以实现 -10v ~ 10v范围的电压测量。

(2)输入通道 GPIO

       确定好ADC 输入电压之后,那么电压怎么输入到ADC?这里我们引入通道的概念,STM32 的ADC 多达18 个通道,其中外部的16 个通道就是框图中的ADCx_IN0、ADCx_IN1...ADCx_IN5。这16 个通道对应着不同的IO 口,具体是哪一个IO 口可以从手册查询到。其中ADC1/2/3 还有内部通道:ADC1 的通道16 连接到了芯片内部的温度传感器,Vrefint 连接到了通道17。

引脚分配:

输入通道分类:规则通道和注入通道。

       外部的16 个通道在转换的时候又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4 路。

规则通道
       规则通道:顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道。

注入通道
       注入,可以理解为插入,插队的意思,是一种不安分的通道。它是一种在规则通道转换的时候强行插入要转换的一种。如果在规则通道转换过程中,有注入通道插队,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程。这点跟中断程序很像,都是不安分的主。所以,注入通道只有在规则通道存在时才会出现。

(3)通道转换顺序

规则组最多可以有16个通道,转换顺序也可以随意选定,由ADC_SQRx寄存器来选择。

同理,注入组最多4个通道,顺序也可以随意选择,由ADC_JSQR寄存器来配置。注入通道,还有一个切换顺序的问题。比如,当只需要一个注入通道,则JL = 0,转换顺序(4 - JL) = 4,此时该通道编号要设置在JSQ4中;当需要两个注入通道呢,JL = 1,转换顺序(4 - JL)= 3,此时要转换的两个通道顺序为JSQ3、JSQ4。

(4)触发源

对于开启ADC转换,有两种方法:

可以通过设置ADON开启;

通过其他触发条件;

 首先来看通过设置ADON来开启ADC转换:

ADON位功能描述:

ADC转换时序图:

ADON只能开启规则通道的单次或连续转换,参见中文参考手册中的描述:

通过触发条件来进行触发:

1 软件触发:

2 外部事件触发:

首先是规则通道的外部触发:

触发事件线对应的触发事件:

规则通道:

注入通道,也是类似的:

寄存器配置:

(5)转换时间

ADC外设是在AHB2总线上的,AHB2总线的时钟为72MHz,而ADCCLK最大为14MHz,因此需要分频。

预分频设置,由时钟配置寄存器RCC_CFGR来选择:

通道采样时间的计算:

采样周期的寄存器配置如下:

当APB2总线时钟为72M,ADC预分频系数为6时,ADCCLK = 12M,此时:

最短转换时间:Tconv = (1.5 + 12.5) = 14周期 = 14 / 12us = 1.17us

最长转换时间:Tconv = (239.5 + 12.5) = 252周期 = 252 / 12us = 21us

(6)数据寄存器

一切准备就绪后, ADC 转换后的数据根据转换组的不同,规则组的数据放在ADC_DR 寄存器,注入组的数据放在 JDRx。

规则数据寄存器:

16位有效,用于存放独立模式转换完成数据;
ADC_CR2寄存器的ALIGN位,设置数据对齐方式;
只有一个,多通道采集的是最好使用DMA;
12位数据在16位寄存器中的对齐格式:

注入数据寄存器:

(7)中断

1 转换结束中断
       数据转换结束后,可以产生中断,中断分为三种:1 规则通道转换结束中断;2 注入转换通道转换结束中断;3 模拟看门狗中断。其中转换结束中断很好理解,跟我们平时接触的中断一样,有相应的中断标志位和中断使能位,我们还可以根据中断类型写相应配套的中断服务程序。

2 模拟看门狗中断

       当被 ADC 转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断,前提是我们开启了模拟看门狗中断,其中低阈值和高阈值由 ADC_LTR 和 ADC_HTR 设置。例如我们设置高阈值是 2.5V,那么模拟电压超过 2.5V 的时候,就会产生模拟看门狗中断,反之低阈值也一样。

3 DMA请求:

       规则和注入通道转换结束后,除了产生中断外,还可以产生 DMA 请求,把转换好的数据直接存储在内存里面。要注意的是只有 ADC1 和 ADC3 可以产生 DMA 请求。一般我们在使用 ADC 的时候都会开启 DMA传输。

(8)电压转换计算

电压输入范围为:0~3.3V;
分辨率为12位;
最小精度为:3.3/2^12;
设数字量为X,则有模拟量 Y = (3.3 / 2^12)*X;
********************************************************************************************************************************************

接下来是ADC的工作模式,可以分为独立模式和双ADC模式。

独立模式:

       只使用一个ADC,如使用ADC1(可以配置规则组最多为16通道);

双ADC模式(ADC1 + ADC2):

(1)同步模式(包含同步规则和同步注入模式),应用场景:多通道示波器

什么意思呢,就是我们使用两个ADC,当设置ADC1为外部触发时,触发条件会同时开启ADC1和ADC2。如下图所示:

使用同步模式时,如果设置合理,我们能缩短至一半的时间。比如,当使用独立模式(单ADC时),转换16个通道;而现在可以将16个通道分到两个ADC中(各8个),一次序列采样完成只需要原来的一半时间。

(2)交叉模式(分为快速交叉和慢速交叉):只适用于规则通道组,而且只有一个通道,作用是提高采样速度(工作模式:ADC1和ADC2均对单通道进行采样。当ADC1采样完在转换时,ADC2即开始采样,这样不用像独立模式那样每次都得等到转换完成再开始下一次,能提高转换速度)。应用场景:高采样率示波器

快速交叉:

慢速交叉:

(3)交替触发:

       只适用于注入通道组。当第一个触发条件到来时,ADC1是所有注入通道全部转换,ADC2不转换;

当第二个触发条件到达时,ADC2的所有注入通道全部转换,ADC1不转换;

循环往复...

(4)多种模式混合...

扫描模式:

单次转换模式(ADC只执行一次转换):

连续转换模式:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的重要模块,而STM32系列MCU中的ADC模块也是非常强大的。然而,在实际应用中,可能会出现ADC通道间干扰的问题,这会影响到ADC的精度和稳定性,因此需要采取一些措施来解决这个问题。 ADC通道间干扰的原因一般是由于信号线之间的干扰导致的。在多路ADC输入时,每个输入通道都有一个输入引脚,这些引脚都会受到周围环境的干扰,例如电源干扰、电磁干扰等。这些干扰信号会通过引脚进入芯片内部,影响到ADC的精度和稳定性,从而导致ADC通道间干扰的问题。 为了解决ADC通道间干扰的问题,可以采取以下措施: 1. 采用外部滤波器:在输入信号进入芯片前,可以通过使用外部滤波器来滤除掉信号中的噪声和干扰。 2. 采用差分输入模式:差分输入模式可以有效地抵消掉共模干扰,提高ADC的精度和稳定性。 3. 适当调整ADC采样时间:合适的采样时间可以有效地降低ADC的噪声和干扰,提高ADC的精度和稳定性。 4. 采用屏蔽技术:在PCB设计中,可以采用屏蔽技术来降低信号线之间的干扰,从而减少ADC通道间干扰的问题。 综上所述,ADC通道间干扰是一个常见的问题,但是可以通过采取一些措施来解决。在实际应用中,需要根据具体情况选择合适的方法,从而提高ADC的精度和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值