第三章 MSP430基本外設(shè)-低功耗模式_第1頁
第三章 MSP430基本外設(shè)-低功耗模式_第2頁
第三章 MSP430基本外設(shè)-低功耗模式_第3頁
第三章 MSP430基本外設(shè)-低功耗模式_第4頁
第三章 MSP430基本外設(shè)-低功耗模式_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單片機技術(shù)與應(yīng)用§3.2

低功耗模式MSP430系列單片機最主要的特征就是低功耗,該特性適合應(yīng)用于采用長時間電池供電的工作場合。MSP430系統(tǒng)使用不同的時鐘信號:ACLK、MCLK和SMCLK。這3種不同頻率的時鐘輸出給不同的模塊,從而更合理地利用系統(tǒng)的電源,實現(xiàn)整個系統(tǒng)的超低功耗。MSP430單片機具有7種低功耗模式(LPM0~4、LPM3.5和LPM4.5,后兩種模式并非全部系列都具有),通過不同程度的休眠,可降低系統(tǒng)功耗。MSP430系列單片機各個模塊運行完全獨立,定時器、輸入/輸出端口、A/D轉(zhuǎn)換、看門狗、液晶顯示器等都可在CPU休眠狀態(tài)下運行。系統(tǒng)能以最低功耗運行,當需要CPU工作時,任何模塊都可以通過中斷喚醒CPU,完成工作后又可以進入相應(yīng)的休眠狀態(tài)。這一特性是MSP430系列單片機最突出的優(yōu)點,也是與其他單片機的最大區(qū)別。單片機技術(shù)與應(yīng)用§3.2

低功耗模式MSP430單片機能夠?qū)崿F(xiàn)低功耗的根本原因是在不同的低功耗模式下關(guān)閉不同的系統(tǒng)時鐘,關(guān)閉的系統(tǒng)時鐘越多休眠模式越深。通過CPU狀態(tài)寄存器SR中的SCG1、SCG0、OSCOFF和CPUOFF這4個控制位的配置來關(guān)閉系統(tǒng)時鐘,使MSP430單片機從活動模式進入到相應(yīng)的低功耗模式。再通過中斷方式從各種低功耗模式回到活動模式。活動模式低功耗模式SCG1、SCG0、OSCOFF、CPUOFF中斷單片機技術(shù)與應(yīng)用§3.2

