[其他ST产品] STOP模式下ADC关不了

[复制链接]
1574|12
 楼主| 流浪的屁屁 发表于 2020-10-13 18:28 | 显示全部楼层 |阅读模式
本帖最后由 流浪的屁屁 于 2020-10-14 09:06 编辑

各位好,我最新在优化STM32G071的遥控器待机功耗,当前22.6uA,感觉还不满意,重新焊了个最小系统,在一个一个模块分析测试后发现:在未配置使用ADC的情况下,系统电流在5.1uA,配置使用ADC后,电流会增加到19.1uAVREFINT已关闭的情况下,即ADC一旦启动就会多出14uA左右,即使不使用DMA,仍旧有这么大的功耗。在进入STOP之前,我有尝试关闭ADC相关的操作,尝试调用过如下API:HAL_ADC_DeInit(&hadc1); HAL_ADC_Stop(&hadc1); HAL_ADC_STOP_IT(&hadc1); HAL_ADC_Stop_DMA(&hadc1);但均未能消除或减小该14uA。 不知是哪没考虑到,麻烦帮忙分析一下,谢谢!

STOP之前,ADC尝试的相关操作如下:
  HAL_ADC_DeInit(&hadc1);
   HAL_ADC_Stop(&hadc1);
   HAL_ADC_STOP_IT(&hadc1);
   HAL_ADC_Stop_DMA(&hadc1);
   __HAL_RCC_ADC1_CLK_DISABLE();
  ADC->CCR &=(~ADC_CCR_TSEN); // Turn Off TemperatureChannel

ADC->CCR &=(~ADC_CCR_VREFEN); // Turn Off VrefintChannel

242715f864e843e264.png
sonicll 发表于 2020-10-13 18:49 | 显示全部楼层
__HAL_RCC_ADC_CLK_DISABLE();  试试这个?

评论

正解,低功耗首要是关闭时钟  发表于 2020-10-14 09:00
香水城 发表于 2020-10-13 22:27 | 显示全部楼层
关闭ADC外设的时钟的话 要用楼上所说的代码---__HAL_RCC_ADC_CLK_DISABLE();

另外,如果有开启其它特殊通道比方 Vrefint, 内部温度传感器通道,还需要额外关闭动作。

这里有篇笔记可以参考下。 一个低功耗应用的案例分析
 楼主| 流浪的屁屁 发表于 2020-10-14 08:59 | 显示全部楼层
sonicll 发表于 2020-10-13 18:49
__HAL_RCC_ADC_CLK_DISABLE();  试试这个?

谢谢,不过刚试了一下,还是没啥反应

评论

@liaojihua2010 :版主  发表于 2020-10-14 09:04
看版本发给你的那篇文章,也许有收获  发表于 2020-10-14 09:03
 楼主| 流浪的屁屁 发表于 2020-10-14 09:02 | 显示全部楼层
香水城 发表于 2020-10-13 22:27
关闭ADC外设的时钟的话 要用楼上所说的代码---__HAL_RCC_ADC_CLK_DISABLE();

另外,如果有开启其它特殊通 ...

谢谢,不过尝试了一下您的建议,发现功耗还是降不下去呢
香水城 发表于 2020-10-14 10:13 | 显示全部楼层
流浪的屁屁 发表于 2020-10-14 09:02
谢谢,不过尝试了一下您的建议,发现功耗还是降不下去呢

再看看是否哪里有漏电流,各个GPIO口状态琢磨下。
 楼主| 流浪的屁屁 发表于 2020-10-14 10:36 | 显示全部楼层
香水城 发表于 2020-10-14 10:13
再看看是否哪里有漏电流,各个GPIO口状态琢磨下。

各个IO口已全部配置成模拟口,不开启ADC时3.7uA,开启后飙升到17.7uA,即便执行了那么多的操作也还是降不下来
kejian2000 发表于 2020-10-14 15:27 | 显示全部楼层
AD的温度传感器,电压参考,都关闭
 楼主| 流浪的屁屁 发表于 2020-10-15 08:49 | 显示全部楼层
kejian2000 发表于 2020-10-14 15:27
AD的温度传感器,电压参考,都关闭

已经关闭了还是不行
〽️〽️〽️ 发表于 2020-10-15 16:24 | 显示全部楼层
都关闭,用STM32L051 standby 模式2.8uA
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部