main.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. --[[
  3. -- 演示一下pm相关API的功能
  4. PROJECT = "pmdemo"
  5. VERSION = "1.0.0"
  6. log.info("main", PROJECT, VERSION)
  7. -- sys库是标配
  8. _G.sys = require("sys")
  9. log.style(1)
  10. -- 注意:本demo使用luatools下载!!!
  11. -- 注意:本demo使用luatools下载!!!
  12. -- 注意:本demo使用luatools下载!!!
  13. -- 启动时对rtc进行判断和初始化
  14. local reason, slp_state = pm.lastReson()
  15. log.info("wakeup state", pm.lastReson())
  16. if reason > 0 then
  17. pm.request(pm.LIGHT)
  18. log.info("已经从深度休眠唤醒,测试结束")
  19. mobile.flymode(0, false)
  20. sys.taskInit(function()
  21. sys.wait(10000)
  22. end)
  23. else
  24. log.info("普通复位,开始测试")
  25. --测试最低功耗,需要下面3个GPIO操作
  26. gpio.setup(23,nil)
  27. gpio.close(33)
  28. gpio.close(35) --这里pwrkey接地才需要,不接地通过按键控制的不需要
  29. sys.taskInit(function()
  30. pm.power(pm.GPS, true) --打开780EG内部GPS电源,注意如果真的用GPS,需要初始化UART2
  31. pm.power(pm.GPS_ANT, true) --打开780EG内部GPS天线电源,注意如果真的用GPS,需要初始化UART2
  32. log.info("等联网完成")
  33. sys.wait(20000)
  34. pm.power(pm.GPS, false) --打开780EG内部GPS电源,注意如果真的用GPS,需要初始化UART2
  35. pm.power(pm.GPS_ANT, false) --打开780EG内部GPS天线电源,注意如果真的用GPS,需要初始化UART2
  36. -- lvgl刷新太快,如果有lvgl.init操作的,需要先停一下
  37. if lvgl then
  38. lvgl.sleep(true)
  39. end
  40. pm.power(pm.USB, false)-- 如果是插着USB测试,需要关闭USB
  41. pm.force(pm.LIGHT)
  42. -- 如果要测试保持网络连接状态下的功耗,需要iotpower来测试 https://wiki.luatos.com/iotpower/power/index.html 购买链接 https://item.taobao.com/item.htm?id=679899121798
  43. -- 如果只是看普通休眠状态下的底电流,需要进入飞行模式
  44. -- log.info("普通休眠测试,进入飞行模式来保持稳定的电流")
  45. -- mobile.flymode(0, true)
  46. log.info("普通休眠测试,普通定时器就能唤醒,10秒后唤醒一下")
  47. sys.wait(10000)
  48. pm.force(pm.IDLE)
  49. pm.power(pm.USB, true)
  50. sys.wait(1000)
  51. log.info("普通休眠测试成功,接下来深度休眠,进入飞行模式或者PSM模式来保持稳定的电流,不开飞行模式会周期性唤醒,大幅度增加功耗")
  52. mobile.flymode(0, true)
  53. sys.wait(10000)
  54. log.info("深度休眠测试用DTIMER来唤醒")
  55. -- EC618上,0和1只能最多2.5小时,2~6可以750小时
  56. pm.dtimerStart(0, 10000)
  57. pm.force(pm.DEEP) --也可以pm.HIB模式
  58. pm.power(pm.USB, false) -- 如果是插着USB测试,需要关闭USB
  59. log.info("开始深度休眠测试")
  60. sys.wait(3000)
  61. log.info("深度休眠测试失败")
  62. end)
  63. end
  64. ]]
  65. -- 演示一下周期性工作-休眠的demo
  66. PROJECT = "sleepdemo"
  67. VERSION = "1.0.1"
  68. log.info("main", PROJECT, VERSION)
  69. -- sys库是标配
  70. _G.sys = require("sys")
  71. log.style(1)
  72. -- 注意:本demo使用luatools下载!!!
  73. -- 注意:本demo使用luatools下载!!!
  74. -- 注意:本demo使用luatools下载!!!
  75. -- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
  76. if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
  77. pm.power(pm.PWK_MODE, false)
  78. end
  79. -- 启动时对rtc进行判断和初始化
  80. local reason, slp_state = pm.lastReson()
  81. log.info("wakeup state", pm.lastReson())
  82. if reason > 0 then
  83. pm.request(pm.LIGHT)
  84. mobile.flymode(0, false)
  85. log.info("已经从深度休眠唤醒")
  86. end
  87. --测试最低功耗,需要下面3个GPIO操作
  88. if rtos.bsp() == "EC618" then
  89. gpio.setup(23,nil)
  90. --gpio.close(33) --如果功耗偏高,开始尝试关闭WAKEUPPAD1
  91. end
  92. if rtos.bsp() == "EC718P" then
  93. gpio.close(22) --20-42,21-43,22-44 718P对应IO
  94. gpio.setup(44,nil,gpio.PULLUP) --如果全IO开发板功耗偏高,打开这个
  95. end
  96. gpio.close(35) --这里pwrkey接地才需要,不接地通过按键控制的不需要
  97. sys.taskInit(function()
  98. log.info("工作14秒后进入深度休眠")
  99. sys.wait(14000)
  100. mobile.flymode(0, true)
  101. log.info("深度休眠测试用DTIMER来唤醒")
  102. sys.wait(100)
  103. pm.power(pm.USB, false) -- 如果是插着USB测试,需要关闭USB
  104. pm.force(pm.HIB)
  105. pm.dtimerStart(3, 40000)
  106. sys.wait(5000)
  107. pm.power(pm.USB, true) -- 如果是插着USB测试,需要关闭USB
  108. log.info("深度休眠测试失败")
  109. mobile.flymode(0, false)
  110. pm.request(pm.LIGHT)
  111. while true do
  112. sys.wait(5000)
  113. log.info("深度休眠测试失败")
  114. end
  115. end)
  116. -- 用户代码已结束---------------------------------------------
  117. -- 结尾总是这一句
  118. sys.run()
  119. -- sys.run()之后后面不要加任何语句!!!!!