低功耗模式注意:在任何一種低功耗模式下,CPU都被關(guān)閉,程序?qū)⑼V箞?zhí)行,直到被中斷喚醒或單片機復(fù)位。因此在進入任何一種低功耗模式之前,都必須設(shè)置好喚醒CPU的中斷條件、打開中斷允許位、等待被喚醒,否則程序?qū)⒂锌赡苡肋h停止運行。另外,MSP430的瞬間響應(yīng)特性是系統(tǒng)超低功耗事件驅(qū)動方式的重要保證。單片機技術(shù)與應(yīng)用§3.2.1低功耗工作模式工作模式、控制位和時鐘的活動狀態(tài)之間的相互關(guān)系。表示中斷標志位設(shè)置該模式下哪些時鐘關(guān)閉,哪些時鐘開啟單片機技術(shù)與應(yīng)用工作模式控制位CPU和時鐘狀態(tài)喚醒中斷源活動模式(AM)SCG1=0,SCG0=0,OSCOFF=0,CPUOFF=0CPU活動MCLK活動SMCLK活動ACLK活動DCO可用FLL可用定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式0(LPM0)SCG1=0,SCG0=0,OSCOFF=0,CPUOFF=1CPU禁止MCLK禁止SMCLK活動ACLK活動DCO可用FLL可用定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式1(LPM1)SCG1=0,SCG0=1,OSCOFF=0,CPUOFF=1CPU禁止MCLK禁止SMCLK活動ACLK活動DCO可用FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式2(LPM2)SCG1=1,SCG0=0,OSCOFF=0,CPUOFF=1CPU禁止MCLK禁止SMCLK禁止ACLK活動DCO可用FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式3(LPM3)SCG1=1,SCG0=1,OSCOFF=0,CPUOFF=1CPU禁止MCLK禁止SMCLK禁止ACLK活動DCO可用FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式4(LPM4)SCG1=1,SCG0=1,OSCOFF=1,CPUOFF=1CPU禁止所有時鐘禁止復(fù)位信號、外部中斷低功耗模式3.5(LPM3.5)SCG1=1,SCG0=1,OSCOFF=1,CPUOFF=1當PMMREGOFF=1,無RAM保持,RTC可以啟用(僅限MSP430F5xx)復(fù)位信號、外部中斷、RTC低功耗模式4.5(LPM4.5)SCG1=1,SCG0=1,OSCOFF=1,CPUOFF=1當PMMREGOFF=1,無RAM保持,RTC禁止(僅限MSP430F5xx)復(fù)位信號、外部中斷單片機技術(shù)與應(yīng)用MSP430內(nèi)部各模塊運行完全獨立。各片內(nèi)模塊可通過禁止相應(yīng)寄存器中的控制位來關(guān)閉。一旦改變了SR中的模式控制位(SCG0、SCG1、OSCOFF、CPUOFF),工作模式便立即改變,有關(guān)模塊也因為相應(yīng)的時鐘源被禁止而被關(guān)閉。改變模式不影響所有的I/O引腳及RAM/寄存器的值。SCG0SCG1CZNGIECPUOFFOSCOFF76543210保留V15141312111098SR狀態(tài)寄存器單片機技術(shù)與應(yīng)用§3.2.2進入和退出低功耗模式在活動模式下,按低功耗模式設(shè)定SR中的控制位,MSP430就進入設(shè)定的低功耗模式,此時CPU寄存器的值保持不變,有關(guān)的模塊也因為相應(yīng)的時鐘源被禁止而被關(guān)閉。任意中斷均可喚醒處于低功耗模式的MSP430,使MSP430切換到AM活動模式,即退出低功耗模式。單片機技術(shù)與應(yīng)用硬件自動中斷當前服務(wù) PC入棧 SR入棧

