[AIROC™ 蓝牙] 【英飞凌CYW20829测评】+ RTC低功耗特性

[复制链接]
671|0
 楼主| YangTwo 发表于 2024-7-21 12:49 | 显示全部楼层 |阅读模式
本帖最后由 YangTwo 于 2024-7-21 11:56 编辑

本次实验将涉及如何进入深度睡眠和休眠模式,并使用RTC警报唤醒。将MCU从深度睡眠和休眠模式唤醒。


软硬件环境:
  • ModusToolbox™ v3.1 or later (tested with v3.1)
  • Board support package (BSP) minimum required version for:
  • CYW920829M2EVK-02: v1.0.1
  • Programming language: C
  • Associated parts: All PSoC™ 6 MCU parts, AIROC™ CYW20829 Bluetooth® LE SoC and AIROC™ CYW89829 Bluetooth® LE SoC

主循环检查用户按钮是否被按下以及按了多长时间。

如果短按(小于2秒),设置RTC报警,然后进入深度睡眠模式;10秒后产生RTC报警中断,然后通过UART打印DeepSleep唤醒信息。

若长按该按钮(大于2秒),设置RTC报警,将设备从休眠模式唤醒的源配置为RTC报警,系统进入休眠模式;RTC告警在10秒后产生,导致MCU复位。主程序在cyhal_system_get_reset_reason()函数的帮助下检查重置的原因是否为Hibernate唤醒。如果重置的原因是Hibernate唤醒,那么通过UART打印Hibernate唤醒信息。

顺便提一下,在CPU Active功率模式下,看门狗计数器有能力向CPU发出中断请求。在CPU休眠和深度睡眠电源模式下,它可以向唤醒中断控制器(WIC)发送中断请求

  • 活动模式(Active Mode):在此模式下,WDT能够向CPU发送中断,CPU接收中断请求并继续执行中断服务程序(ISR)。ISR负责清除中断
  • 休眠或深度休眠模式:来自WDT的中断请求直接发送到WIC。WIC负责唤醒CPU。一旦CPU确认了中断请求,它就继续执行执行ISR。ISR固件负责在其操作中清除中断
  • Hibernate模式:很少有外设(如WDT)保持活动状态。任何旨在唤醒的中断设备在此模式下将导致设备复位。没有特定的中断服务程序或与此特定模式相关的机制

实物测试:

烧录程序后,短按SW2进入DeepSleep模式:



10s钟后,退出低功耗模式。


长按SW2进入Hibernate模式。


10s钟后,退出低功耗模式。


在代码层面,可以通过调用如下API来分别进入DeepSleep模式和Hibernate模式。
  1.                 /* Go to deep sleep */
  2.                 cyhal_syspm_deepsleep();

  3.                 /*Go to hibernate and configure the RTC alarm as wakeup source*/
  4.                 cyhal_syspm_hibernate(CYHAL_SYSPM_HIBERNATE_RTC_ALARM);

进而调用:
  1. cy_rslt_t cyhal_syspm_deepsleep(void)
  2. {
  3.     if(_cyhal_deep_sleep_lock != 0)
  4.     {
  5.         return CYHAL_SYSPM_RSLT_DEEPSLEEP_LOCKED;
  6.     }
  7.     return _cyhal_syspm_deepsleep_internal();
  8. }
  1. static cy_rslt_t _cyhal_syspm_deepsleep_internal(void)
  2. {
  3. #if defined(COMPONENT_CAT1A) || defined(COMPONENT_CAT1B) || defined(COMPONENT_CAT1C) || defined(COMPONENT_CAT1D)
  4.     return Cy_SysPm_CpuEnterDeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
  5. #elif defined(COMPONENT_CAT2)
  6.     return Cy_SysPm_CpuEnterDeepSleep();
  7. #endif

  8. }

我们这款cyw28029非常适合蓝牙低功耗领域的应用,而且有多种功耗模式可供用户选择,给设计开发提供了非常大的帮助。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

110

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部