Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PM电源管理
功耗调优
RT-Thread精通PM功耗调优 - lptimer篇
发布于 2020-11-05 09:44:57 浏览:2813
订阅该版
[tocm] [RT-Thread 电源管理与功耗调优系列 - 目录](https://club.rt-thread.org/ask/article/3419.html) [RT-Thread精通PM功耗调优 - 思想篇](https://club.rt-thread.org/ask/article/2296.html) [RT-Thread精通PM功耗调优 - lptimer篇](https://club.rt-thread.org/ask/article/2300.html) [RT-Thread精通PM功耗调优 - 引脚篇](https://club.rt-thread.org/ask/article/2304.html) [RT-Thread精通PM功耗调优 - 线程篇](https://club.rt-thread.org/ask/article/2305.html) [RT-Thread精通PM功耗调优 - 外设篇](https://club.rt-thread.org/ask/article/2307.html) [RT-Thread精通PM功耗调优 - Tickless篇](https://club.rt-thread.org/ask/article/2324.html) [RT-Thread精通PM功耗调优 - 专用LOG篇](https://club.rt-thread.org/ask/article/2338.html) [实践:RT-Thread PM管理实战 系列](https://club.rt-thread.org/ask/article/2282.html) [上手:产品功耗管理与调优经验分享 系列](https://club.rt-thread.org/ask/article/2707.html) [应用:PM组件应用与经验分享 系列](https://club.rt-thread.org/ask/article/292.html) ## 背景 * RT-thread 的低功耗管理组件(PM),部分工程师已经开始用起来了,当然,实际操作起来,会面对很多的问题,至少我开始接触功耗管理时是这样的状态。 * 部分工程师可能对经验【嗟来之食】不感兴趣,部分工程师却更想获取一线调试经验,实际用到自己的产品上去。 * 我这里主要谈一下大家使用PM框架,使用Tickless模式下LPTimer,遇到的问题与解决思路。避免大家重复提问问题,遇到问题有个参考。 ## 问与答 - ### 问题:看你给的例子rtt_pm2 测试程序里没有PM_SLEEP_MODE_DEEP? 答:这是新PM框架的使用方法。 * 系统刚上电时,如果开启了PM框架(初始化),系统上电功耗模式需要有一个预设模式。 * 新PM框架,明确规定,没有任何request,就要进入更低功耗模式(默认为DEEPSLEEP),上电后,没有任何业务request,会造成无任何request,若进入DEEPSLEEP,会造成外设等无法正常初始化工作,因此,新PM框架初始化时,request None 模式,系统启动完后,不睡眠,需要release掉这个初始的none模式。 * request 是往高功耗的请求的,你请求了None,请求了idle,请求了light,系统会决策为:none。高功耗的理解,可以认为保证所有业务正常工作的模式。既然request 高功耗,就不用request deepsleep(这个是默认的最低功耗场景)。 * 思路是平时一直是DEEP,需要其他高功耗模式直接请求。 * 使用老版本PM,依旧建议request的使用为:请求高功耗。只是开机初始化完成后,request一下deepsleep,否则,系统根本不能deepsleep! - ### 问题:平时没事一直DEEPSLEEP,系统tick不跑后,通过什么来唤醒的呢? 答:这个deepsleep是我们假定的最深度的睡眠模式(如STOP2、STOP模式) * 并不是强加给用户的,用户可以在drv_pm.c适配时,deepsleep 场景下什么都不干,或进入wfi 等轻睡眠模式。这里强调:用户的场景模式实现,用户说了算。 * 用户把deepsleep,按照stm32l4例程改为stop2(深睡眠),发现无法唤醒了,发现systick(系统默认tick)不工作了,怎么办?这里假定你确实需要深睡眠,通过阅读【MCU datasheet与参考手册】,了解到STOP2下的唤醒源(外部中断、RTC alarm、Lptimer、复位等),相信,你清楚了如何唤醒。 * PM框架,使用Lptimer(低功耗定时器,非特别指定stm32l4 lptimer,任何可以在睡眠模式下工作的定时器都可以成为low power timer),进行周期性唤醒,补偿系统的tick,接管systick没完成的soft timer定时工作。 * 注意systick 与 lptimer是在进出睡眠模式时自动切换的,用户感知觉得软定时器业务一直在正常的工作。 * lptimer的定时时间,来自用户定义的软定时器定时时间,如果用户没有任何定时器,lptimer会很久醒来(16位定时器的话,65.535秒左右,1ms一个lptimer tick)。 - ### 问题:rt_thread_mdelay(4000),工作的原理是? 答:定时器!!延时4S! - ### 问题:无定时业务,无法唤醒 答:让PM进deepsleep,并且deepsleep适配为(stop2模式),不开lptimer,无外设的外部中断(gpio 中断)。进入深睡眠后,不会自动唤醒。 - ### 问题:有多个定时器,lptimer睡眠后何时唤醒? 答:最先超时的定时器,rt-thread的定时器,是排序的。把最先超时的定时器超时时间(剩余时间),设置到lptimer,用户不感知,感觉定时器正常在工作。只是,通过测量电流,发现MCU在空闲段是功耗最低的。(间歇性工作) - ### 问题:lptimer提供中断,唤醒mcu,执行过程? 答:睡在哪里,唤醒时,执行完中断处理,就会在哪里接着执行。 lptimer开了中断,能唤醒MCU,但没有设置中断ISR。因为不需要,唤醒后,CPU在睡眠函数的下一行执行!这时,lptimer->systick,软定时器的超时等检查工作,交给了系统软timer处理。 - ### 问题:感觉lptimer 16位定时器,不分频,只能最长65秒? 答:不了解业务处理,搞功耗,只能徒增烦恼。65唤醒后,如果没有业务,不到1ms,会继续进入deep,功耗估算一下,系统整机功耗:50mA,则: ``` 整机功耗* 工作时间(S)* 60 *24 /3600(一天:60*24分钟, /3600转换为:毫安时mAh) 50mA*0.001*60*24/3600=0.02mAh?(一天的唤醒功耗)。 ``` - ### 问题:是不是用了PM框架,我要处理每个线程?线程如何阻塞(停止)? 答:定时器,不需要的,可以在睡眠时停掉(唤醒后打开),深睡眠不运行过于频繁的切换,否则请使用轻睡眠模式(WFI)。 线程,原则上,不建议 while(1){delay; ops; delay},建议使用信号量、互斥量、消息队列、信号等。这样,没有信号消息时,线程是阻塞(休眠)的。 - ### 问题:功耗管理范围好宽啊? 答:是的 * 从底层到应用。硬件->驱动->OS->BSP->APP,甚至业务交互,算法。 * 功耗管理,管理外设,如LCD、TP、BT等, * 管理MCU外设,UART、SPI、I2C等, * 管理引脚,管理电源, * 管理线程, * 了解业务 - ### 问题:lptimer不能用,我的唤醒不了deepsleep? 答:查lptimer配置,如是否开启lptimer时钟。 - ### 问题:lptimer 只能配置为LSI,LSE可以吗? 答:可以,不过最好查手册确认配置 - ### 问题:开另外的定时器,可以是软件定时器吗?另外系统有多个软件定时器的话,如何确定以哪个时间定时器作为唤醒的时间呢? 答:定时器使用,参考rt-thread 官方文档,多个timer,最新超时的那个timer最先唤醒。 - ### 问题:rt-thread PM 组件的使用对用户是无感的吗? 就是上层应用开发就感觉不到 和非低功耗开发有啥区别 答:是的。 - ### 问题:lptimer工作在idle线程,要等业务忙完,想快速主动去进入某个睡眠模式? 答:release 掉这个睡眠模式之前的所有模式。自己感受下,快不快。 - ### 问题:还是不清楚怎么入手功耗管理,硬件?软件?经验? 答:实践。需要功耗管理时,使用,并解决功耗问题。通过功耗拆解,了解功耗的组成,了解如何降低功耗。通过了解业务,让耗电较长的业务运行时间不要太长,等等,请参看之前的功耗调优文章。 - ### 问题:RTC 超长定时,能否用于PM框架? 答:除了rt-thread PM框架,用户皆可自行实现、适配。 - 不采用rt-thread PM框架,依旧可以自己搞功耗。 - 框架,只是为了方便使用。所以你可以使用standby模式,定时一年,然后唤醒复位系统,只要你愿意。
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
张世争
学以致用
文章
131
回答
802
被采纳
173
关注TA
发私信
相关文章
1
STM32F103的低功耗
2
最近用rtthread系统下AD采样并低功耗,中断响应不及时
3
rt-thread低功耗休眠应用问题请教
4
关于RTT对低功耗的支持
5
RT-Thread怎么休眠实现低功耗。
6
RT-Thread V3.0支持的低功耗,OS会自行进入吗?
7
关于RTThread3.0低功耗休眠模式
8
RTT3.0的bsp包中哪些MCU自带低功耗定时器?
9
关于低功耗上次说针对L4出个BSP的,怎么迟迟不见呀
10
低功耗问题。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部