赞
踩
MN316 OpenCPU模式下的电源及休眠模式主要功能函数包含模组“上电原因”,“模组电源模式”,“模组深睡眠模式”,“模组重启”。本文从使用流程、接口介绍、Demo使用方法和常见问题四个方面介绍如何实现MN316模组的休眠功能。
一、MN316上电到休眠流程
以下流程图为使用MN316 OpenCPU SDK 上电到休眠功能时的常见流程介绍。
二、接口介绍
PM功能主要包含以下接口,可在cm_pm.h中查看。
2.1 获取模组上电原因
图1获取模组上电原因函数
图2模组上电原因枚举
图2定义了几个模组上电原因的枚举类型,调用接口cm_pm_get_power_on_reason()可return相应的模组上电原因。
2.2 设置模组电源standby模式
图3设置模组电源standby模式函数
pm_mode: 0--关闭standby模式;
pm_mode: 1--开启standby模式。
关于standby前睡眠模式的详细介绍可参见模组硬件设计手册,一般不推荐使用standby模式。
2.3 获取模组电源standby模式
图4获取模组电源standby模式函数
pm_mode: 0--关闭standby模式;
pm_mode: 1--开启standby模式。
2.4 上锁深睡眠模式
图5上锁深睡眠模式函数
执行此函数关闭模组深睡眠,模组将无法进入深睡眠状态。
2.5 解锁深睡眠模式
图6解锁深睡眠模式函数
执行此函数打开模组深睡眠,当模组满足进入深度休眠条件时,即可进入深睡眠状态。并不是说调用此函数,模组立即就能进入深睡眠状态。
2.6 模组重启
图7模组重启函数
执行此函数可让模组立即重启,type为重启类型代码,为预留接口。
三、Demo使用方法
在SDK demo中含有重启模组、打开及关闭深度睡眠,打开关闭standby浅睡眠的测试函数,只需按照cm_demo_main.c中的测试命令测试即可。
3.1 编译demo测试固件
图8 DEMO测试指令
若要使用demo中的测试功能,需使用编译命令build.bat dbrs_h0 demo,其中dbrs_h0需要根据实际使用模组型号来选择对应参数编译。
3.2 测试命令:CM:REBOOT
图9串口输入指令测试模组重启
3.3 测试命令:CM:REBOOT
图10串口输入指令测试模组浅睡眠
3.4 测试命令:CM:SLEEP
在模组AT串口输入CM:SLEEP:1 ,一段时间后模组进入深睡眠状态,AT串口发指令无任何反应。
图11串口输入指令测试模组深睡眠
图12短按开发板睡眠按键后唤醒注释
四、常见问题
1、为什么模组不是在执行cm_pm_work_unlock()后立即进入深度休眠?
因为此函数只是允许模组进入深度休眠,模组是否能进入深度休眠还需要满足以下条件:
(1)在插入SIM卡,开启深睡眠时,若eDRX协议可睡眠时长大于100s,PSM协议可睡眠时长大于4s,在进入eDRX/PSM模式后,模组会进入深睡眠;
(2)模组在搜索完全频段,依然驻网失败后,会进入深睡眠,首次睡眠时长为60s,后续逐步倍增,最大24h;
(3)模组在上电后输入AT+CFUN=0或AT+CGATT=0命令或配置的上电不接入网络,均在延迟深睡时间到了后自动进入深睡眠。
2、模组从深睡眠唤醒的方式有哪几种?
(1) T3412定时器超时唤醒。
(2) RST_WAKEUPIN高电平唤醒,需保持高电平一定时间。模组被唤醒后,发送AT命令才有响应。
注意: 释放RST_WAKEUPINP唤醒信号后,需等待时间t≥40ms,才能进行AT命令操作。
MN316上电默认是释放了睡眠锁(省电锁)的,如需进行数据业务需要先执行上锁,对应的接口是cm_pm work lock()。
注意:解锁次数=锁次数,调用多少次上锁就需要多少次解锁才能进入深睡眠。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。