sdk-hwV1.3/lichee/xr806/appos/project/example/pm/readme.md

170 lines
5.2 KiB
Markdown
Raw Normal View History

2024-05-07 10:09:20 +00:00
# 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秒
> 2. 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作为唤醒中断
> 3. 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作为唤醒中断
> 4. 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. 没有