LAT1035
Local Application Tips
LAT1035 Rev 1.0 Aug. 2021
STM32L4 单片机进入低功耗异常的一种情况
关键字:低功耗STM32L4,异常
1. 引言
STM32 L4 系列作为一款高性能的低功耗芯片,具有强大的运算处理性能和极低的运
行和待机功耗,广泛应用于各种需要节能设备上
2. 问题描述
客户使用 STM32L431 作为主控项目开发电子烟产品,使用 ST HAL 软件库开
发。各种驱动功能正常。空闲时进入待机状态。 在研发阶段测试时一切正常,但是批量生
产时发现产品无法进入低功耗或者说表现为耗电过大。
3. 问题分析与定位
首先查找软件设计本身,包括各种外设的配置以及进入低功耗前的各种处理,并未发
现任何异常,随即简化软件在评估板上烧录代码,然后连接电流表,功耗一切正常。经过
多次验证,每次都能进入低功耗。
这样看起来就非常奇怪了,客户的硬件也没什么特殊地方。后来再次检查客户的整个
流程发现,客户的烧录和测试是一直带电的,因为是电子烟产品,上面的电池是一直连接
的。设计调查实验发现,客户的产品只要经过一次断电过程,再次上电就全部正常。而我
们平时因测试低功耗电流需求,通常都是去掉烧录器的连接,避免额外电流消耗,所以都
经过了断电过程,没有发现任何异常。而这种带有电池的产品,才会有机会发现。基于生
产效率和产品终身带电池的特殊性,进行断电工序很难,不利于大规模生产。
那么问题来了,究竟是什么原因引起烧录完不能正常进入低功耗模式呢?带着问题进
行查找原因。外设的查找比较容易,都是标准的并且简化掉了很多外设,那么会不会是传
统外设之外的因素呢?
按照这个方向查找,想到了调试模块。
LAT1035
LAT1035 - Rev 1.0 page 2/4
1. 异常寄存器状态
进一步查看发现烧录器 DBG_STOP 位置 1。如上图。
2. 寄存器位功能
如手册所描述,如果该位被置位的话,那么在低功耗下时钟并没有关闭,并且可以继续
执行代码,所以芯片不能进入低功耗模式。于是对应的解决办法也出来了,进入低功耗前增加语
句清除代码即可。