?
摘要:在嵌入式系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)師需要特別考慮低功耗,因?yàn)檫@類(lèi)系統(tǒng)通常用于移動(dòng)設(shè)備和便攜產(chǎn)品,其電源供應(yīng)有限,主要依賴(lài)電池供電。因此,設(shè)計(jì)師必須仔細(xì)考慮各個(gè)細(xì)節(jié),以減少功耗,延長(zhǎng)電池壽命。為此,絕大多數(shù)芯片都提供了低功耗模式。以CW32L083為例,這是一款32位低功耗微控制器。
一、芯片模式介紹
1.CW32L083工作模式
CW32L083 支持三種工作模式,由內(nèi)嵌的電源管理模塊自動(dòng)完成電源的統(tǒng)一管理。三種工作模式是:
? 休眠模式(Sleep mode)
? 深度休眠模式(DeepSleep mode)
系統(tǒng)上電后,將自動(dòng)進(jìn)入運(yùn)行模式。用戶(hù)可以通過(guò)軟件切換到休眠或深度休眠模式,以降低功耗。在低功耗模式下,通過(guò)硬件中斷觸發(fā)喚醒機(jī)制可使系統(tǒng)返回運(yùn)行模式。
2.進(jìn)入休眠模式或深度休眠模式
通過(guò)使用M0+內(nèi)核的ARM等待中斷專(zhuān)用指令WFI(Wait for Interrupt),結(jié)合M0+內(nèi)核的系統(tǒng)控制寄存器(SCR, System Control Register)的SLEEPONEXIT和SLEEPDEEP位域,可實(shí)現(xiàn)立即進(jìn)入或退出(中斷服務(wù)程序)時(shí)進(jìn)入休眠模式或深度休眠模式。
? 立即進(jìn)入
執(zhí)行 WFI 指令,MCU 將立即進(jìn)入休眠模式(SLEEPDEEP 為 0 時(shí))或深度休眠模式(SLEEPDEEP 為 1 時(shí))
? 退出時(shí)進(jìn)入
將SLEEPONEXIT置為1,在退出最低優(yōu)先級(jí)的中斷服務(wù)程序后,MCU將進(jìn)入休眠模式(當(dāng)SLEEPDEEP為0時(shí))或深度休眠模式(當(dāng)SLEEPDEEP為1時(shí)),無(wú)需執(zhí)行WFI指令。
在深度休眠模式下,系統(tǒng)將自動(dòng)關(guān)閉高速時(shí)鐘。若需要在深度休眠模式下保持部分外設(shè)運(yùn)行,需在進(jìn)入深度休眠模式前啟動(dòng)相應(yīng)的低速時(shí)鐘,并將該外設(shè)時(shí)鐘設(shè)置為低速時(shí)鐘。
3.退出休眠模式或深度休眠模式
在休眠模式或深度休眠模式下,可通過(guò)中斷喚醒CPU,使其返回運(yùn)行模式。但需注意,若在中斷服務(wù)程序中執(zhí)行WFI命令進(jìn)入休眠(包括深度休眠),則需要更高優(yōu)先級(jí)的中斷才能喚醒CPU。因此,我們建議在準(zhǔn)備進(jìn)入休眠前,先處理完所有中斷服務(wù)程序,并清除所有中斷請(qǐng)求和中斷標(biāo)志。
使用中斷退出休眠模式時(shí),需在進(jìn)入休眠(包括深度休眠)前啟用該中斷的允許位。
中斷喚醒退出深度休眠模式時(shí),CPU的運(yùn)行狀態(tài)與退出休眠模式時(shí)相同。
4.UART控制深度休眠模式
UART控制器工作在雙時(shí)鐘域下,支持在深度休眠模式下進(jìn)行正常的數(shù)據(jù)收發(fā),并通過(guò)接收完成中斷喚醒 MCU回到運(yùn)行模式。
如果將傳輸時(shí)鐘UCLK設(shè)置為低速時(shí)鐘,當(dāng)系統(tǒng)進(jìn)入深度休眠模式后,高速時(shí)鐘將停止,低速時(shí)鐘將繼續(xù)運(yùn)行,UART仍可正常進(jìn)行數(shù)據(jù)收發(fā)(波特率僅支持2400 bps、4800 bps和9600 bps)。為實(shí)現(xiàn)深度休眠模式下UART的喚醒功能,需在進(jìn)入深度休眠模式之前啟用UART接收完成中斷(設(shè)置UARTx_IER.RC為1)。當(dāng)數(shù)據(jù)接收完成時(shí),接收完成中斷將喚醒MCU并使其返回運(yùn)行模式。
若將傳輸時(shí)鐘UCLK設(shè)置為高速時(shí)鐘,當(dāng)系統(tǒng)進(jìn)入深度休眠模式后,高速時(shí)鐘將停止運(yùn)行,UART將無(wú)法接收數(shù)據(jù)。在此情況下,仍可通過(guò)GPIO中斷喚醒MCU,以實(shí)現(xiàn)深度休眠模式下的數(shù)據(jù)接收。配置步驟如下:
步驟 1:?jiǎn)⒂肬ARTx_RXD對(duì)應(yīng)引腳的GPIO下降沿中斷;
步驟 2:將UARTx_CR1.START設(shè)置為1,選擇RXD信號(hào)的起始位判定方式為低電平;
步驟 3:?jiǎn)⒂肬ART接收(即將UARTx_CR1.RXEN設(shè)置為1);
步驟 4:進(jìn)入深度休眠模式;
步驟 5:等待主機(jī)發(fā)送數(shù)據(jù),產(chǎn)生GPIO下降沿中斷,喚醒MCU;
步驟 6:關(guān)閉RXD對(duì)應(yīng)引腳的GPIO中斷功能,等待RXD接收完成。
什么是低功耗設(shè)計(jì),如何評(píng)估低功耗MCU性能?——以CW32L083VXTX評(píng)估板為實(shí)驗(yàn)對(duì)象,進(jìn)行低功耗測(cè)試系列實(shí)驗(yàn)講解(1)
國(guó)產(chǎn)CW32低功耗芯片概述——以CW32L083VXTX評(píng)估板為實(shí)驗(yàn)對(duì)象,進(jìn)行低功耗測(cè)試系列實(shí)驗(yàn)講解(2)
? ? CW32L083低功耗芯片特性——以CW32L083VXTX評(píng)估板為實(shí)驗(yàn)對(duì)象,進(jìn)行低功耗測(cè)試系列實(shí)驗(yàn)講解(3) ? CW32L083的評(píng)估板及原理圖 ——以CW32L083VXTX評(píng)估板為實(shí)驗(yàn)對(duì)象,進(jìn)行低功耗測(cè)試系列實(shí)驗(yàn)講解(4)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 評(píng)估其性能主要涉及以下方面:
供電電流:評(píng)估板上的供電電流測(cè)量可以反映MCU在不同工作模式下的功耗開(kāi)銷(xiāo),例如待機(jī)模式、睡眠模式等。
響應(yīng)時(shí)間:測(cè)試不同喚醒方式的響應(yīng)時(shí)間,包括外部中斷喚醒和串口中斷喚醒等。
運(yùn)行模式下LED1指示燈滅時(shí)的功耗為2.955MA。 運(yùn)行模式下LED1指示燈亮?xí)r的功耗為3.849MA。
進(jìn)入超低功耗模式下功耗為0.64uA。
進(jìn)入超低功耗時(shí)的電流消耗為1.7UA;
運(yùn)行模式下LED2指示燈亮,功耗為3.849mA。
主頻功耗:通過(guò)改變MCU的主頻,觀察功耗的變化情況,以確定最佳主頻設(shè)置。
不同主頻(未進(jìn)入低功耗模式)實(shí)驗(yàn)數(shù)據(jù)如下:
外設(shè)功耗:測(cè)試不同外設(shè)的功耗開(kāi)銷(xiāo),例如串口、ADC、定時(shí)器等。
不同外設(shè)實(shí)驗(yàn)結(jié)果如下:
通過(guò)這些實(shí)驗(yàn),可以全面評(píng)估CW32L083VXTX評(píng)估板的低功耗性能,并為后續(xù)的應(yīng)用和設(shè)計(jì)提供參考。
評(píng)論
查看更多