|
前言 某客户OEM的一款基于STM32F415RG的产品时,发现RTC电池消耗异常,在VDD处于供电状态下测试VBAT引脚仍然存在24uA的消耗,造成VBAT域电池寿命缩短。 问题调研及症状
到客户现场进行调研后,该款产品客户只负责OEM硬件,并不负责软件。因此,对于此问题仅能从硬件原理图和PCB进行分析,RTC部分原理图如下图所示。
客户使用万用表串接到TP36处,在断开VDD和VDD正常供电的情况下分别测试VBAT引脚的电流消耗,现场进行了测试演示。
奇怪的现象发生了,VDD断电时VBAT引脚消耗电流为0.2uA,当VDD正常供电时反而VBAT引脚电流竟然是24.2uA。 问题分析与解决办法
理论上当VDD上电时STM32内部的电源监测电路会自动将VBAT域切换到VDD不会产生消耗才对,但是实际测试情况为什么电流消耗反而更高呢 ?
笔者尝试写了一个RTC的单元测试demo来复现此问题,但是运行笔者写的RTC测试程序时VBAT引脚无论VDD处于断电还是正常供电其电流消耗均是正常的。 由于MCU的软件并不是由客户开发的,也不清楚具体的外设配置和相关业务逻辑。此问题进度一度陷入停滞状态,只能确定问题的根因是由客户软件缺陷造成。
在思索的过程中,笔者突然想到STM32Cubeprogrammer的hot plug连接模式,可以在MCU正常运行时不复位线热连接,从而查看到相关外设的寄存器。
经过大量的寄存器比对和筛选,排查与VBAT相关的外设,最终把怀疑对象缩小到ADC上,在STM32Cubeprogrammer 的ADC寄存器窗口可以看到,软件使能了ADC_CH18采样,而ADC_CH18是ADC的一个内部采样通道,可以连接到VBAT引脚对其进行采样。
在STM32Cubeprogrammer里面将ADC1关闭,此时VBAT引脚上的电流消耗恢复正常。 结论: 在VDD正常供电时VBAT引脚上的电流消耗是由于开启了ADC_CH18引起,ADC_CH18在对VBAT引脚进行电压监测时所产生的消耗。 |
微信公众号
手机版