STM32WLE5之lora:6、易智联LM40评估板ADC定时采集上报低功耗处理

  • 前言
  • 一、 低功耗模式选择
    • 1、 STM32WLE工作模式
    • 2、 低功耗模式选择
  • 二、 低功耗测试执行
    • 1、 低功耗处理简介
    • 2、 低功耗处理
    • 3、 打开低功耗使能
  • 三、 低功耗测试
  • 四、 小结

前言

PingPong例程中已经提供了完整的低功耗处理框架,用户只需要打开应用低功耗宏定义即可进行测试。进行扩展时,用户只需在自己开发的功能模块,增加低功耗处理即可完成整个工程的低功耗处理。大大方便降低了用户的开发难度。


一、 低功耗模式选择

1、 STM32WLE工作模式

STM32WLE5具有Run、Sleep、LPRun、LPSleep、Stop0、Stop1、Stop2、Standby、Shutdown这些丰富的工作模式可供选择。如下图:

2、 低功耗模式选择

电池供电传感器一般都是定时上报工作模式,因此我们需要一个定时器;再者,我们希望唤醒后能够保持原来的参数,继续执行原来的程序。基于这两点选择了RTC+STOP2模式。
RTC+STOP2模式的典型电流1uA,也符合大部分应用场景的预期。

二、 低功耗测试执行

1、 低功耗处理简介

低功耗处理集中实现了的各个独立模块的低功耗处理需求,并在系统进入空闲模式时管理这些低功耗任务。例如,当UART2的DMA用于向控制台打印数据时,系统不得进入低于睡眠模式的低功耗模式,因为DMA时钟在停止模式下关闭。
每个需要低功耗管理的模块需在utilities_def.h中定义一个ID,最多可以定义32个ID。如下所示:

/******************************************************************************* LOW POWER MANAGER******************************************************************************/
/*** Supported requester to the MCU Low Power Manager - can be increased up  to 32* It lists a bit mapping of all user of the Low Power Manager*/
typedef enum
{/* USER CODE BEGIN CFG_LPM_Id_t_0 *//* USER CODE END CFG_LPM_Id_t_0 */CFG_LPM_APPLI_Id,CFG_LPM_UART_TX_Id,/* USER CODE BEGIN CFG_LPM_Id_t *//* USER CODE END CFG_LPM_Id_t */
} CFG_LPM_Id_t;

2、 低功耗处理

比如UART2的输出ID为CFG_LPM_UART_TX_Id 。每次调用打印输出是调用UTIL_ADV_TRACE_PreSendHook()禁止MCU进入STOP模式,在DMA处理完成后,并且判断队列里没有数据继续输出时调用UTIL_ADV_TRACE_PostSendHook()允许MCU进入STOP模式。
当所有的ID都允许MCU进入低功耗是MCU才会进入低功耗模式。在序列调度的空闲时真正的执行进入低功耗动作。如下:

void UTIL_SEQ_Idle(void)
{/* USER CODE BEGIN UTIL_SEQ_Idle_1 *//* USER CODE END UTIL_SEQ_Idle_1 */UTIL_LPM_EnterLowPower();/* USER CODE BEGIN UTIL_SEQ_Idle_2 *//* USER CODE END UTIL_SEQ_Idle_2 */
}

UTIL_LPM_EnterLowPower()的实现位于stm32_lpm.c,具体的执行动作UTIL_PowerDriver.EnterXxxxMode的实现位于stm32_lpm_if.c。

void UTIL_LPM_EnterLowPower( void )
{UTIL_LPM_ENTER_CRITICAL_SECTION_ELP( );if( StopModeDisable != UTIL_LPM_NO_BIT_SET ){/*** At least one user disallows Stop Mode* SLEEP mode is required*/UTIL_PowerDriver.EnterSleepMode( );UTIL_PowerDriver.ExitSleepMode( );}else{ if( OffModeDisable != UTIL_LPM_NO_BIT_SET ){/*** At least one user disallows Off Mode* STOP mode is required*/UTIL_PowerDriver.EnterStopMode( );UTIL_PowerDriver.ExitStopMode( );}else{/*** OFF mode is required*/UTIL_PowerDriver.EnterOffMode( );UTIL_PowerDriver.ExitOffMode( );}}UTIL_LPM_EXIT_CRITICAL_SECTION_ELP( );
}

3、 打开低功耗使能

系统应用的低功耗控制ID为CFG_LPM_APPLI_Id,在SystemApp_Init(void)中进行配置。如下:

/* Disable Stand-by mode */UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE);#if defined (LOW_POWER_DISABLE) && (LOW_POWER_DISABLE == 1)/* Disable Stop Mode */UTIL_LPM_SetStopMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE);
#elif !defined (LOW_POWER_DISABLE)
#error LOW_POWER_DISABLE not defined
#endif /* LOW_POWER_DISABLE */

宏LOW_POWER_DISABLE宏定义于sys_conf.h中,将其修改为“0”

/*** @brief Disable Low Power mode* @note  0: LowPowerMode enabled. MCU enters stop2 mode, 1: LowPowerMode disabled. MCU enters sleep mode only*/
#define LOW_POWER_DISABLE           0

三、 低功耗测试

1、 将串口选通开关S1、电源开关SW1断开;
2、 外部给模块供电时串入万用;
3、 测试电流如下图,休眠时电流1.4uA左右。

四、 小结

