CW32 低功耗模式的特性介紹
CW32系列芯片支持3種工作模式,運行模式、休眠模式以及深度休眠模式,本文以CW32L083為例介紹低功耗模式的特性。MCU上電以后,系統(tǒng)自動進入運行模式,可以通過軟件配置,進入休眠或者深度休眠兩種低功耗模式,進入低功耗運行狀態(tài)后,可以通過外設(shè)中斷觸發(fā)喚醒機制,使得系統(tǒng)返回到運行模式,三種工作模式的轉(zhuǎn)換機制如下圖所示:

三種模式下CPU、時鐘及外設(shè)狀態(tài):
? 運行模式(Active mode)?
運行模式下 CPU 正常運行,所有模塊用戶均可正常使用。
? 休眠模式(Sleep mode)?
休眠模式下,CPU 停止運行,所有外設(shè)不受影響,所有I/O引腳保持狀態(tài)不變。
? 深度休眠模式(DeepSleep mode)?
深度休眠模式下,CPU停止運行,高速時鐘(HSE、HSIOSC)自動關(guān)閉,低速時鐘(LSE、 LSI、RC10K、RC150K)保持原狀態(tài)不變。深度休眠模式的功耗遠小于休眠模式。
CW32L083可以使用等待中斷專用指令,WFI(Wait for Interrupt),配合系統(tǒng)控制寄存器(SCR, System Control Register)的SLEEPONEXIT和SLEEPDEEP位域,可實現(xiàn)立即進入或退出(中斷服務(wù)程序)時進入休眠模式或深度休眠模式。
? 立即進入?
執(zhí)行WFI指令,MCU將立即進入休眠模式(SLEEPDEEP為0時)或深度休眠模式(SLEEPDEEP為1時)?
? 退出時進入?
將SLEEPONEXIT位置1,當退出最低優(yōu)先級的中斷服務(wù)程序后,MCU會進入休眠模式(SLEEPDEEP為0時)或深度休眠模式(SLEEPDEEP為 1時),而不需執(zhí)行WFI指令 。

注:在深度休眠模式下,系統(tǒng)將自動關(guān)閉高速時鐘,如果需要在深度休眠模式下使部分外設(shè)仍保持運行,則需要在進入深度休眠模式前,啟動相應(yīng)的低速時鐘并將該外設(shè)時鐘設(shè)置為此低速時鐘。
在休眠模式或深度休眠模式下,均可通過中斷來喚醒CPU,返回到運行模式。如果用戶在中斷服務(wù)程序中執(zhí)行WFI命令進入休眠(包括深度休眠),則需要比此中斷更高優(yōu)先級的中斷才能喚醒CPU,因此,強烈建議在準備進入休眠前,應(yīng)先處理完所有中斷服務(wù)程序,并且清除所有中斷請求和中斷標志,以下是配置進入低功耗模式時所需注意的事項。
??建議在進入低功耗模式前加一段時間的延遲,以免出現(xiàn)上電就進入低功耗模式,無法燒錄程序。
??系統(tǒng)可以配置從Deepsleep喚醒后,系統(tǒng)時鐘來源是HSI還是進入休眠前的時鐘。
??系統(tǒng)進入低功耗模式,端口狀態(tài)不會發(fā)生改變,此時需要客戶根據(jù)實際應(yīng)用來配置端口狀態(tài)來達到理想的功耗值,未用端口建議配置為模擬模式。
??其他的RTC等低功耗運行模塊因在深度休眠下高速時鐘停止運行,所以如果需要在深度休眠模式下運行RTC等模塊,需配置模塊時鐘源為LSI或LSE。
根據(jù)上述內(nèi)容,可以配置CW32L083的低功耗應(yīng)用的例程,具體的代碼可以查看CW32L083的固件庫中PWR_CurrentConsumption這一例程,配置PA04和PA05為引腳輸入,并開啟下降沿中斷,在中斷服務(wù)函數(shù)改變gKeyStatus的值,從而使得MCU在main中進入低功耗休眠模式。
上述代碼可以看到在未進入低功耗模式之前,LED1每1s翻轉(zhuǎn)一次,通過按鍵KEY2進入低功耗模式后,LED1燈滅,當再次按下KEY2后,重新回到正常的運行模式,LED1每一秒翻轉(zhuǎn)一次。通過測量可以得到,進入到低功耗模式之后,功耗顯著降低。