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/M0t 處理器的 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 Community4.?how does app_easy_wakeup and app_easy_wakeup_set works? - Bluetooth Low Energy - Renesas Wireless Connectivity - Renesas Engineering Community5.?1. Example description — DA14585/DA14586 and DA14531 Multiple button press wake up callback6.?ble-sdk6-examples/interfaces/wakeup-button/src/user_wakeup.c at main · renesas/ble-sdk6-examples · GitHub7.?2. 睡眠模式概述 — DA1453x 和 DA1458x 教程睡眠模式
8.?11. Sleep Mode — DA145XX Tutorial SDK Getting started