DA14531(Cortex-M0+)之Wake-up Interrupt Controller (WIC)
Wake-up Interrupt Controller (WIC) to allow the processor to be powered down during sleep, while interrupt sources are still allowed to wake up the system.
唤醒中断中断器,允许处理器休眠时关闭电源和时钟,但中断源可以唤醒系统。具备独立的唤醒中断向量。
使用 Cortex-M 处理器的微控制器设计人员可以选择在其设计中包含 WIC。WIC 是一个小型中断检测逻辑,它反映了 NVIC 中的中断掩码功能。WIC 允许通过停止处理器的所有时钟信号,甚至将处理器置于状态保留状态,进一步降低处理器的功耗。当检测到中断时,WIC 向微控制器内部的电源管理单元 (PMU) 发送请求,以恢复处理器的电源和时钟信号,然后处理器可以唤醒、恢复作并处理中断请求。
WIC 功能的一个重要优点是它对软件是透明的。WIC 本身不包含任何可编程寄存器,它有一个耦合到 Cortex-M0/M0þ 处理器的 NVIC 的接口,中断掩码信息在睡眠期间自动从处理器传输到 WIC。在某些情况下 (取决于微控制器设备的设计) ,WIC 仅在深度睡眠模式 (设置了 SLEEPDEEP 位) 下激活,您可能还需要在微控制器中特定于设备的 PMU 中对其他控制寄存器进行编程,以启用 WIC 模式深度睡眠。
WIC 使 Cortex-M 处理器能够使用称为状态保持功率门控 (SRPG) 的技术来降低待机功耗。使用 SRPG,可以通过关闭逻辑的大部分部分来最大限度地减少顺序数字系统在睡眠期间的泄漏功率,在每个触发器中留下一个小的存储元件以保持当前状态。
并非所有基于 Cortex-M 处理器的微控制器都支持 WIC 功能。使用 WIC 降低功耗取决于所使用的应用和半导体工艺。
请注意,在 Cortex-M0 和 Cortex-M0+处理器中,WIC 可以在睡眠和深度睡眠模式下使用。在 Cortex-M3 和 Cortex-M4 处理器中,WIC 功能仅在深度睡眠中可用。
在DA14531应用中,中断仅在active mode可用。而且如果需要在sleep中唤醒,那么必须使用WIC。这里的设计跟其他MCU有些许区别。更多MCU是run/active、sleep允许中断唤醒(共用中断函数),而standby使用专用的唤醒引脚。
中断相关函数:GPIO_EnableIRQ、GPIO_RegisterCallback。
休眠唤醒相关函数:wkupct_enable_irq、wkupct_register_callback。
DA14531在BLE模式下,是会进入sleep的,所以如果要实现中断的应用,实际上必须同时使用以上两种配置,即中断、休眠唤醒,否则可能出现唤醒延时、无法唤醒的问题。
WIC主要是支持低功耗的唤醒、硬件级别的唤醒,仅支持高低电平,不支持边沿触发,可以关闭NVIC电源。
普通中断(唤醒是否支持,取决于芯片设计)则可以支持边沿触发,NVIC电源域电源需要保持。
reference:
1. Sleep Modes and Wake-up | renesas/ble-sdk6-examples | DeepWiki
2. DA14580睡眠配置_da14580睡眠模式-CSDN博客
3. Dual use pin (wkupct_enable_irq & GPIO_EnableIRQ) - Bluetooth Low Energy - Renesas Wireless Connectivity - Renesas Engineering Community
4. how does app_easy_wakeup and app_easy_wakeup_set works? - Bluetooth Low Energy - Renesas Wireless Connectivity - Renesas Engineering Community
5. 1. Example description — DA14585/DA14586 and DA14531 Multiple button press wake up callback
6. ble-sdk6-examples/interfaces/wakeup-button/src/user_wakeup.c at main · renesas/ble-sdk6-examples · GitHub
7. 2. 睡眠模式概述 — DA1453x 和 DA1458x 教程睡眠模式
8. 11. Sleep Mode — DA145XX Tutorial SDK Getting started