谷动谷力

 找回密码
 立即注册
查看: 3066|回复: 0
打印 上一主题 下一主题
收起左侧

【工程师笔记】STM32L4 单片机进入低功耗异常的一种情况

[复制链接]
跳转到指定楼层
楼主
发表于 2022-7-15 09:30:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【工程师笔记】STM32L4 单片机进入低功耗异常的一种情况
1.引言
STM32 L4 系列作为一款高性能的低功耗芯片,具有强大的运算处理性能和极低的运行和待机功耗,广泛应用于各种需要节能设备上。


2. 问题描述
客户使用 STM32L431 作为主控项目开发电子烟产品,使用了 ST 的 HAL 软件库开发。各种驱动功能正常。空闲时进入待机状态。在研发阶段测试时一切正常,但是批量生产时发现产品无法进入低功耗或者说表现为耗电过大。


3. 问题分析与定位
首先查找软件设计本身,包括各种外设的配置以及进入低功耗前的各种处理,并未发现任何异常,随即简化软件在评估板上烧录代码,然后连接电流表,功耗一切正常。经过多次验证,每次都能进入低功耗。

这样看起来就非常奇怪了,客户的硬件也没什么特殊地方。后来再次检查客户的整个流程发现,客户的烧录和测试是一直带电的,因为是电子烟产品,上面的电池是一直连接的。设计调查实验发现,客户的产品只要经过一次断电过程,再次上电就全部正常。而我们平时因测试低功耗电流需求,通常都是去掉烧录器的连接,避免额外电流消耗,所以都经过了断电过程,没有发现任何异常。而这种带有电池的产品,才会有机会发现。基于生产效率和产品终身带电池的特殊性,进行断电工序很难,不利于大规模生产。

那么问题来了,究竟是什么原因引起烧录完不能正常进入低功耗模式呢?带着问题进行查找原因。外设的查找比较容易,都是标准的并且简化掉了很多外设,那么会不会是传统外设之外的因素呢?

按照这个方向查找,想到了调试模块。


进一步查看发现烧录器将 DBG_STOP 位置 1。如上图。


如手册所描述,如果该位被置位的话,那么在低功耗下时钟并没有关闭,并且可以继续执行代码,所以芯片不能进入低功耗模式。于是对应的解决办法也出来了,进入低功耗前增加语句清除代码即可。


4. 问题解决
找到了线索后,针对问题解决起来就不复杂了,简单说,打一个补丁。


从调试界面上看,增加一句清除该位的函数即可禁止在低功耗模式下的调试功能,进而解决该问题。实际测量不需要断电也可正常进入期望的低功耗模式。


小结

由于低功耗调试位被置 1,引起超低功耗芯片 STM32L431 在不断电情况下不能正常进入低功耗模式,引起电流偏大。由于该产品特殊,从生产一直到用户手中,产品始终与电池连接(固定),才有可能导致此类问题发生,需要早研发阶段软件增加补丁的方式解决,使产品生产不用增加工序。

另外,笔者使用的 STM32 ST-LINK Utility 工具会引起该问题,而另一款常用的烧录软件 STM32CubeProgrammer v2.7.0 并未发现此问题,因此与用户采用的烧录软件有直接关系。市面上支持 STM32 低功耗产品烧录软件很多,如遇到此类问题,可以参考以上方式查找原因是否一致



+10

本帖被以下淘专辑推荐:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 09:16 , Processed in 0.111122 second(s), 44 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表