Luat 休眠和唤醒(Lua开发模式下)怎么做?

请先 登录 后评论

1 个回答

秦鹏 - Luat菜鸟
  • 模块休眠有两种概念:
2没有进入飞行模式的休眠,下文称之为“浅休眠”
  • 深休眠

代码中调用misc.setflymode(true)进入深休眠, 调用misc.setflymode(false)退出深休眠。 深休眠状态下,会关闭语音和数据业务的协议栈,所以不能收发短信, 不能通话,不能上网进行数据传输,可以正常操作GPIO, 可以正常操作定时器。深休眠状态下的单模块功耗为1mAh, 如果还有GPS,UART等外设在运行,功耗另算。

  • 浅休眠

一般情况下,用户是不需要写代码去控制进入或者退出浅休眠状态, 系统自动控制进入和退出浅休眠 浅休眠状态下,不会关闭语音和数据业务的协议栈, 所以可以收发短信,可以通话,可以上网进行数据传输,可以正常操作GPIO,可以正常操作定时器 进入浅休眠状态后,收发短信时,会自动退出浅休眠,收发短信结束后,会立即自动进入浅休眠。 进入浅休眠状态后,通话时,会自动退出浅休眠,通话结束后,会立即自动进入浅休眠。 进入浅休眠状态后,数据传输时,会自动退出浅休眠,数据传输结束后,会立即自动进入浅休眠。 浅休眠状态下的单模块功耗为3.3mAh,如果还有GPS,UART等外设在运行,功耗另算。

  • 进入浅休眠状态后,UART无法正常工作,必须先退出浅休眠,UART才能正常收发数据

  • 脚本中有pm.wakepm.sleep接口,这两个接口是控制浅休眠的,在什么情况下使用这两个接口呢,举例说明:

  • 第一种场景:

UART接了外设,如果项目对功耗没有要求,可以直接写一行代码pm.wake("myuartwake"),这样软件永远不会进入浅休眠,UART可以一直正常收发数据如果项目要求低功耗,除了uart接外设之外,还要有一个gpio中断,接在外设上:

2.模块检测到gpio中断后,调用代码pm.wake("myuartwake"),如果此时模块处于浅休眠状态,则会退出浅休眠;然后再uart.setup
3.uart就可以调用uart.read和uart.write正常收发数据
4.在uart不需要工作时,模块软件调用代码uart.close,然后再调用pm.sleep("myuartwake"),就可以进入浅休眠
  • 第二种场景:

只有单模块功能,没有UART、SPI、I2C等外设,例如:只用到了通话, 短信,gprs数据传输,模块内部集成的gps功能,这种情况下pm.wake 和pm.sleep接口是没有任何意义的,因为软件中的所有功能都是自动去控制 进入和退出浅休眠,并不会因为代码中执行pm.sleep而降低系统功耗,但 是可能会因为代码中执行pm.wake而增加功耗,这种情况下如果想降低功耗, 只能在软件逻辑上进行处理,例如降低gprs数据传输频率,减少gps 开启时间等。

请先 登录 后评论
  • 2 关注
  • 2 收藏,3251 浏览
  • qin0036 提出于 2018-08-24 06:46

相似问题