最近在研究低功耗,整個電路板上電后一測,停止模式下整板功耗也有30ma,高的嚇人,趕緊從頭一個個加外圍電路測。發現大頭是ldo靜態電流過大,不過單片機本身休眠電流也不小。用萬用表測量,不是像理想中27mA跳變到14uA,會慢騰騰往下走,有時候停在130uA,有時候會經過較長時間,穩定在30uA,也有時候會在60uA。一天早中晚幾次上電都有差別。這個不明原因,和萬用表有關嗎?
使用的是hal庫
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//進入休眠停機模式
且在cubemx里選上了Set all free pins as analog (to optimize the power consumption) //將未使用引腳設為模擬輸入
在查閱資料時候,有些疑惑:
1.有些人使用的不是hal庫+cubeMX,似乎是標準庫。他們在進入休眠前將引腳功能全部禁用,僅保留需要的。
我是否需要這么操作?是否有相關的hal庫函數?在喚醒后除了初始化時鐘,還要把禁用的全部初始化嗎?
2.有人提出引腳上下拉會消耗電流。
所有IO管腳,如果高阻狀態端口是高電平,就設成上拉輸入,如果高阻狀態是低電平,設成下拉輸入,如果高阻是中間狀態,設成模擬輸入。
我在設置時候勾選了模擬輸入,那些引腳還要額外設置嗎?在一個個加外圍電路過程中,部分引腳如果懸空未連接,設置了上下拉也會耗電嗎?
3.有提出將晶振腳和SW腳設成普通io的
這兩點聽著有點離譜,能大幅降低功耗嗎
|