stm8s和stm8l低功耗對比 在低功耗應用中,一般來說mcu是常態halt模式,然後偶爾被喚醒(外部中斷或者內部定時喚醒)進入運行模式。所以對比低功耗性能,一般來說只需要對比run模式和halt下的功耗即可,因為項目選用的是通過內部定時器喚醒,所以選用active halt mode。以下是st ...
stm8s和stm8l低功耗對比
在低功耗應用中,一般來說mcu是常態halt模式,然後偶爾被喚醒(外部中斷或者內部定時喚醒)進入運行模式。所以對比低功耗性能,一般來說只需要對比run模式和halt下的功耗即可,因為項目選用的是通過內部定時器喚醒,所以選用active halt mode。以下是stm8s003和stm8l151在這兩種模式下的功耗對比:
run mode:
-
stm8s
-
stm8l
-
對比
在使用同樣的16M內部RC振蕩器情況下,stm8s 3.7ma,stm8l 3.54ma,兩款mcu耗電量差不多。
active halt mode:
-
stm8s
-
stm8l
-
對比
在同樣的關閉外設,且使用內部低速RC振蕩器喚醒的情況下:stm8s 10ua,stm8l 0.54ua。大約有20倍的差距,不過對於要求不是特別高的情況下,ua級別的差距影響不會太大。
實測:
為了實際驗證,分別將單片機焊接到空板子上編寫代碼進行測試。
stm8 編寫如下代碼:
32ms喚醒一次
主程式: void main(void) GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW); 中斷處理程式: INTERRUPT_HANDLER(AWU_IRQHandler, 1) |
程式下載到單片機後,串到台式萬用表上實測電流11ua,見下圖:
stm8l 編寫如下代碼:
32ms喚醒一次
主程式: void main(void) { GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); GPIO_Write(GPIOA,0x00); RTC_DeInit(); //初始化預設狀態 while(1) { halt(); } } 中斷處理程式: INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler,4) |
將程式下載到單片機後,串到台式萬用表測試電流在4ua左右,見下圖: