170 lines
5.2 KiB
Markdown
Executable File
170 lines
5.2 KiB
Markdown
Executable File
# 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,例如:
|
||
步骤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作为唤醒中断
|
||
|
||
> 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. 没有
|