STM32L系列低功耗
在stop模式下,穩(wěn)壓器為 Vcore(穩(wěn)壓器輸出電壓)域提供低功耗電壓,用來保持寄存器和內部RAM中的數據。
本文引用地址:http://m.butianyuan.cn/article/201611/316444.htm為了最大程度降低功耗,在進入stop模式之前,VREFINT、BOR、PVD、和溫度傳感器可以被關閉,退出stop模式后,可以用PWR_UltraLowPowerCmd()打開他們。
PWR_UltraLowPowerCmd(ENABLE);//使能超低功耗模式;
內部參考電壓的功耗也不是微不足道的,尤其在stop模式和standby模式。為了減小功耗,用這個函數設置PWR_CR的ULP位來關閉內部參考電壓,然而,在這種情況下從stop模式或standby模式退出時,在內部參考電壓啟動時間內(3ms),通過內部參考電壓管理那些功能是不可靠的。為了縮短喚醒時間,在進入stop模式或者standby模式之前,調用PWR_FastWakeUpCmd()函數(設置PWR_CR的FWU位),CPU就可以從stop模式或者standby模式喚醒而不用等待內部參考電壓的啟動。
if ULP=0(參考電壓在低功耗模式下打開),FWU位被忽略。
if ULP=1(參考電壓在低功耗模式下關閉),FWU=1:當從低功耗模式退出時,忽略參考電壓的啟動時間。
if ULP=1(參考電壓在低功耗模式下關閉),FWU=0:CPU只有等到參考電壓準備好才會從低功耗模式退出。
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);//進入stop模式;設置PWR_CR寄存器的PDDS和LPSDSR位。PDDS:進入stop模式。
穩(wěn)壓器:
一個嵌入式的、線性的穩(wěn)壓器給除了待機電路外的所有數字電路供電。穩(wěn)壓器的輸出電壓在1.2~1.8V范圍內,軟件可配。
穩(wěn)壓器在系統(tǒng)復位后總是被使能。穩(wěn)壓器根據CPU應用模式不同,工作在三種不同的模式:主模式(MR),低功耗模式(LPR),掉電模式。
1、CPU工作在運行模式下時,穩(wěn)壓器工作在主模式并且為Vcore domain提供全部電量(包括核、寄存器、數字電路)
2、CPU工作再低功耗運行模式,穩(wěn)壓器工作再低功耗模式并且為Vcore domain提供低電量,以保存寄存器和內部RAM中的內容。
3、CPU工作再睡眠模式,穩(wěn)壓器工作在主模式并且為Vcore domain提供全部電量,以保存寄存器和內部RAM中的內容。
4、CPU工作再stop模式,穩(wěn)壓器工作再低功耗模式并且為Vcore domain提供低電量,以保存寄存器和內部RAM中的內容。
5、CPU工作在Standby模式,穩(wěn)壓器工作在掉電模式,除了standby電路外,寄存器和內部RAM中的內容都將丟失。
內部參考電壓:
通過內部參考電壓管理的功能有(BOR)欠壓復位、可編程電壓檢測、ADC、LCD、比較器。內部參考電壓總是使能的。
內部參考電壓的功耗是不能被忽略的,尤其是在stop模式和standby模式。為了減少功耗,可以將PWR_CR寄存器的ULP(Ultra low power)位置位來關閉內部參考電壓,然而在這種情況下,當從stop/standby模式退出時,通過內部參考電壓管理的功能在內部參考電壓啟動時(3ms)是不可靠的。為了減少喚醒時間,CPU可以從stop/standby模式退出時不等待內部參考電壓的啟動。在進入stop/standby模式之前,將PWR_CR寄存器的FWU(Fast wakeup)置位可以實現。
無論FWU的值是多少,如果ULP位被置位,在進入stop/standby模式之前使能的以上這些功能,在進入stop/standby模式之后這些功能被禁止,并且當內部參考電壓的啟動結束后這些功能再次使能(通過做PVD的測試,好像并沒有像手冊說的那樣再次使能,而是每次喚醒后要重新手動使能PVD)。在PWR_CSR寄存器的VREFINTRDYF 位表示內部參考電壓是否準備好。
從stop模式喚醒后,系統(tǒng)時鐘默認為MSI時鐘,需要重新配置系統(tǒng)時鐘。
任何的EXTI Line(內部的或外部的)中斷或事件都能是CPU從stop模式喚醒。
CPU的低功耗特性只是做低功耗產品的開發(fā)的一部分,外圍器件的功耗同樣起決定作用。要想達到理想的功耗,CPU和外圍器件必須能夠完美的結合。在低功耗產品研發(fā)中,可能是我第一次接觸此類產品的研發(fā),功耗問題花費了我大量的時間,CPU在沒有外部器件的情況下功耗是理想的,基本上與數據手冊描述的一樣,所選的外圍器件的功耗也很低,但是CPU與外圍器件連起來時功耗就很高。
下面我分享下我在做STM32L151低功耗(stop模式)研發(fā)中的一些經驗:
1.外部器件能用IO口供電的就盡量用IO口供電,在stop模式下,CPU的IO口的狀態(tài)是保持的,這樣外圍器件的供電開關很容易控制。像外部存儲芯片可以用IO口供電。有些外圍芯片不適合用IO口供電的,像有些射頻芯片,因為這些射頻芯片上電啟動要相當長的時間。
2.最好別用standby模式。雖然standby模式對CPU來說功耗最低,但是standby模式有很多缺點。在standby模式下CPU處于不受控制的狀態(tài),所有的IO口都工作在高阻抗的狀態(tài)下,只有幾個專用的引腳能夠將CPU從standby模式喚醒,而且每次喚醒都相當于系統(tǒng)復位,RAM中的數據全部丟失。在有外部器件連接的情況下,器件引腳可能會吸收大量的電流,反而達不到低功耗的目的。
3.如果CPU外圍有器件連接,且沒有用IO供電,一定要將CPU與器件相連的IO口設置成適當的模式,否則這些引腳可能會吸收很大的電流。ST公司給的例程中建議設置成模擬輸入,但是我將CPU與射頻芯片nRF24L01相連的IO口設置成模擬輸入功耗達不到理想要求。經過多次實驗,設置成下拉輸入功耗達到了理想要求。可能每種器件的特性不同導致了這樣的結果。
4.對于電平的檢測。在檢測外圍器件的某個引腳的中斷時,假如該中斷是低電平有效,中斷前該引腳保持高電平,這種情況下要把CPU的IO口設置成上拉輸入,反之就設置成上拉輸入。檢測到中斷后盡快的清除中斷。
評論