新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 說一下SN(松翰單片機)的低功耗工作

說一下SN(松翰單片機)的低功耗工作

作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
當不使用專門時鐘芯片,例如 DS1302,HT1380 等的場合下,實時時鐘就只能依靠單片機本身的晶體振蕩器或內(nèi)部
RC振蕩器來產(chǎn)生了.
這時候,當進入外部供電停止時,實時時鐘是需要保持運行的,通常會使用 3V6 或 3V 的電池來維持時鐘正常走時.
這時候,電池的耗掉總是希望越小越好.
專門的時鐘芯片,在進入這種掉電保護的時候,其消耗電流是非常非常的小,普通電流表幾乎測量不出來.
而單片機呢? 就有很多問題需要解決了.
SN單片機提供了幾種工作模式,來實現(xiàn)"低功耗"運行,睡眠模式雖然電流極小,但是實時時鐘不能運行.
剩下的可用選擇就只有低速模式(SlowMode)和綠色模式(GreenMode)了.
我使用 2602C,2501B,27E65 等多種芯片作為測試,測試結果均不能達到芯片手冊給出的低電流值.
通常,在 3V供電下,所有端口均設置為輸出模式并且輸出為低電平,所有內(nèi)部上拉功能均去除!
無論是外部 32768 晶體或者內(nèi)部 ILRC_16KHZ 振蕩器,都是此時可以選擇使用的系統(tǒng)時鐘.
下面,就幾種可能選擇的掉電保護模式,告訴大家一些測試實踐體驗:
(1):進入綠色模式:
當使用 IHRC_RTC 代碼選項時,代碼高速運行依靠內(nèi)部 16M RC振蕩器,實時時鐘依靠外接的 32768晶體.這種結
構,表面看來是最理想的組合,但是,進入掉電保護后,實際應用起來就有許多麻煩!
這種結構進入綠色模式,高速時鐘仍然運行,電池電流就不用指望很小了!-----實際測試 3V 時約 0.35mA!
曾經(jīng)在 27E65 試過 IHRC_RTC : 16/4~16/64 的代碼選項,進入綠色模式后,都不能明顯降低保護電流.差不多都
是 0.35mA! 沒有什么改變!
(2):進入 RTC 低速模式:
要讓電流明顯下降,需要關閉高速時鐘,好了,如果此時關閉高速時鐘,就會沒有時鐘運行了,程序死掉了!
那么,我就更換另外一種保護運行的模式吧! 試一下低速模式.
進入掉電保護后,就選擇低速模式,由于外怪有 32768 晶體,RTC 仍然正常工作,時鐘穩(wěn)定走時,電池在 3V 時,電流
為 0.09mA . 比起綠色模式來,已經(jīng)好了很多了!
(3):進入 ILRC 低速模式:
這種模式,外部無需任何晶體,就直接使用內(nèi)部 RC 高速振蕩器, IHRC 16MHZ 振蕩器作為運行和實時時鐘源.不要
使用 RTC 選項了.還可以多出 2 個端口來供其它地方使用,最省錢了!
IHRC 當然不夠精確了,如果希望精確度好一些,可以外接 16MHZ晶體,端口就沒有多余的 2 個了!
當進入掉電保護后,關閉高速時鐘,此時,能夠使用的就只有 ILRC 16KHZ_3V 了.
要讓這個 16KHZ 與原來的 16MHZ 產(chǎn)生同樣的實時時鐘源,其定時器的參數(shù)就要在進入低功耗時重新設置.
例如:
;-----------------------------------------------------------
; 正常 5V 工作時,運行 16M/4 的代碼選項,定時器 T0 的參數(shù)配置:
MOV A,#030H ;16/4MHZ:計數(shù)250=0.5S
B0MOV T0M,A
CLR T0C ; 清T0C。
B0BCLR FT0IRQ ; 清T0IRQ。
B0BSET FT0IEN ; 使能T0 中斷。
B0BSET FT0ENB ; 使能T0 定時器。
每中斷 250 次,就是 0.5S 時基.此時,T0 是從 16MHZ/4 得到驅(qū)動信號.
;-----------------------------------------------------------
當進入掉電保護后,首先啟動低速模式,再關閉高速時鐘(千萬注意操作順序,不能反了!)定時器 T0 的參數(shù)配置為:
MOV A,#050H ;16/4MHZ:計數(shù)250=0.5S
B0MOV T0M,A
CLR T0C ; 清T0C。
B0BCLR FT0IRQ ; 清T0IRQ。
B0BSET FT0IEN ; 使能T0 中斷。
B0BSET FT0ENB ; 使能T0 定時器。
每中斷 1 次,就是 0.5S 時基.T0 是從 16KHZ/4 得到驅(qū)動信號.
;-----------------------------------------------------------
一個是16MHZ,一個是 16KHZ,它們剛好相差 1000 倍.
而賦值到 T0M 的 30H 與 50H ,相差 4 倍.
得到 0.5S 時基的中斷次數(shù)分別為 250 和 1,相差 250 倍.
恰好, 4*250=1000 !
如果不顧及精度問題,這個 ILRC 低速模式就是可使用的.實測掉電保護電流也是 3V 時 0.09mA !
測試中還發(fā)現(xiàn),掉電保護電壓從 2.4V 緩慢變化到 4.2V ,這個 0.09mA 基本維持不變!
這些測試,對低成本時鐘項目的應用是有幫助的,當然,做萬年歷就會不行了! 只能在那些要求精度稍差,掉電保護
時間不太長.(例如:保護 15 天,30 天,夠不夠? ) 2mAh 的小電池就可以保護 24 小時左右.工程項目使用就是足
夠的了. 如果某個工地停電 30 天,還不如放長假!
按照芯片手冊,無論何種低功耗模式,手冊上給出的掉電保護電流會更低,不同芯片也有一些差別.同時,內(nèi)部低速時
鐘的精度也會不同.越是后來的型號,似乎指標就會越好一些.
這些實驗得到的資料和數(shù)據(jù),僅供各位參考! 并且歡迎大家討論和指正!
;===============================================================================
在 SN單片機里,專門有進入/返回各種工作模式的宏指令,可以方便直接使用. 如下:
; Sleep Mode control macro for compatibility in S8KD-2 ICE;指令周期數(shù): 1
SleepMode macro
B0BSET FCPUM0
endm
;*******************************************************************************
; Green Mode control macro for compatibility in S8KD-2 ICE;指令周期數(shù): 3
GreenModemacro
B0BSET FCPUM1
NOP
NOP
endm
;*******************************************************************************
; Slow Mode control macro for compatibility in S8KD-2 ICE;指令周期數(shù): 2
SlowMode macro
B0BSET FCLKMD
B0BSET FSTPHX
endm
;*******************************************************************************
; Slow mode to Normal Mode control macro for compatibility in S8KD-2 ICE; ;指令周期數(shù): 5
Slow2Normalmacro
B0BCLR FSTPHX
NOP
NOP
NOP
B0BCLR FCLKMD
endm
;*******************************************************************************


評論


技術專區(qū)

關閉