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