|
||
---|---|---|
.. | ||
gcc | ||
command.c | ||
command.h | ||
main.c | ||
prj_config.h | ||
readme.md |
readme.md
pm 示例工程
pm 示例工程展示了XRadio SDK中进行休眠唤醒的代码实现方法。
本工程中提供以下模块功能使用的示例:
- 进入sleep低功耗模式
- 进入standby低功耗模式
- 进入hibernation低功耗模式
- 配置uart0中断作为唤醒源
- 配置timer 10s作为唤醒源
- 配置wlan作为唤醒源,检测是否连接AP
- 配置wakeup io 5下降沿触发中断作为唤醒源
- 配置wakeup io debounce为17个32K晶振cycle
- 测试不同dtim下的最低联网功耗
适用平台
本工程适用以下芯片类型:
- XR806系列芯片
本工程适用以下评估板类型:
- 底板:XR806_EVB
- 模组: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: 必选项,配置使用网络功能
模块依赖
必选项
- libpm.a: 电源管理核心模块
- libxrwireless.a: 网络驱动核心模块
可选项
- N/A
工程说明
本工程通过串口UART0打印信息演示pm模块的sleep/standby/hibernation/wakeup功能的使用。
操作说明:
- 使用串口线连接UART0接口
- 编译工程,烧录镜像,复位启动
- 系统启动后,可以通过串口软件看到示例的打印信息
XRadio SDK的编译、烧写等操作方式的说明可在以下地址获取: https://github.com/XradioTech/xradiotech-wiki
控制命令
- 联网操作 进行网络唤醒时,必须完成联网操作,通过以下命令可以完成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的配置。
代码流程
- main()入口: A)平台相关初始化 B)打印pm基本功能信息 C)等待3秒
- 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作为唤醒中断
- standby流程: A)通过cmd命令链接AP,例如: 步骤1:net sta config ap_ssid [ap_psk] 步骤2:net 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作为唤醒中断
- 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.休眠期间需要工作并唤醒系统的设备,需要设置成可工作的低功耗模式。 上述检查都进行后,功耗仍然不能降低至合理值的,需要测试各个分量的功耗,依次找出不合理的分量。
参考文档
文档资源
- 没有
WiKi资源
- 没有