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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F5529 (四)電源&&&(五)工作模式

          MSP430F5529 (四)電源&&&(五)工作模式

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          我覺得電源管理與監(jiān)控是一個(gè)很復(fù)雜很難掌控的部分,不僅涉及到到源模式的選擇,還牽扯到復(fù)雜的中斷、以及中斷如何處理等等。雖然學(xué)好這一部分對(duì)實(shí)現(xiàn)降低功耗的目的很有幫助,但對(duì)于目前的我們來說貌似“ “功耗”一詞還稍微遠(yuǎn)了點(diǎn)。此外,這部分控制對(duì)防止和處理供電意外((過高過低等)的發(fā)生很有幫助,不過貌似這個(gè)開發(fā)板如果不獨(dú)立拿來做項(xiàng)項(xiàng)目而只是接在電腦USB供電的話,一般也不會(huì)有什么問題。所以,我也也只打算簡單學(xué)一下。(到后期有機(jī)會(huì)會(huì)再仔細(xì)學(xué))。

          I/O口和所有模擬單元包括晶振在內(nèi)都由DVCC供電。內(nèi)存(flash和RAM)和數(shù)字單元由核心電壓VCORE供電。
          DVCC:寬的電源電壓范圍1.8V-3.6V;

          VCORE:DVCC經(jīng)低壓降電壓調(diào)整器(LDO),產(chǎn)生的一個(gè)二次核心電壓,專門為CPU數(shù)字邏輯供電,共有1.4V(0-12MHZ),1.6V(0-16MHZ),1.8V(0-20MHZ)和1.9V(0-25MHZ)四個(gè)級(jí)別。VCORE的最小允許電壓依賴于選擇的MCLK大小,也就是說高主頻時(shí)需要配套較高的VCORE。
          管理會(huì)產(chǎn)生復(fù)位(主要是上電期間),監(jiān)控會(huì)產(chǎn)生中斷(監(jiān)控電壓是否過高過低)。
          我們最常用的是設(shè)置核心電壓VCORE,還好有專門的函數(shù)庫HAL_PMM.c/h。
          在這個(gè)函數(shù)庫里除了一些設(shè)置的定義外,最重要的就是定義了三個(gè)函數(shù):
          SetVCoreDown(uint8_t level):降低核心電壓
          SetVCoreUp(uint8_t level): 提高核心電壓

          SetVCore(uint8_t level):直接設(shè)置核心電壓值(0-3共四級(jí))
          /*這個(gè)函數(shù)最重要,或者說有了這一個(gè),前面兩個(gè)就不需要了*/

          五、系統(tǒng)工作模式
          第四章我們提到可以從電源層入手,達(dá)到從源頭上控制功耗的目的。這一章 我們就會(huì)講CPU工作模式,如何從次一級(jí)來控制功耗。
          不同工作模式下,CPU會(huì)禁用一些模塊,從而達(dá)到控制功耗的目的。
          (PS:同樣那句話,“功耗太遠(yuǎn)”,一般都不會(huì)去更改工作模式,所以簡 單學(xué)習(xí))
          簡介幾句話:①改變工作模式會(huì)立即生效;
          ②發(fā)生中斷時(shí),當(dāng)前的模式設(shè)置信息會(huì)被保存,以便恢復(fù)(除非中斷服務(wù)程序中改變了工作模式);
          ③處于LPM4.5模式時(shí),PMM的電源監(jiān)管不會(huì)生效,所有的RAM和寄存器都會(huì)丟失,但是I/O口狀態(tài)會(huì)鎖定;
          ④從LPM4.5喚醒,有一套專門的流程,有興趣就去看;

          下面這張圖很有意思,可以清楚的看清工作模式之間轉(zhuǎn)換的流程與方向,以及每種工作模式是怎樣設(shè)置的,又控制了哪些部分。
          BOR: Brown-Out Reset 低電壓檢測(cè)復(fù)位(欠壓復(fù)位)
          POR: Power-On Reset 上電復(fù)位
          PUC: Power-Up Clear 上電清除
          淺色部分表示一個(gè)事件,深色部分表示一種操作或設(shè)置


          ①設(shè)置工作模式主要是設(shè)置寄存器SR的SCG0、SCG1、OSCOFF、CPUOFF
          位,AM(Active Mode)模式時(shí)四位均置零,且系統(tǒng)默認(rèn)為AM模式;
          ②除了AM,其余都為低功耗模式,處理器進(jìn)入低功耗模式以后,一般由中 斷來喚醒??梢允峭獠恐袛?,也可以是內(nèi)部的定時(shí)器等中斷;
          ③LPM0-LPM4模式下,外圍模塊都會(huì)正常工作,且RTC時(shí)鐘不會(huì)停止;
          ④要進(jìn)入LPM4.5這一模式(更少用),只需在LPM4的基礎(chǔ)上多一個(gè) PMMREGOFF置位。該模式下,系統(tǒng)的所有時(shí)鐘、內(nèi)存和監(jiān)督管理機(jī) 制都停了,連實(shí)時(shí)時(shí)鐘RTC都禁止操作了。
          ⑤LPM0和LPM1一組,除了上圖顯示的特征外,該模式下SMCLK是選通的 (SMCLKOFF =0),DCO的時(shí)鐘源如果是ACLK或者SMCLK,則DCO也是有 效的;
          ⑥ LPM2和LPM3一組,除了上圖顯示的特征外,該模式下SMCLK是禁止的, DCO的時(shí)鐘源如果是ACLK,則DCO也是有效的;
          MSP430的頭文件對(duì)低功耗模式有詳盡的定義,如:要進(jìn)入低功耗模式0,可 在程序中直接寫LPM0; 進(jìn)入低功耗模式4,可以直接寫LMP4。退出低功 耗模式如下:
          LPM0_EXIT; //退出低功耗模式0 //太方便了有木有
          LPM4_EXIT; //退出低功耗模式4(LPM4.5除外)
          總結(jié)實(shí)驗(yàn):一個(gè)很有意思的程序

          /*低功耗模式的體現(xiàn),不用無限循環(huán),程序也不會(huì)終止*/
          /*大家會(huì)發(fā)現(xiàn),LPM3后面的語句不會(huì)執(zhí)行,程序只會(huì)定期執(zhí)行一下中斷服務(wù)程序,這是因?yàn)長PM3模式下MCLK和SMCLK、FLL都禁止了*/
          #include<msp430.h>
          void main(void)
          {
          WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1+WDTIS0;//WDT作定時(shí)器用
          SFRIE1|=WDTIE; //開看門狗中斷
          P1DIR|=BIT1+BIT2; //P1.1接LED,設(shè)定為輸出方向
          P1OUT=BIT1+BIT2;
          __enable_interrupt(); //開總中斷
          //_BIS_SR(GIE); 這句話的意思也是開總中斷
          /*這里掌握一個(gè)用法_BIS_SR( ):將括號(hào)內(nèi)的變量置位*/
          LPM3; //進(jìn)入LPM3低功耗模式,此模式下SMCLK被禁止
          P1OUT&=~BIT2;//這句話執(zhí)行不了,所以P1.2就會(huì)保持常亮,而不會(huì)變暗
          }
          #pragma vector=WDT_VECTOR
          __interrupt void WatchTimer(void)
          {
          P1OUT^=BIT1; //定時(shí)翻轉(zhuǎn),以實(shí)現(xiàn)閃爍
          }


          關(guān)鍵詞: MSP430F5529電源工作模

          評(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); })();