使用STM32L4 ADC优化功耗

时间:2018-11-06 14:01:33

标签: stm32 firmware adc

我正在STM32L4上进行固件开发。我需要在200Hz左右采样一个模拟信号。因此,基本上每5毫秒进行一次模数转换。

到目前为止,我一直在通过计时器触发的连续转换模式下启动ADC。但是,这阻止了将STM32置于两次转换之间的停止模式,这在功耗方面非常有效,因为99%以上的时间与产品无关。

所以我的想法是使用单次转换模式:使用低功耗定时器每5毫秒将产品从停止模式中唤醒,在LPTIM中断处理程序中启动一次转换(等待轮询中ADC转换结束),然后回到停止模式。

您认为这样有意义吗?我不确定在处理程序中轮询单个ADC转换,您怎么看?我认为在一个通道上进行一次转换应该非常快(我以80MHz运行,数据表中提到的最大采样时间为8us)

每次转换之间是否必须禁用/启用ADC(ADEN位)?

此外,我必须知道一次转换可以持续多长时间,以评估解决方案是否有趣。我对采样时间(SMP位)感到困惑。参考手册指出:“该采样时间必须足以使输入电压源将嵌入式电容器充电至输入电压水平。”找到正确的SMP值的方法是什么?

1 个答案:

答案 0 :(得分:1)

一般想法没有问题,即使在Stop2模式下,LPTIM1也可以通过EXTI控制器生成唤醒事件。

  

我不确定要在处理程序中轮询单个ADC转换,您如何看待?

您可能希望在定时器中断中将MCU置于休眠模式,并在转换完成后让ADC触发中断。因此,请在计时器中断中禁用SLEEPDEEP,然后在ADC中断中启用它。

  

找到正确的SMP值的方法是什么?

经验方法:从最长的采样时间开始,然后开始减少它。当转换结果发生明显变化时,请退后一两步。