我正在尝试测量STM32L011F4微控制器的电流消耗。我尝试了STM在'stm32cubel0'中提供的STANDBY模式示例代码。使用万用表测量时,待机模式的电流消耗约为320μA。数据表显示,在-40°C至25°C的温度范围内,独立看门狗和LSI OFF时,最大电流消耗为0.6μA。代码如下所示。有没有人知道为什么目前的消费量超出预期?
console.log(response)
答案 0 :(得分:1)
你会发现这些'超低功率'声称有点诱饵 - 开关: - )
我一直在使用STML152x和STML071x。 > MY< 经验是你需要通过上拉/下拉禁用任何引脚(也就是:DeInit)以获得非常低的电流。例如,对于L073RZT6,我可以在STOP + RTC模式下将其降低到大约4uA,其中ext LSE为32K,但只能通过杀死所有的perf,然后我必须在唤醒时再次使用Init()。我认为上拉/下拉会以某种方式阻止内部Pwr Reg真正关闭到最低功率 - 就像我说的那样,这是猜测。
我也放弃了使用任何“PWR_WAKEUP_PINx”,因为这些似乎增加了大约35uA的睡眠电流(每个规格它们有内部下拉)。相反,我将该引脚定义为GPIO_Input(使用外部100K上拉)并启用IRQ支持。它从STOP中醒来就好了。在我的产品中,我有一个磁簧开关,所以用户在外壳上“滑动”,磁铁唤醒设备。这个GPIO是我睡觉时没有设置为GPIO_Analog的唯一GPIO(并完成我的4uA)。幸运的是,我们的产品每5,15甚至60分钟就会醒来一次。因此唤醒/睡眠的CPU成本并不像它在DeepSleep中发现的99.999%的时间那么重要。
使用L152x(Cortex M3),我能够在SRAM中“切换”并“缓存” - > MODER和 - > PUPDN值,然后在睡眠前清除。然后醒来后,恢复这些,生活是美好的。我没有发现在L07x(仅限CM0)上工作,所以必须做更多的工作。我知道这听起来有点违反直觉,这些芯片设计为深度睡眠,但我花了几周的时间试用n-error才能获得超低的睡眠电流!
另一个警告,STM32 CubeMX无法正常处理仅使用HSI的唤醒。芯片唤醒假设可以切换到MSI,所以要么启用MSI,要么读取有关如何启用唤醒使用-HSI时钟的文档(在RCC-> CFGR中有点)