STM32的ADC模式及其应用
STM32的ADC有几种模式,用于高级转换过程,以便在电机控制等应用中获得有效的转换结果。在这个过程中DMA是一个很重要的IP,尽可能的满足的条件下优先使用它,它可以释放CPU且避免数据的丢失。
1 独立模式
1.1 单通道,单转换模式
这是最简单的ADC模式,在这种模式下,ADC执行单个通道的单次转换(单采样),在转换完成后停止。
1.2 多通道(扫描),单转换模式
该模式用于在独立模式下连续转换一些通道,使用ADC序列器,可以使得该模式下ADC最多可以配置16个ADC通道序列,依次具有不同的采样时间和顺序,如下图所示的序列,这样的话就不必在转换过程中停止ADC,以便用不同的采样时间重新配置下一条通道。该模式能减轻CPU的负荷以及软件开发的繁琐。
1.3 单通道,连续转换模式
单通道连续转换模式在常规通道转换中连续无限的单通道转换。连续模式功能允许ADC在后台工作,ADC在没有CPU干预的情况下连续转换通道,此外DMA可以在循环模式下使用,从而减少CPU负载。
Note:在固件中有示例,使用DMA和中断两种方法,通过注释或取消注释#define USE_DMA_Transfer即可
1.4 多通道(扫描),连续转换模式
该模式可以用于转换一些通道连续和独立模式的ADC,使用序列器最多可以配置16个通道,依次具有不同的采样时间和不同的顺序,该模式类似于多通道、单转换模式,只是它在序列的最后一个通道之后不停止转换,而是从第一个通道重新启动转换序列并循环往复。
1.5 注入转换模式
该模式用于外部事件或软件触发转换时使用,注入转换通道组比常规转换通道组的优先级高,可以中断常规通道组当前通道的转换。
Note:该模式在固件中有示例
2 Dual模式
Dual模式可用于具有两个ADC的STM32控制器,ADC1为主控制器,ADC2为从控制器。ADC1和ADC2触发器在内部同步,用于常规通道和注入通道转换,实现ADC1和ADC2协同工作。在一些设备中有3个ADC(ADC1、ADC2、ADC3),在这种情况下,ADC3总是独立工作,不与其他ADC同步。
Note:不能在两个ADC上使用相同的通道,会引起转换误差。
2.1 双常规同步模式
双常规同步ADC模式是由ADC1和ADC2同步,能够同时进行两次转换,每个ADC转换一个通道序列(启用扫描并配置每个ADC的序列器)或转换单个通道(禁用扫描)。转换可以通过外部触发或者外部触发,在该模式下,ADC1和ADC2的转换结果会存储在ADC1的数据寄存器中(32bit),如下图显示了ADC1和ADC2如何同时转换两个序列,ADC1将16个通道序列依次配置成为通道15到通道0,ADC2将16个通道序列依次配置成通道0到通道15。
Note:在H7的ADC例程里有
Example:双常规同步模式可用于需要同时采样和转换两个信号的应用,如:测量和绘制单相或三相瞬时功率 P n ( t ) = U n ( t ) × I n ( t ) P_n(t)=U_n(t)\times I_n(t) Pn(t)=Un(t)×In(t),在该情况下,同时测量电压和电流,再计算瞬时功率,如下图所示,使用两个adc在双常规同步模式下测量率。
测量单相功率:ADC1和ADC2使用两个通道(一个用于电压,一个用于电流)
测量三相功率:ADC1和ADC2使用6个通道(3个用于电压,3个用于电流)
2.2 双快速交错模式
双快速交错ADC模式用于一个通道的转换,ADC1和ADC2以7个ADC时钟周期交替转换所选通道,这意味着每7个时钟周期转换1次,每个ADC每14个ADC时钟周期转换通道,若使用14MHzADC时钟,可以达到每秒2M次采样: 14 M H z / 7 = 2 M s a m p l e s / s 14MHz/7=2Msamples/s 14MHz/7=2Msamples/s(采样频率),转换可以通过外部触发或软件触发,ADC1和ADC2的转换结果存储在ADC1的数据寄存器(32bit)。最大允许采样时间为7个ADC时钟周期,避免ADC1和ADC2在转换同一通道时采样相位重叠,这意味着允许的采样时间是1.5个ADC时钟周期。
Note:应该使用DMA处理,比中断处理更好避免数据丢失。
该模式用于在采样时间为1.5个ADC时钟周期,采样速率为2Msamples/s时加快ADC的采样速率。ADC1和ADC2交替转换同一通道,较少转换时间,当ADC1采样通道CHx时,ADC2转换前一个样本。
Example:如果要转换的信号的最大频率为800KHz,则采样速率应该要大于等于要转换的信号频率的两倍(奈奎斯特定理)。由于一个ADC的最大采样速率为1Msamples/s,因此不满足标准,采用双快速交错ADC模式即可解决该问题。这样,由于两个ADC(ADC1和ADC2)交替工作以等周期(7个ADC周期)采样信号,采样速率变为2Msamples。采用爽快速交错ADC模式,可在1.5个采样周期内实现2Msamples/s的采样速率。
2.3 双慢交错模式
双慢交错ADC模式用于一个通道的转换。ADC1和ADC2以14个ADC时钟周期交替转换所选通道,因此,通道每14个时钟周期转换一次。每个ADC每28个ADC时钟周期转换通道。转换可以通过外部触发或软件触发,ADC1和ADC2的转换结果存储在ADC1的数据寄存器中(32bit)。最大允许采样时间为14ADC时钟周期,以避免与下一次转换有重叠,这意味着唯一允许的采样时间是1.5、7.5、13.5个ADC时钟周期。此模式下不应使用连续转换,因为ADC会自动连续转换所选的常规通道(CONT位不应在此模式下设置)。
Note:应该使用DMA处理,比中断处理更好避免数据丢失。
_Example:_假设要转换的信号的最大频率 f i n f_{in} fin为500KHz,阻抗RAIN=10KΩ。最小采样速率为1Msamples/s,对于一个ADC,唯一的配置是 f A D C f_{ADC} fADC=140MHz,采样时间Ts=1.5周期( T s = t s × f A D C T_s=t_s \times f_{ADC} Ts=ts×fADC)
_Solution:_在双慢模式下使用ADC,每个ADC采样应配置为最小采样率即500Ksamples/s,
f
A
D
C
=
14
M
H
z
f_{ADC}=14MHz
fADC=14MHz
T
T
o
t
a
l
R
a
t
e
=
T
s
+
T
c
o
n
v
=
t
T
o
t
a
l
R
a
t
e
×
f
A
D
C
=
f
A
D
C
F
s
R
a
t
e
T_{TotalRate}=T_s+T_{conv}=t_{TotalRate}\times f_{ADC}=\frac{f_{ADC}}{F_{sRate}}
TTotalRate=Ts+Tconv=tTotalRate×fADC=FsRatefADC
其中:
T T o t a l R a t e T_{TotalRate} TTotalRate是ADC手中周期总的转换时间;
t T o t a l R a t e t_{TotalRate} tTotalRate是采样时间 t s ts ts( t s = t s f A D C t_s=\frac{t_s}{f_{ADC}} ts=fADCts)和转换时间 t c o n v t_{conv} tconv( t c o n v = T c o n v f A D C t_{conv}=\frac{T_{conv}}{f_{ADC}} tconv=fADCTconv)之和;
T c o n v T_{conv} Tconv是一个常数,等于12.5个ADC周期。
T
S
T_S
TS是ADC周期给出的采样时间,等于:
T
s
=
f
A
D
C
F
s
R
a
t
e
−
12.5
=
14
×
1
0
6
500
×
1
0
3
−
12.5
=
15.5
c
y
c
l
e
T_s=\frac{f_{ADC}}{F_{sRate}}-12.5=\frac{14\times 10^6}{500\times 10^3}-12.5=15.5cycle
Ts=FsRatefADC−12.5=500×10314×106−12.5=15.5cycle
其中
F
s
R
a
t
e
F_{sRate}
FsRate为被采样的采样频率
由于
T
s
=
15.5
c
y
c
l
e
T_s=15.5cycle
Ts=15.5cycle,不可用于配置,最接近的可用之是13.5,要知道这个值是否满足奈奎斯特定理,需要计算
T
s
=
13.5
,
f
A
D
C
=
14
M
H
z
T_s=13.5,f_{ADC}=14MHz
Ts=13.5,fADC=14MHz的采样速率。
T
T
o
t
a
l
R
a
t
e
=
13.5
+
12.5
=
26
c
y
c
l
e
s
F
s
R
a
t
e
=
f
A
D
C
T
T
o
t
a
l
R
a
t
e
=
14
×
1
0
6
26
=
538
K
H
z
T_{TotalRate}=13.5+12.5=26cycles\\ F_{sRate}=\frac{f_{ADC}}{T_{TotalRate}}=\frac{14\times 10^6}{26}=538KHz
TTotalRate=13.5+12.5=26cyclesFsRate=TTotalRatefADC=2614×106=538KHz
由于转换是由两个ADC(ADC1+ADC2)交替工作,因此采样频率为
F
s
R
a
t
e
=
538
×
2
=
1076
K
H
z
>
2
×
f
i
n
F_{sRate}=538\times 2=1076KHz>2\times f_{in}
FsRate=538×2=1076KHz>2×fin因此满足奈奎斯特定理
当 T s = 13.5 c y c l e s T_s=13.5cycles Ts=13.5cycles,源允许的最大阻抗(RAIN)为19KΩ,由于源的阻抗RAIN=10KΩ<19KΩ,因此满足阻抗条件。单ADC且Ts=1.5cycles(对应1.2KΩ)时,不满足阻抗条件。通过使用两个ADC,将1.2KΩ改变到19KΩ。采用双慢交错ADC模式可以在更高的输入阻抗下实现每秒1Msamples/s。
2.4 双交替触发模式
双交替触发ADC模式只能在注入通道组上使用,在这种模式下,ADC1和ADC2交替转换同一外部触发器上的注入通道。当第一个触发器发生时,ADC1中所有注入通道都被转换。当第二个触发器发生时,ADC2中所有注入组都被转换,以此类推。每个ADC组内最大的注入通道数为4个。
_Example:_双交替触发模式使得采样点尽可能靠近彼此(低至1.5ADC周期)成为肯呢个。在电机控制应用中,单分流传感器用于三相电流读取,在某些情况下,功率级的PWM占空比必须受到限制,以保持两个连续转换的最小时隙。如果采样点尽可能接近,则PWM占空比最大化,从而增加是加到电机的电压。
2.5 双组合常规/注入同步模式
双组合常规/注入同步ADC模式是一种允许注入的常规同步模式。注入的通道也被同事转换。在这种模式下,应该转换相同长度的序列,或者确保触发器之间的间隔大于两个序列中最长的一个,否则,具有最短序列的ADC可能重新启动,而且具有最长序列的ADC正在完成直线的转换。
_Example:_双组合常规/注入同步模式可用于在特定时间读取三相电流。这个模式可以当读取两相电流,通过外推来确定第三相的电流,因为这三相电流之间有关系。
2.6 双组合:同时注入+交错模式
该模式是双交错模式(快或慢)和双注入同步模式的结合。当触发常规通道时,开始双交错转换,ADC2进行第一次转换,然后ADC1转换通道,以此类推。当注入通道被触发时,中断交错通道转换,两个ADC(ADC1和ADC2)开始转换注入通道组,当两个ADC完成注入转换后,它们恢复配置为交错模式的通道转换。
可在UPS(不间断电源)系统中使用该模式。电池电压由ADC看门狗以双交错模式转换监测,ADC还通过测量双注入同步模式下的电压和电流来监测负载消耗的功率。
交错模式的通道转换。
[外链图片转存中…(img-NA5KLIfW-1706016700645)]
可在UPS(不间断电源)系统中使用该模式。电池电压由ADC看门狗以双交错模式转换监测,ADC还通过测量双注入同步模式下的电压和电流来监测负载消耗的功率。