STM32的ADC模式及其应用

本文详细介绍了STM32的ADC的各种工作模式,包括独立模式(单/多通道)、连续转换、双模式(常规/注入同步),以及在电机控制、电力系统如UPS中的应用,特别强调了DMA在数据传输中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32的ADC模式及其应用

STM32的ADC有几种模式,用于高级转换过程,以便在电机控制等应用中获得有效的转换结果。在这个过程中DMA是一个很重要的IP,尽可能的满足的条件下优先使用它,它可以释放CPU且避免数据的丢失。

1 独立模式

1.1 单通道,单转换模式

这是最简单的ADC模式,在这种模式下,ADC执行单个通道的单次转换(单采样),在转换完成后停止。

image-20240123154111685

1.2 多通道(扫描),单转换模式

该模式用于在独立模式下连续转换一些通道,使用ADC序列器,可以使得该模式下ADC最多可以配置16个ADC通道序列,依次具有不同的采样时间和顺序,如下图所示的序列,这样的话就不必在转换过程中停止ADC,以便用不同的采样时间重新配置下一条通道。该模式能减轻CPU的负荷以及软件开发的繁琐。

image-20240123155152775

image-20240123155241146

1.3 单通道,连续转换模式

单通道连续转换模式在常规通道转换中连续无限的单通道转换。连续模式功能允许ADC在后台工作,ADC在没有CPU干预的情况下连续转换通道,此外DMA可以在循环模式下使用,从而减少CPU负载。

Note:在固件中有示例,使用DMA和中断两种方法,通过注释或取消注释#define USE_DMA_Transfer即可

image-20240123160215957

1.4 多通道(扫描),连续转换模式

该模式可以用于转换一些通道连续和独立模式的ADC,使用序列器最多可以配置16个通道,依次具有不同的采样时间和不同的顺序,该模式类似于多通道、单转换模式,只是它在序列的最后一个通道之后不停止转换,而是从第一个通道重新启动转换序列并循环往复。

image-20240123160942829

1.5 注入转换模式

该模式用于外部事件或软件触发转换时使用,注入转换通道组比常规转换通道组的优先级高,可以中断常规通道组当前通道的转换。

Note:该模式在固件中有示例

image-20240123163127610

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例程里有

image-20240123165310342

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个用于电流)

image-20240123170401797

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处理,比中断处理更好避免数据丢失。

image-20240123172040472

该模式用于在采样时间为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处理,比中断处理更好避免数据丢失。

image-20240123195416147

_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=FsRatefADC12.5=500×10314×10612.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.5fADC=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个。

image-20240123204138942

_Example:_双交替触发模式使得采样点尽可能靠近彼此(低至1.5ADC周期)成为肯呢个。在电机控制应用中,单分流传感器用于三相电流读取,在某些情况下,功率级的PWM占空比必须受到限制,以保持两个连续转换的最小时隙。如果采样点尽可能接近,则PWM占空比最大化,从而增加是加到电机的电压。

2.5 双组合常规/注入同步模式

双组合常规/注入同步ADC模式是一种允许注入的常规同步模式。注入的通道也被同事转换。在这种模式下,应该转换相同长度的序列,或者确保触发器之间的间隔大于两个序列中最长的一个,否则,具有最短序列的ADC可能重新启动,而且具有最长序列的ADC正在完成直线的转换。

image-20240123205051410

_Example:_双组合常规/注入同步模式可用于在特定时间读取三相电流。这个模式可以当读取两相电流,通过外推来确定第三相的电流,因为这三相电流之间有关系。

2.6 双组合:同时注入+交错模式

该模式是双交错模式(快或慢)和双注入同步模式的结合。当触发常规通道时,开始双交错转换,ADC2进行第一次转换,然后ADC1转换通道,以此类推。当注入通道被触发时,中断交错通道转换,两个ADC(ADC1和ADC2)开始转换注入通道组,当两个ADC完成注入转换后,它们恢复配置为交错模式的通道转换。

image-20240123211035503

可在UPS(不间断电源)系统中使用该模式。电池电压由ADC看门狗以双交错模式转换监测,ADC还通过测量双注入同步模式下的电压和电流来监测负载消耗的功率。

交错模式的通道转换。

[外链图片转存中…(img-NA5KLIfW-1706016700645)]

可在UPS(不间断电源)系统中使用该模式。电池电压由ADC看门狗以双交错模式转换监测,ADC还通过测量双注入同步模式下的电压和电流来监测负载消耗的功率。

image-20240123211341457

STM32STMicroelectronics公司生产的一款嵌入式微控制器芯片,它集成了许多功能丰富的外设,可以适用于许多应用领域。其中,交错并联DCDC是一种DCDC转换器拓扑结构,它可以将直流输入电压转换成不同电平的直流输出电压,适用于许多耗电量较大的应用场景。下面是STM32交错并联DCDC源程序的详细介绍。 首先,STM32采用内置的PWM模块来产生控制信号,实现开关器件的控制。其中,定时器的硬件自动输出适用于半桥驱动器的PWM信号。同时,STM32应用了DMA技术,可以通过配置DMA传输地址和数据长度,实现多个通道之间的数据传输,提高系统性能。 其次,交错并联DCDC拓扑结构由若干个分流单元和整流单元组成,需要使用多个通道的硬件PWM同步控制。程序中需要对各个通道进行初始化配置,并采用软件中断实现数据的传输和更新。 另外,为了避免系统出现意外故障,还需要对不同通道进行保护和监测。例如,需要对输出电压、温度等参数进行实时监控,一旦出现异常情况,及时采取安全保护措施,防止系统受到损害或者发生故障。 综上所述,STM32交错并联DCDC源程序需要涉及STM32的相关硬件,并且需要详细配置和设置硬件参数,同时还需要采用多通道同步控制技术和DMA技术,实现数据的高效传输和更新。在程序中还需要进行详细的保护和监测处理,以确保系统的可靠性和稳定性。因此,编写STM32交错并联DCDC源程序需要具备较高的技术水平和实践经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值