STM32WLE5微控制器基于意法半导体STM32L4超低功耗技术架构,还提供了SMPS动态电压调节器,可以进一步降低MCU的执行功耗。STM32WL是基于Lora低功耗物联网理想选择。


相关资源链接
文件中提供的易智联Demo板连接: https://item.taobao.com/item.htm?spm=a1z0k.7628869.0.0.4fbb1be2qSrsJg&id=655801203935&_u=t2dmg8j26111
PingPong中的CubeMX工程及BSP文件链接:
https://download.csdn.net/download/ww2801/7627778
低功耗ADC定时采集上报例程https://oshwhub.com/yz-link.cn/ji-yu-stm32wl-de-lm401-lora-ping-gu-ban

【STM32WLE5之lora:6、易智联LM40评估板ADC定时采集上报低功耗处理】相关推荐

  1. 【STM32WLE5之LoRa# 系列2、易智联LM401 评估板PingPong工程移植】

    STM32WLE5之LoRa# 系列2:易智联LM401 评估板PingPong工程移植 前言 一.开发环境 1.STM32CubeMX与STM32CubeIDE软件安装 2.下载STM32WL固件库 ...

  2. 【STM32WLE5之LoRa# 系列1、易智联LM401 评估板简介】

    STM32WLE5之LoRa# 系列1.易智联LM401 评估板简介 简介 一.LM401 LoRaWan评估板 二.原理图 1.LM401模块及LED 2.电源及串口选通开关 3.USB转串口 4. ...

  3. 【STM32WLE5之LoRa# 系列3、易智联LM401 评估板PingPong应用移植】

    STM32WLE5之LoRa# 系列3.易智联LM401 评估板PingPong应用移植 前言 一.系统初始化SYS_APP.c文件 二.中断stm32wlxx_it.c文件 三.PingPong的应 ...

  4. STM32WL开发之易智联LORA评估板上按键KEY的配置与应用

    前言:在前一篇<STM32WL开发之LORA评估板上通过GPIO控制LED>中已经基于易智联的LoRa评估板LM401-Pro-Kit介绍了在其Demo例程上如何实现GPIO控制LED闪烁 ...

  5. 易智联LM401模块学习(一)——初识Lora

    1.0.LORA背景及概述 LORA取自英文名 Long Range 及长距离大范围的意思.原本为一种线性调频扩频的物理层调制技术,2012年semtech收购了又法国年轻人创立的cycleo,并将这 ...

  6. 专访 | 泽云智联:我们更看重AI与人的交互易用

    泽云智联作为GPU云计算专业服务商,拥有众多类型丰富的显卡资源以及管理运行着多个顶级自建机房,专注于提供高安全.高性能.高稳定.易扩展的GPU云计算服务.此次参加世界人工智能大赛,本着学习的心态,相比 ...

  7. 万物智联时代的终端智能「管家」重磅升级:混合云IoT一体机

    简介:「混合云IoT一体机」边缘部署.开箱即用.安全稳定.智管易用,通过定制软件和硬件相结合,预先定制.集成.测试和优化,实现快速部署和远程运维,并提升后续系统可用性和运维效率,是万物互联时代企业数字 ...

  8. 万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机

    简介: 「混合云IoT一体机」边缘部署.开箱即用.安全稳定.智管易用,通过定制软件和硬件相结合,预先定制.集成.测试和优化,实现快速部署和远程运维,并提升后续系统可用性和运维效率,是万物互联时代企业数 ...

  9. python爬虫多url_Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘

    之前文章中所介绍的爬虫都是对单个URL进行解析和爬取,url数量少不费时,但是如果我们需要爬取的网页url有成千上万或者更多,那怎么办? 使用for循环对所有的url进行遍历访问? 嗯,想法很好,但是 ...

最新文章

  1. traceback异常打印
  2. LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
  3. LRU缓存实现(Java)
  4. ubuntu16.04的sudo设置为免密码(注意这里不是su免密码)
  5. 以太网RJ45 接线标准 线序(备忘)
  6. 如何融入到更积极的环境,促进技术提升
  7. 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务
  8. c #include如何找到文件_使用 MATLAB Function 模块集成 C 代码
  9. Red5java.util.concurrent.RejectedExecutionExceptio
  10. 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
  11. SQL Prompt 数据库提示工具
  12. 模拟调节器和数字计算机如何实现PID控制,模拟PID 调节器设计及数字化实现
  13. 【黑灰产犯罪研究】DDOS攻击
  14. MATLAB——网格图画法
  15. 英语打卡3:可数名词
  16. 如何提升智慧办公效率?华为云桌面不可少,畅享集中化管理运行
  17. 苹果电脑安装计算机一级,偷天换日!让普通笔记本安装苹果系统
  18. 疯狂脑机接口计划:马斯克的 “读心术”
  19. num find matlab,matlab中find函数的使用说明
  20. 华为路由器:ospf协议入门介绍

热门文章

  1. PostgreSQL教程--Ubuntu下PostgreSQL 安装教程
  2. LTS-局部时间步,自动调节步长技术
  3. Android ActivityManagerService(AMS)的Activity管理
  4. MySQL 时区异常
  5. go mod查看依赖关系
  6. 云服务提供商现状调查
  7. 微软为抢中国市场决定7月起半价销售Office2007
  8. 工商银行银联标准芯片卡
  9. C++ explicit关键字详解
  10. java的implements_Java之implements