中斷向量賦給PC GIE、CPUOFF、OSCOFF和SCG1清除 IFG標志位清除(單源中斷標志)執(zhí)行中斷處理子程序執(zhí)行RETI指令(中斷返回) SR出棧(恢復(fù)原來的標志) PC出棧在低功耗模式下,所有的I/O引腳和RAM寄存器將保持不變。可以通過開中斷后用中斷事件來喚醒LMP0到LMP4。系統(tǒng)響應(yīng)中斷的過程單片機技術(shù)與應(yīng)用堆棧初始狀態(tài)入棧時PC和SR出棧前PC和SR系統(tǒng)響應(yīng)中斷時的堆棧情況:單片機技術(shù)與應(yīng)用中斷將CPU從休眠狀態(tài)中喚醒:在中斷處理過程中對控制位GIE、CPUOFF、OSCOFF和SCG1自動清除,從而使CPU進入活動模式。系統(tǒng)低功耗模式的保持:中斷響應(yīng)時,將SR入棧保存,即保存系統(tǒng)某種低功耗狀態(tài)。中斷響應(yīng)結(jié)束時,通過RETI指令使SR出棧,恢復(fù)系統(tǒng)進入中斷之前的低功耗狀態(tài)。系統(tǒng)根據(jù)需求在各種低功耗模式之間切換:在中斷處理子程序過程中,根據(jù)中斷結(jié)束之后要進入的工作模式對壓入堆棧的SR內(nèi)容進行修改,當前中斷事件處理完畢,執(zhí)行RETI指令時,系統(tǒng)就按照出棧的SR內(nèi)容進入另一種工作模式。單片機技術(shù)與應(yīng)用;主程序…..;初始化操作開始…………;初始化完畢BIS#GIE+CPUOFF,SR;主程序中設(shè)置低功耗模式0…...;主程序在這里停止;中斷子程序……;中斷處理開始…………;中斷處理結(jié)束BIS#GIE+CPUOFF+SCG1+SCG0,0(SP);設(shè)置SR為低功耗模式3RETI;中斷返回;系統(tǒng)進入低功耗模式3……例:系統(tǒng)初始化完畢之后工作于低功耗模式0,中斷事件觸發(fā)到活動模式,中斷處理結(jié)束后進入到低功耗模式3。單片機技術(shù)與應(yīng)用在上述處理過程中,堆棧的變化情況,如下圖所示:堆棧初始狀態(tài)入棧時PC和SR出棧前PC和SR單片機技術(shù)與應(yīng)用;主程序…..;初始化操作開始…………;初始化完畢BIS#GIE+CPUOFF,SR;主程序中設(shè)置低功耗模式0L1;操作1L2;操作2……;中斷子程序……;中斷處理開始…………;中斷處理結(jié)束BIC#0000h,0(SP);設(shè)置SR為活動模式RETI;中斷返回,系統(tǒng)進入活動模式……例:如果期待主程序在中斷返回之后繼續(xù)執(zhí)行某些操作,可以在中斷處理子程序中改變SR的值為活動模式單片機技術(shù)與應(yīng)用當進入LPMx.5(LPM3.5和LPM4.5)模式時,電源管理模塊(PMM)的電壓調(diào)節(jié)器也停止工作。所有的RAM、寄存器及I/O口的配置數(shù)據(jù)都將丟失,所有的I/O口被鎖定在當前狀態(tài)。LMP4.5可以通過上電、復(fù)位或具體的I/O口來喚醒。在LPM3.5模式下,除了可以用LPM4.5模式下的喚醒事件外,還可用RTC喚醒事件來喚醒。從LPMx.5模式下退出都會產(chǎn)生一次BOR事件。因此,在退出LPMx.5模式后,I/O口的狀態(tài)將一直保持鎖定狀態(tài)直到應(yīng)用程序解除鎖定,用戶應(yīng)根據(jù)需要重新配置芯片。進入和退出低功耗模式(LPMx.5)單片機技術(shù)與應(yīng)用進入LPMx.5前,需要進行以下操作:(1)適當配置I/O口。將所有端口設(shè)置為通用I/O口,實際應(yīng)用的每個端口保證沒有懸空輸入管腳。如果希望通過I/O口喚醒,需要恰當配置具有中斷能力的相關(guān)I/O口。(2)在LPMx.5模式下如果希望通過RTC(實時時鐘)喚醒,則需要配置RTC中斷。進入和退出低功耗模式(LPMx.5)單片機技術(shù)與應(yīng)用§3.2.3低功耗應(yīng)用原則一般的低功耗原則最大化延長其在LPM3或LPM4模式下的時間,用32KHz晶振作為ACLK時鐘,DCO用于CPU激活后的突發(fā)短暫運行。如果在應(yīng)用中有短暫性的周期工作并對反應(yīng)速度不敏感的場合,可以最大化的利用LPMx.5模式來降低功耗。用接口模塊代替軟件驅(qū)動功能。例如Timer_A和Timer_B可以自動產(chǎn)生PWM和捕獲外部時序,而不占用CPU資源。單片機技術(shù)與應(yīng)用§3.2.3低功耗應(yīng)用原則一般的低功耗原則用中斷控制程序運行。用可計算的分支代替標志位測試產(chǎn)生的分支。用快速查表代替冗長的軟件計算。在冗長的軟件計算中使用單周期的CPU寄存器。避免頻繁的子程序和函數(shù)調(diào)用。盡可能直接用電池供電。單片機技術(shù)與應(yīng)用§3.2.3低功耗應(yīng)用原則在設(shè)計外設(shè)時還有一些常規(guī)原則將不用的FETI輸入端連接到VSS。JTAG端口TMS、TCK和TDI不要連接到VSS。CMOS輸入端不能有浮空節(jié)點,將所有輸入端接適當?shù)碾娖?。不論對于?nèi)核還是對于各外圍模塊,選擇盡可能低的運行頻率,如果不影響功能應(yīng)設(shè)計自動關(guān)機。單片機技術(shù)與應(yīng)用與低功耗模式相關(guān)的內(nèi)部函數(shù)__bis_SR_register(LPM0_bits);或LPM0; //進入低功耗模式0__bis_SR_register(LPM1_bits);或LPM1; //進入低功耗模式1__bis_SR_register(LPM2_bits);或LPM2; //進入低功耗模式2__bis_SR_register(LPM3_bits);或LPM3; //進入低功耗模式3__bis_SR_register(LPM4_bits);或LPM4; //進入低功耗模式4__bic_SR_register_on_exit(LPM0_bits);或LPM0_EXIT;//退出低功耗模式0__bic_SR_register_on_exit(LPM1_bits);或LPM1_EXIT;//退出低功耗模式1__bic_SR_register_on_exit(LPM2_bits);或LPM2_EXIT;//退出低功耗模式2__bic_SR_register_on_exit(LPM3_bits);或LPM3_EXIT;//退出低功耗模式3__bic_SR_register_on_exit(LPM4_bits);或LPM4_EXIT;//退出低功耗模式4__bis_SR_register(LPMx_bits+GIE);//常用,進低功耗模式x,啟用中斷(x=0~4)#define LPM0_bits(CPUOFF)#define LPM1_bits(SCG0+CPUOFF)#define LPM2_bits(SCG1+CPUOFF)#define LPM3_bits(SCG1+SCG0+CPUOFF)#define LPM4_bits(SCG1+SCG0+OSCOFF+CPUOFF)低功耗模式定義單片機技術(shù)與應(yīng)用§3.2.4低功耗應(yīng)用舉例(1)利用軟件延時的方法實現(xiàn)LED閃爍#include<msp430f5529.h>voidmain(void){volatileunsignedinti;WDTCTL=WDTPW+WDTHOLD; //關(guān)閉看門狗

