技術乾貨 如何實現軟硬體的低功耗設計與開發?

2021-10-14 14:08:21 字數 2467 閱讀 8704

在產品工作過程中,為了達到更長久的續航能力,所以很多廠家都會採用低功耗模式,今天來介紹一下低功耗的一些方法。簡單來說,低功耗實現可以通過硬體選型或者軟體兩方面進行實現。

一、先從硬體上來分析,有哪些元器件選型上面可以實現低功耗

(1)dcdc電源部分:選用低壓降、超低功耗dc-dc晶元:由於低功耗裝置往往採用電池供電,一些鋰電池隨著電量的降低,輸出電壓也會降低,所以我們的dc-dc晶元要保證低壓降,至少要能做到0.1v的壓降下,仍能正常工作。

(2)開關控制電路:如果我們的外圍中,有開關控制需求,比如adc電壓 採集、訊號通斷等,那麼優先考慮 cpu低功耗時,io口引腳預設為低電平。這樣的話,本身gpio為輸出配置,輸出低電平肯定要比輸出高電平要保險一些(功耗),比如採用三極體實現通斷,那麼最好使用npn的管子實現,因為npn的管子,控制引腳為低電平,三極體不導通,這部分的電路相當於全部斷掉,功耗比較小。

(3)對於一些的感測器,比如溫度感測器晶元,如果這個感測器是超低功耗還好,但是多數情況下,感測器的功耗都是有的,即便是不測量的情況下,所以最保險的方式就是控制感測器的電源,這裡面要特別注意,要控制整個感測器電源的源頭,包括訊號線上拉的電源,所以,還是考慮使用p溝道的mos管,mos管的s極接電源,d極給感測器電源和訊號線上拉電阻供電,這樣我們就能夠通過io口控制g極,實現整個感測器的完全斷電了。

(4)外圍模組供電:模組電源盡量不要使用ldo,多數超低功耗裝置都是採用標準鋰電池,所以選用的模組的工作電源要盡可能的與電池電壓一致,而且需要寬範圍,如果不一致,就要使用ldo,多使用ldo就涉及到產品的成本和整體的功耗增加。

如果方案中涉及到通訊模組,比如說nb-iot模組、lora模組、藍芽模組等,模組和外圍晶元還不太一樣,模組是乙個特別大的耗電器件,這個耗電不僅僅在於傳送資料時,還在於傳送資料前的連線過程也是很費電的,所以如果想要採用直接斷電的方式就要好好的衡量一下,是否得不償失,比如說nb-iot模組,每次的資料傳送,都要經過很漫長的連線過程,舉例,可能整個資料傳送過程是50秒,那麼連線過程可能就要48秒,因為一旦連線成功後,傳送資料就很快了,所以nb-iot模組都有乙個叫做psm模式的東西,這個時候,我們就要採用它本身的psm模式了,而不是直接斷電,因為nb-iot的psm模式普遍功耗都特別低,小於10ua。

另外由於模組需要一直帶電執行,如果我們新增了mos管進行備用控制,mos管的控制電路本身也有功耗,這部分的功耗也是需要考慮的,所以,可能比較合適方案是,將電池的輸出電壓直接給模組供電,模組的外圍介面比如reset、喚醒引腳等都接入到cpu,這樣就能最大可能的保證模組的穩定。

二、軟體方面降低功耗,可以從以下幾方面進行著手

在m3中,提供三種模式,sleep stop standby模式。具體區別在相應文件中有詳細說明。stop模式,也就是深度休眠,需要將功耗降低到1ma以下。通過按鍵和串列埠可以將裝置喚醒,並繼續工作。

(1)進入休眠模式前,需要配置好喚醒中斷,庫中有提供相應的進入stop模式的函式void pwr_enterstopmode(uint32_t pwr_regulator, uint8_t pwr_stopentry),呼叫這個函式就可以進入到stop模式了。 在進入到stop模式或者其它的省電模式的時候需要手動關閉自己外設的時鐘,有的cpu在彙編中會做好,但是更多的cpu沒有做這一步所以這些動作都要我們來完成。

(2)原理圖仔細分析判斷,哪些元件會損耗電流(尤其關注電阻,還有晶元),如果相應晶元在stop模式中不需要工作,那麼在設計上可以考慮用多餘的管腳來控制這個晶元的vcc來達到stop模式下不工作。

(3)未使用的管腳按理來說,應該要配置成浮空輸入,這樣就不會產生壓降差,也就不會有電流的損耗(有的cpu管腳預設就是浮空輸入的狀態)。這點尤其注意。我用的這款stm32f4xxcpu不知道為什麼是需要配置成下拉輸入才會不消耗電流。(沒有去細究,已經牽扯到了架構了)

通過以上3步基本上可以完成stop模式的功耗要求了。

第二個,在sleep模式下需要打到省電的目的,但是這個時候usb要保持在工作狀態。 

如果同樣使用stop模式的話會關閉所有的外設電源,這個時候喚醒了裝置然後進行usb通訊,由於usb通訊是需要相對較長的互動過程,如果使用stop模式的話在喚醒的這幾毫秒內usb與上位機還沒有互動完成,會導致通訊資料丟失。

(1)st庫中沒有給出相應進入sleep模式的函式,但是通過呼叫__wfi()就能進入到sleep模式,這時尤其需要注意對mpu中的(vu32 *)((u32)0xe000ed10) &= ~((u32)0x00000004);這個位的清除,否則進入的是stop模式。

所以我們可以模擬stop模式下的操作: 

關閉所有可以關閉而又不需要使用的電源時鐘。 

然後採用wile()迴圈來監控是否有喚醒事件。如果有就跳出。 

採用這個方式最終也將sleep功耗降低了15ma左右。

退出休眠模式操作 

退出休眠模式後的第一件事情是將之前配置的管腳全部還原成工作狀態,開啟被關掉的時鐘等等。

低功耗MCU系統軟硬體設計考慮

電子產品的低功耗問題經常讓產品設計者頭痛而又不得不面對。以微控制器 mcu 為核心的系統,其功耗主要由微控制器功耗和微控制器外圍電路功耗組成。要降低微控制器系統的功耗,需要從硬體和軟體兩方面入手。硬體設計考慮因素 要滿足微控制器系統的低功耗要求,選用具有低功耗特性的微控制器可以很容易實現。因為具有低...

從DGUS II的功耗構成看如何實現低功耗LCD

現在國家對家用的電器產品的功耗要求很嚴格,對功耗的要求還分為了正常工作下的功耗和待機功耗。以目前市場上消費者能聽到的最多的產品技術來看,空調有直流變頻技術 冰箱有高效壓縮機技術和變頻技術 更加節約水資源的滾筒洗衣機,這些技術都是基於節能的目的開發出來的,都在逐漸的成為主流家電。為了迎合消費者的需求,...

作業系統 程序互斥的軟硬體實現方法

二 程序互斥的硬體軟體實現方法 我們把乙個時間段只允許乙個程序使用的資源稱為臨界資源。例如許多物理裝置 攝像頭,印表機 都屬於臨界資源。此外還有許多變數 資料 記憶體緩衝區等都屬於臨界資源。對臨界資源的訪問,必須互斥地進行,在每個程序,訪問臨界資源的那段 稱為臨界區 為了保證臨界資源的正確使用,分為...