最近在使用 stm8l152 做一款遙控器產品,剛用這個,還不太熟,發現stm8l的資料也比較少,官方中文資料幾乎沒有。所以花了點時間,把功耗部分測試了一下,在此分享。如有問題,可跟帖討論。至于與MSP430的比較,發現自動喚醒功耗比MSP430(G2553)更大。在測試時,感覺STM8L更不省心,也可能是還不太熟加上資料有限吧,不過做完所有的功耗測試,基本都達到官方指標。
停機狀態(無喚醒)
1. PCB僅焊接MCU,電源3.3V,復位電容(10nF)和一個退偶電容(0.1uF), 程序中將所有GPIO確定輸出低電平,主函數中直接halt(),電流約 1.730uA
2. 在1的基礎上,增加一條語句,PWR_UltraLowPowerCmd(ENABLE),或者 PWR->CSR2 = 0x2,再執行halt,電流下降至最低,0.400uA,達到官方指標
3. 在實際產品上的測試(電路上增加了LCD,LSE晶振等),GPIO確定電平,超低功耗開啟,停機狀態 halt(),電流約 0.38uA
4. 在3的基礎上,開啟RTC日歷,電流約 1.3uA
5. 初始化并開啟LCD(未顯示),最低電流約 2.25uA (LCD顯示參數: 死區時間 7, 持續周期 0, HD=0,LCD外部電源)
6. LCD正常工作,電流約 5.95uA (LCD顯示參數: 死去時間 3, 持續周期 5, HD=0,LCD外部電源),顯示效果均衡,LCD電流與LCD玻璃相關
7. 在6的基礎上,HD=1 電流約 18uA
低功耗運行狀態
1. 將主時鐘切換為 LSI,所有GPIO確定電平,開超低功耗,關RTC、LCD、LSE等,主函數執行 while(1), 電流約 95uA
2. 在1的基礎上,關電壓調節器(默認開啟),電流約 3.75uA; 達到標稱電流值。
3. 在2的基礎上,將主時鐘切換為 LSE,電流約為 4.32uA
4. 在3的基礎上,開啟RTC,電流約為 4.59uA
5. 在4的基礎上,開啟LCD(不顯示),電流約為 8.8uA,LCD顯示,電流約為 9.25uA
正常工作狀態
1. PCB僅焊接MCU,電源3.3V,復位電容(10nF)和一個退偶電容(0.1uF),程序中將所有GPIO確定輸出低電平
2. 在1的基礎上,主函數直接執行 while(1),功耗在 930~950uA 波動 (默認2MHz)
3. 在2的基礎上,while(1) 中加入5個 nop(),功耗降低 200uA(即在730~750uA波動)
4. 在3的基礎上,將時鐘配置位16MHz,功耗約為 3.7mA
5. 在4的基礎上,在while(1)中加入 wfi()/wfe(),功耗約為 720uA
6. 在5的基礎上,將時鐘配置位1MHz,功耗約為 325uA
說明: 對于 stm8l 這類低功耗芯片,多數時候應該工作在停止或者等待狀態,全速運行功耗意義不大,以下兩個實際工作模擬
1. 在一般定時顯示程序中(主函數中延時500ms刷新顯示),16MHz時鐘,延時函數使用wfe功耗約1mA, 使用while(flag)功耗約4.5mA
2. 在實際低功耗項目中,RTC和LCD一直工作,CPU脈沖工作,RTC約500ms喚醒一次,刷新顯示,其電池壽命主要取決于LCD顯示效果,正常一般可做到6uA,顯示均衡
3. 以上測試所用的LCD均為4*34段,如果更小的LCD,可能功耗更小
|