一个低功耗应用的案例分析

发布时间:2024-06-26  

‍‍‍某STM32用户反馈,他使用STM32L031芯片开发产品遇到低功耗异常的问题。

基本软硬件及开发环境如下:

硬件:STM32L031、外部晶振32.768

软件:STM3CUBE、MDK5、HAL库

他在产品中用到了STOP低功耗模式。在让芯片进入STOP之前,先关闭了ADC外设。

代码是这样的:

HAL_ADC_DeInit‍(&hadc);

HAL_PWR_EnterSTOPMode(‍‍PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);

他发现按照上述操作进入STOP模式后的功耗,比开机时不开启ADC模块时的功耗要大,而且发现在进STOP之前,有没有HAL_ADC_DeInit()这一句,对功耗没有任何影响。

稍微整理下,现在的具体情况是这样的:

芯片复位后,不初始化ADC外设、不启用ADC相关功能,进stop后芯片功耗为2.6uA。

如果复位后初始化ADC,进入stop之前做了HAL_ADC_DeInit(&hadc)操作,功耗则为18uA。客户好奇的是,他认为执行了HAL_ADC_DeInit()命令行,也就相当于关闭了ADC外设,进入STOP模式后功耗也应该是2.6左右。事实上差别怎么这么大呢?

难道HAL_ADC_DeInit()没有关闭ADC外设的作用?如果这样,如何在进STOP前关闭ADC外设呢?

其实,HAL_ADC_DeInit(&hadc)的功能只是将ADC模块本身及相关寄存器恢复成复位初状态下的默认值,并不是用来关闭ADC外设模块的。如果使用STM32库函数的话,我们可以调用下面函数关闭ADC外设时钟以停止其功能运行。

__HAL_RCC_ADC1_CLK_DISABLE() ;

可是,当客户在进STOP前将HAL_ADC_DeInit(&hadc)换成__HAL_RCC_ADC1_CLK_DISABLE()后,发现功耗并无明显变化,依旧是18uA左右。那是怎么回事呢?

建议客户在让芯片进入STOP前确保没有其它浮空脚存在或可能产生漏电流地方,做各个管脚的硬件确认。经过检查,客户在应用线路上并没有发现什么可疑的地方。

经过进一步地沟通了解,客户使用ADC模块并未对外部信号进行采样,只是对两个内部信号进行采样。即对内部温度和内部的参考基准电压进行采样转换。

现在的情况是,只要芯片复位后不做任何有关ADC的初始化,当然也包括不对上述两个内部信号的采样转换做使能配置,此时功耗就能相对明显地降下去。难道这个功耗降不下去跟开启这两个内部信号的AD转换有关?

循着这个思路,进一步查看STM32L0的参考手册有关内部温度传感器和内部基准参考电压的章节。我们可以发现要对这两个内部信号进行AD采样的话,有专门的针对这两个模块及对应通道的‍开启使能操作,换句话说,这两个内部模块并不属于ADC外设模块。当开启这两个模块后,简单地关闭ADC外设是没法对二者进行关闭的。

结合库代码我们也可以看到针对这两个内部信号的使能指令,即下图中红色圆圈圈出来的代码。

研究到这里,基本可以大致估测到可能是因为开启了这两个内部模块后,带来了额外的功耗。客户在让芯片进STOP之前,即使关闭了ADC外设时钟,如果没有进一步关闭这两个地方,二者产生的功耗依然存在。

于是,建议客户在让芯片进STOP之前,除了关闭ADC外设时钟外,将开启过的内部温度传感器通道和内部参考电压通道实施关闭操作。即让客户运行如下两行代码:

ADC->CCR &=(~ADC_CCR_TSEN); // Turn Off TemperatureChannel

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

客户在进STOP前添加上面两行代码后,STOP模式下的功耗就正常了。显然,当开启内部温度传感器和内部参考电压通道后,会增加些功耗。它们的开启和关闭是单独操作的,这点需注意。

当我们在调试过程中遇到类似问题时先不要着急,尽量结合手册和库代码一步步找原因,或许很快可以拨云见日。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
服务
平台入驻

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

原厂代理商合作

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

闲置物料合作

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

生态合作

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

加工与定制类服务商合作

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

线上代理合作

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

邮件营销及广告服务

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>