前言:物联网的大部分设备都是电池供电的,设备本身低功耗对设备使用寿命至关重要,今天就以实际调试经验,聊一聊stm32的低功耗调试。
1、stm32在运行状态下的功耗
上图截图自stm32l15x手册,stm32l15x系列最大运行在32M;如果在最大频率下运行,那么mcu功耗是214uA*32=6848uA=6.8mA,如果还有外设,那么整个系统功耗可能会更多。
因此,在调试功耗的时候,可以用上面的6.8mA当做一个参考,判断mcu有没有进入低功耗状态(stop,standby等)。
2、对于没有使用到的IO口处理
经过反复试验测试,对于没有使用的io配置为推挽输出,且输出高电平。
3、Adc采样引脚处理
软件上配置为模拟输入,硬件采样电阻要尽可能的大,比如2M,假如VBAT=3.6V,那么耗电仅仅为I=U/R=3.6/(4*1000000)=0.9uA。
4、上下拉IO口处理
硬件上拉,IO要配置成上拉,硬件下拉,IO口要配置成下拉。
5、传感器供电处理
采样的时候供电,其他时间断电;通过PB5控制4.2V的输出,因此在休眠的时候可以拉低PB5,节约功耗。
6、三极管的be极或者MOS管的gd极耗电
在调试的时候,因为某些原因,直接把R19的右边,接在了mos管的g极,在PB6拉高后,mos管导通,gd极的压降很小,相当于将3.3v直接加在了1k的电阻上,粗略计算下,3.3/1000=330mA电流,因为在开机后PB6需要一直保持高电平,所以在实际设计上,三极管的基极,mos管的g极,需要加大电阻。
7、射频开关
通过PB7供电、PB2收发切换,休眠的时候设置为开漏输出。
8、对于外设使用到的io,休眠时候的处理
如果休眠的时候外设要工作,那就不要动,保持原样;
如果休眠的时候外设不工作,处理如下:
对于spi,在休眠的时候SPI去使能,IO口配置成输入上拉输入即可;
对于串口,也是同样的处理。
9、如果功耗还是降不下来怎么办?
终极方法:直接把硬件供电断开,直接给mcu供电,再一步一步恢复供电电路,基本上就能找到耗电的地方。
近期博文推荐:
外包接单故事||基于LoRa的医院料架车监测
LoRa网关与平台通讯协议
如果觉得《STM32与LoRa低功耗调试总结》对你有帮助,请点赞、收藏,并留下你的观点哦!