sdk-hwV1.3/lichee/xr806/appos/project/example/pm
梁志勇 09427e37ea chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
..
gcc chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
command.c chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
command.h chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
main.c chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
prj_config.h chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00
readme.md chore(other):sdk 裁减 2024-05-07 18:09:20 +08:00

readme.md

pm 示例工程

pm 示例工程展示了XRadio SDK中进行休眠唤醒的代码实现方法。

本工程中提供以下模块功能使用的示例:

  1. 进入sleep低功耗模式
  2. 进入standby低功耗模式
  3. 进入hibernation低功耗模式
  4. 配置uart0中断作为唤醒源
  5. 配置timer 10s作为唤醒源
  6. 配置wlan作为唤醒源检测是否连接AP
  7. 配置wakeup io 5下降沿触发中断作为唤醒源
  8. 配置wakeup io debounce为17个32K晶振cycle
  9. 测试不同dtim下的最低联网功耗

适用平台

本工程适用以下芯片类型:

  1. XR806系列芯片

本工程适用以下评估板类型:

  1. 底板XR806_EVB
  2. 模组XR806_MD01

本工程在基于"XR806_MD01"的“XR806_EVB”板上测试通过。 若需要在其他适用芯片和评估板上运行本工程请根据快速指南《XRadio_Quick_Start_Guide-CN》的提示进行相关配置修改。

XRadio Wireless MCU芯片和评估板的更多信息可在以下地址获取 https://docs.xradiotech.com

工程配置

defconfig

  • N/A

Makefile

  • N/A

board_config.h

  • N/A

board_config.c

  • N/A

prj_config.h

  • PRJCONF_NET_EN: 必选项,配置使用网络功能

模块依赖

必选项

  1. libpm.a 电源管理核心模块
  2. libxrwireless.a 网络驱动核心模块

可选项

  • N/A

工程说明

本工程通过串口UART0打印信息演示pm模块的sleep/standby/hibernation/wakeup功能的使用。

操作说明:

  1. 使用串口线连接UART0接口
  2. 编译工程,烧录镜像,复位启动
  3. 系统启动后,可以通过串口软件看到示例的打印信息

XRadio SDK的编译、烧写等操作方式的说明可在以下地址获取 https://github.com/XradioTech/xradiotech-wiki

控制命令

  1. 联网操作 进行网络唤醒时必须完成联网操作通过以下命令可以完成AP的连接。
$ net sta config ssid_example
$ net sta enable

代码结构

#本工程
.
├── gcc
│   ├── defconfig         # 本工程的配置选项,可覆盖全局默认配置
│   └── Makefile          # 本工程的编译规则可指定src、lib、ld、image.cfg、board_config等文件
├── main.c                # 本工程的入口,完成平台初始化和进入休眠唤醒测试
├── command.c             # 本工程的控制台命令入口
├── command.h
├── prj_config.h          # 本工程的配置选项,主要用于功能的选择。
└── readme.md             # 本工程的说明文档

#本程用到XRadio SDK的其他配置文件
.
└── project
    └── common
        └── board
            └── xr806_dig_ver          #在project/Kconfig默认指定使用xr806_dig_ver的板级配置
                ├── board_config.h     #本工程的板级配置,
                └── board_config.c     #本工程的板级pin mux的配置。

代码流程

  1. main()入口: A平台相关初始化 B打印pm基本功能信息 C等待3秒
  1. sleep流程 A配置uart0作为唤醒中断 B配置timer 10s作为唤醒中断 C配置wakeup io 5作为唤醒中断且配置wakeup io debounce为17个32K晶振cycle D进入sleep低功耗模式 E被唤醒后CPU继续执行 F关闭uart0作为唤醒中断 G关闭timer作为唤醒中断 H关闭wakeup io作为唤醒中断
  1. standby流程 A通过cmd命令链接AP,例如: 步骤1net sta config ap_ssid [ap_psk] 步骤2net sta enable B配置wlan检测是否连接AP C配置timer 10s作为唤醒中断 D配置wakeup io 5作为唤醒中断且配置wakeup io debounce为17个32K晶振cycle E进入standby低功耗模式 F被唤醒后CPU继续执行 G关闭wlan检测AP功能 H关闭timer作为唤醒中断 I关闭wakeup io作为唤醒中断
  1. hibernation流程 A配置timer 10s作为唤醒中断 B配置wakeup io 5作为唤醒中断且配置wakeup io debounce为17个32K晶振cycle C进入sleep低功耗模式 D被唤醒后会reset soc重新启动

常见问题

问1系统进入不了低功耗模式 答:检查系统中断产生情况,如果休眠过程中,系统产生了中断,系统休眠流程会被打断而退出。

问2系统不能唤醒不了 答1.检查唤醒源配置是否正确wake gpio 编号和状态是否正确 2.wakeup timer 的时间是否合理,如果 wakeup timer 时间较短,系统还没完全进入休眠,则 wakeup timer会提前产生中断并被清理不能起到唤醒系统的作用。

问3进入低功耗模式后功耗偏高 答1.检查所有设备是否处于合理状态,休眠期间不使用的设备需要设置处于低功耗模式或关闭状态。 2.休眠期间需要工作并唤醒系统的设备,需要设置成可工作的低功耗模式。 上述检查都进行后,功耗仍然不能降低至合理值的,需要测试各个分量的功耗,依次找出不合理的分量。

参考文档

文档资源

  1. 没有

WiKi资源

  1. 没有