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)\times I_n(t)$,在该情况下,同时测量电压和电流,再计算瞬时功率,如下图所示,使用两个adc在双常规同步模式下测量率。
测量单相功率:ADC1和ADC2使用两个通道(一个用于电压,一个用于电流)
测量三相功率:ADC1和ADC2使用6个通道(3个用于电压,3个用于电流)
2.2 双快速交错模式
双快速交错ADC模式用于一个通道的转换,ADC1和ADC2以7个ADC时钟周期交替转换所选通道,这意味着每7个时钟周期转换1次,每个ADC每14个ADC时钟周期转换通道,若使用14MHzADC时钟,可以达到每秒2M次采样: 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_{in}为500KHz,阻抗RAIN=10KΩ。最小采样速率为1Msamples/s,对于一个ADC,唯一的配置是 f_{ADC}=140MHz,采样时间Ts=1.5周期( T_s=t_s \times f_{ADC})
Solution:在双慢模式下使用ADC,每个ADC采样应配置为最小采样率即500Ksamples/s, f_{ADC}=14MHz
其中:
T_{TotalRate}是ADC手中周期总的转换时间;
t_{TotalRate}是采样时间 ts(t_s=\frac{t_s}{f_{ADC}})和转换时间 t_{conv}(t_{conv}=\frac{T_{conv}}{f_{ADC}})之和;
T_{conv}是一个常数,等于12.5个ADC周期。
T_S是ADC周期给出的采样时间,等于:
其中 F_{sRate}为被采样的采样频率
由于 T_s=15.5cycle,不可用于配置,最接近的可用之是13.5,要知道这个值是否满足奈奎斯特定理,需要计算 T_s=13.5,f_{ADC}=14MHz的采样速率。
由于转换是由两个ADC(ADC1+ADC2)交替工作,因此采样频率为 F_{sRate}=538\times 2=1076KHz>2\times f_{in}因此满足奈奎斯特定理
当 T_s=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还通过测量双注入同步模式下的电压和电流来监测负载消耗的功率。
评论区