P1DIR|=BIT0; //將P1.0設(shè)置為輸出

while(1) //主循環(huán)

{P1OUT^=BIT0;//反轉(zhuǎn)P1.0引腳輸出狀態(tài)

for(i=50000;i>0;i--); //延時一段時間

}}例:假設(shè)MSP430F5529單片機的P1.0引腳外接一個紅色的小LED,分別利用軟件延遲和定時器實現(xiàn)LED閃爍。單片機技術(shù)與應(yīng)用(2)利用定時器延時實現(xiàn)LED閃爍#include<msp430f5529.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD; //關(guān)閉看門狗

P1DIR|=0x01; //將P1.0設(shè)為輸出

TA0CCTL0=CCIE; //CCR0中斷允許

TA0CCR0=50000;TA0CTL=TASSEL_2+MC_1+TACLR;//參考時鐘選擇SMCLK, //增計數(shù)模式,清除TAR計 //數(shù)器

__bis_SR_register(LPM0_bits+GIE); //進入LPM0并使能全局中斷}//TA0中斷服務(wù)程序#pragmavector=TIMER0_A0_VECTOR__interruptvoidTIMER0_A0_ISR(void){P1OUT^=0x01; //反轉(zhuǎn)P1.0端口狀態(tài)}單片機技術(shù)與應(yīng)用在利用軟件延時的方法實現(xiàn)LED閃爍的程序中,CPU從50000開始一直在減計數(shù),直到i等于0,反轉(zhuǎn)一次P1.0端口狀態(tài),之后繼續(xù)計數(shù),從不停止。在利用定時器延時的方法實現(xiàn)LED閃爍的程序中,當程序?qū)⒍〞r器TA0配置完成之后,MSP430單片機就進入LPM0模式,CPU立刻被停止。只有當定時時間到(50000個SMCLK時鐘周期),CPU才被喚醒執(zhí)行TA0中斷服務(wù)程序,進而反轉(zhuǎn)P1.0端口輸出狀態(tài),之后再次進入LPM0,等待定時時間到再反轉(zhuǎn)P1.0端口輸出狀態(tài)。單片機技術(shù)與應(yīng)用(1)采用等待的方法進行串口發(fā)送voidUSCI_A0_PutChar(charChr);/***********************************************************名稱:USCI_A0_PutChar()*功能:從串口發(fā)送1字節(jié)數(shù)據(jù)*入口參數(shù):Chr:待發(fā)送的1字節(jié)數(shù)據(jù)*出口參數(shù):無*說明:該函數(shù)在發(fā)送數(shù)據(jù)的過程中會阻塞CPU運行**********************************************************/voidUSCI_A0_PutChar(charChr){ UCA0TXBUF=Chr; while(!(UCA0IFG&UCTXIFG));//等待該字節(jié)發(fā)送完畢}例:MSP430F5529單片機從串口發(fā)送1個字節(jié)數(shù)據(jù),先將數(shù)據(jù)寫入發(fā)送寄存器,等待發(fā)送完畢,然后再發(fā)送下1個字節(jié)。利用低功耗模式替代程序流程中的等待過程。單片機技術(shù)與應(yīng)用(2)采用低功耗模式進行串口發(fā)送voidUSCI_A0_PutChar(charChr);/***********************************************************名稱:USCI_A0_PutChar()*功能:從串口發(fā)送1字節(jié)數(shù)據(jù)*入口參數(shù):Chr:待發(fā)送的1字節(jié)數(shù)據(jù)*出口參數(shù):無*說明:利用低功耗模式發(fā)送1字節(jié)數(shù)據(jù),不會阻塞CPU運行**********************************************************/voidUSCI_A0_PutChar(charChr){UCA0TXBUF=Chr;__bis_SR_register(LPM3_bits+GIE);}例:MSP430F5529單片機從串口發(fā)送1個字節(jié)數(shù)據(jù),先將數(shù)據(jù)寫入發(fā)送寄存器,等待發(fā)送完畢,然后再發(fā)送下1個字節(jié)。利用低功耗模式替代程序流程中的等待過程。單片機技術(shù)與應(yīng)用(2)采用低功耗模式進行串口發(fā)送//USCI_A0中斷服務(wù)程序#pragmavector=USCI_A0_VECTOR__interruptvoidUSCI_A0_ISR(void){switch(__even_in_range(UCA0IV,4)){case0:break; //中斷向量0—無中斷

case2:break; //中斷向量2—接收中斷

case4: //中斷向量4—發(fā)送中斷__bic_SR_register_on_exit(LPM3_bits);break;default:break;}}例:MSP430F5529單片機從串口發(fā)送1個字節(jié)數(shù)據(jù),先將數(shù)據(jù)寫入發(fā)送寄存器,等待發(fā)送完畢,然后再發(fā)送下1個字節(jié)。利用低功耗模式替代程序流程中的等待過程。單片機技術(shù)與應(yīng)用采用等待的方法發(fā)送數(shù)據(jù)速度較慢且會阻塞CPU的運行,同時,CPU也將耗去大部分的電能。若將等待過程替換成休眠模式,則可節(jié)省大量的CPU耗電。假設(shè)使用ACLK作為串口模塊的時鐘,進入LPM3后串口仍然工作,而CPU及大部分系統(tǒng)時鐘已經(jīng)停止工作,由串口發(fā)送完畢中斷喚醒CPU繼續(xù)執(zhí)行。單片機技術(shù)與應(yīng)用例:請用C語言編寫程序,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論