STM32 ADC电源、通道和工作模式解析

0、ADC功能框图

1、ADC的电源

1.1、工作电源

VSSA=VSS,VDDA=VDD,简单来说,通常stm32是3.3V,ADC的工作电源也是3.3V;

1.2、参考电压

VREF+和VREF-并不一定引出,取决于封装,如果没有引出则VREF+连接到VDDA、VREF-连接到VSSA。

在不要求精度的情况下,VREF+可直接接到VDDA,想要精确测量,可外接基准源(比如TL431);

附一个精确的参考电压3.3V的电路,R4和R5之间是2.5V,所以VREF+等于2.5V*(2.4K+7.5K)/7.5K=3.3V; (误差来源:431基准源的2.5V,R4和R5电阻的精度)

1.3、输入模拟电压

ADC 输入范围:VREF-≤VIN ≤ VREF+

通常VREF+是3.3V,那么输入的引脚电压就要在0V~3.3V之间,对应这分辨率下的上下限。

比如12位分辨率,就是0V~3.3V对应AD值是0~4095.

2、ADC的通道

2.1、ADC输入的19个通道

16 个来自GPIO端口ADCx_IN1~IN15;

3个内部通道,1个内部温度传感器、1个VREFINT、1个接到 VBAT引脚 。(这3个通道只在主 ADC1 外设上可用

ADCx_IN1~IN15,ADC是有3个的,ADC1、ADC2、ADC3,所以ADCx_IN1~IN15并不意味着只有16个IO口,例如stm32f407igt6如下:

2.2、规则通道和注入通道
2.2.1、规则/注入通道和上面19个通道的关系

看框图,不管是规则通道和注入通道,都是19通道中经过复选其中的1个通道。

2.2.2、1次只能转换1个通道,如何利用多个通道?

按照事先配置的顺序去执行,比如你想转换ADC1_IN2、ADC1_IN10、ADC1_IN5,那么就是这3个通道轮流,就可以检测到多个通道了,这就是序列。

既然为序列,那就有长度和顺序,由寄存器来设置。

规则序列寄存器(最多16个通道):ADC_SQR1、ADC_SQR2、ADC_SQR3

注入序列寄存器(最多4个通道):ADC_JSQR

2.2.3、为什么要有注入通道?

比如通常只想检测ADC1_IN2、ADC1_IN10、ADC1_IN5,但当有某个事件发生时,你想去看一下ADC1_7的值,注入通道相当于插队/中断,停下规则通道的转换,去转换注入通道,完成后再继续规则通道;

除了上面这种特定事件的触发,还有一种叫“自动注入”,在规则通道转换完之后自动去转换注入通道,目的是加长检测序列,16+4相当于最多可支持20个序列;

2.2.4、如何启动规则/注入通道转换

软件触发、事件触发(定时器触发、IO口触发);

功能框图中蓝紫色下方的部分就是事件触发的具体可选项;

3、工作模式

下面的单次、连续、扫描、不连续转换有些可以组合使用。

首先看两个寄存器字段,SWSTART和CONT。

SWSTART,软件置1开始转换,然后硬件清0。

CONT,软件置1和清0,置1后会一直转换。

3.1、单次转换(CONT = 0)

不管规则通道里有几个通道,当前转换完之后就会停止。

如果是开启了扫描模式,那么第一个通道转换完停止后,下一次开启转换SWSTART会转换第二个通道。

如果没有开启扫描模式,那么下一次开启转换SWSTART会继续转换第一个通道。

3.2、连续转换(CONT = 1)

不管规则通道里有几个通道,当前转换完之后立刻开启下一次转换。

如果是开启了扫描模式,那么第一个通道转换完,开始第二个通道直到最后一个通道,并且继续下一轮转换。

如果没有开启扫描模式,那么会不断转换第一个通道。

3.3、扫描模式

逐个扫描规则/注入序列中的通道。

如上所述,扫描模式可以搭配单次转换、连续转换。

3.4、不连续转换模式

每次触发转换规则组/注入组中的一部分,规则/注入序列转换到最后一个产生EOC.

由于是每次触发,所以对于单次转换CONT = 0,如果配置为连续转换就失去了不连续转换模式的意义。

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 ADC电源、通道和工作模式解析

发表评论