<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430省電方式的兩種喚醒方法

          MSP430省電方式的兩種喚醒方法

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          1MSP430省電方式簡(jiǎn)介

          MSP430以其低功耗著稱于世,它可以外接2個(gè)時(shí)鐘源——XIN、XT2IN,內(nèi)部還有1個(gè)DC0振蕩器,可以產(chǎn)生高達(dá)8 MHz的內(nèi)部時(shí)鐘。一般XT2IN的頻率為高頻,按實(shí)際應(yīng)用時(shí)的要求來選用;XIN為低頻,可以是32 768Hz。XIN的用途主要是在低功耗時(shí)使系統(tǒng)保持“活著”。MSP430共有5種省電方式,即LPM0~4。其中,

          LPM0:CPU、MCLK關(guān)閉,SMCLK、ACLK打開,功耗79uA;
          LPM1:CPU、MCLK、DCO關(guān)閉,SMCLK、ACLK打開,功耗4luA;
          LPM2:CPU、MCLK、SMCLK、DC0關(guān)閉,DC產(chǎn)生器、ACLK打開,功耗17uA;
          LPM3:CPU、MCLK、SMCLK、DC0、DC產(chǎn)生器關(guān)閉,ACLK打開。功耗2uA;
          LPM4:CPU及所有模塊都關(guān)閉,功耗0.1 uA。

          系統(tǒng)在LPMO-3方式下可以被喚醒,LPM4則不能。大多數(shù)應(yīng)用場(chǎng)合都希望MSP430平時(shí)進(jìn)入睡眠狀態(tài),降低功耗,而后定時(shí)或被外界中斷喚醒,執(zhí)行相應(yīng)的程序后再次進(jìn)入睡眠狀態(tài),然后再次被喚醒,其中因?yàn)長(zhǎng)PM3是滿足要求且功耗最低的一種方式,所以它被使用得最多。本文就來討論這種方式下的睡眠與喚醒。

          2 睡眠與喚醒

          主程序循環(huán)運(yùn)行的流程如圖1所示。



          每一次循環(huán)中都要判斷睡眠條件是否成立,若成立則切換時(shí)鐘,進(jìn)入睡眠方式。至此,CPU不再執(zhí)行任何程序,直到CPU被喚醒后才繼續(xù)執(zhí)行。喚醒條件可以是定時(shí)中斷、外部I/O中斷,或串行口中斷。下面的PowerManagement代碼為進(jìn)入睡眠前后和被喚醒后執(zhí)行的相應(yīng)操作。SerialReceiveInterrupt代碼為串行口接收到1個(gè)字符中斷后進(jìn)行的相應(yīng)操作,TimerBInterrupt代碼為定時(shí)器B5定時(shí)時(shí)間到后進(jìn)行的相應(yīng)操作。2個(gè)中斷程序中,在喚醒CPU之前均將時(shí)鐘調(diào)整到正常工作時(shí)的高速時(shí)鐘源上,設(shè)置相應(yīng)的標(biāo)志,然后再執(zhí)行喚醒子程序clrLPM3。編譯軟件為IAR embedded workbench 1.26。





          3 睡眠時(shí)長(zhǎng)

          如果睡眠是靠串行口中斷來喚醒,則睡眠時(shí)長(zhǎng)為不定長(zhǎng),什么時(shí)候來了中斷,什么時(shí)候醒來。所以在此只討論定時(shí)器產(chǎn)生中斷來喚醒的情況。

          定時(shí)器B的控制寄存器的說明如圖2所示。


          圖2 定時(shí)器B的控制寄存器

          CNTLx:計(jì)數(shù)器長(zhǎng)度,00=16位,MSP430定時(shí)器B的計(jì)數(shù)器TBR最大為0xFFFF;01=12位,TBR最大為0x0FFF,10=10位,TBR最大為0x03FF,11=8位,TBR最大為0xFF。

          TBSSELx:定時(shí)器B的時(shí)鐘源選擇,00=TBCLK,01=ACLK,10=SMCLK,11=INCLK。

          IDx:定時(shí)器B的時(shí)鐘源分頻因數(shù),00=不分頻,01=2分頻,10=4分頻,11=8分頻。

          MCx:定時(shí)器B的計(jì)數(shù)方式選擇位,00=暫停計(jì)數(shù),01=加計(jì)數(shù)方式,10=連續(xù)計(jì)數(shù)方式,11=加減計(jì)數(shù)方式。詳細(xì)內(nèi)容請(qǐng)參考MSP430的數(shù)據(jù)手冊(cè)。

          前述程序中定時(shí)器B的控制字TBCTL=TBSSEL0+ID0+ID1+MC1+TBCLR。定時(shí)器B的時(shí)鐘源選擇為TBSSEL0,該值在MSP430x14x.h頭文件中的定義為0x0100,即選擇的時(shí)鐘源為ACLK(32768hz)。ID0在MSP430x14x.h定義為0x40,ID1在MSP430x14x.h定義為0x80,二者相加為0xC0,即定時(shí)器B的時(shí)鐘源為8分頻。MC1在MSP430x14x.h定義為0x20,即定時(shí)器B采用連續(xù)計(jì)數(shù)方式。

          以上時(shí)鐘選擇了ACLK為32 768,再進(jìn)行8分頻,等于4 096,則定時(shí)器B的時(shí)鐘最終運(yùn)行頻率為4 096 Hz,每計(jì)1個(gè)數(shù)所需時(shí)間為(1/4 096)S。又由于前面把定時(shí)器B5的計(jì)數(shù)值設(shè)為TBR-10=0xFFFF-10=0xFFF0=65 536-10=65 526,則計(jì)滿65 526數(shù)需要的時(shí)間為65 526×(1/4 096)s=15.997 s≈16 s。因此,用定時(shí)器定時(shí)到產(chǎn)生中斷作為喚醒源,最大睡眠時(shí)間不超過16 S。如果任務(wù)不需要這么快執(zhí)行一次,可以每次醒來后先不去執(zhí)行任務(wù),而是給1個(gè)計(jì)數(shù)變量加1,然后繼續(xù)進(jìn)入睡眠狀態(tài),直到計(jì)數(shù)變量等于想要的時(shí)長(zhǎng)后再執(zhí)行。

          結(jié)語(yǔ)

          MSP430是一款非常好的低功耗單片機(jī),用好它的省電功能,可以大大延長(zhǎng)電池的壽命。因此該產(chǎn)品被廣泛地應(yīng)用于電池供電的工控產(chǎn)品中。本文的代碼都是實(shí)際應(yīng)用中的程序代碼,經(jīng)過了實(shí)際的檢驗(yàn)。


          關(guān)鍵詞: MSP430省電方式喚醒方

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();