版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章MSP430系列單片機(jī)片內(nèi)外圍模塊
5.1MSP430系列單片機(jī)的時(shí)鐘模塊與低功耗結(jié)構(gòu)
5.2MSP430系列單片機(jī)的各種端口
5.3定時(shí)器
5.4硬件乘法器
5.5FLASH存儲(chǔ)器模塊
5.6比較器A5.7DMA控制器
5.8MSP430系列單片機(jī)的通用串行通信模塊
5.9MSP430系列單片機(jī)的模/數(shù)轉(zhuǎn)換模塊
5.10MSP430系列單片機(jī)的數(shù)/模轉(zhuǎn)換模塊
5.11MSP430系列單片機(jī)液晶驅(qū)動(dòng)模塊
習(xí)題
5.1MSP430系列單片機(jī)的時(shí)鐘模塊與低功耗結(jié)構(gòu)
5.1.1時(shí)鐘模塊
MSP430系列單片機(jī)的時(shí)鐘模塊由高速晶體振蕩器、低速晶體振蕩器、數(shù)字控制振蕩器DCO、鎖頻環(huán)FLL以及鎖頻環(huán)增強(qiáng)版本FLL+等部分構(gòu)成。不同系列單片機(jī)所包含的時(shí)鐘模塊不完全相同,但是各系列不同基礎(chǔ)時(shí)鐘模塊均可輸出ACLK(輔助時(shí)鐘)、MCLK(主系統(tǒng)時(shí)鐘)和SMCLK(子系統(tǒng)時(shí)鐘)3種不同頻率,如圖5-1所示。
圖5-1MSP430的時(shí)鐘
1.時(shí)鐘模塊概述
時(shí)鐘信號(hào)是定時(shí)操作的基本信號(hào)。在系統(tǒng)的時(shí)鐘作用下,單片機(jī)內(nèi)各部件可以有條不紊地自動(dòng)工作。
在數(shù)字系統(tǒng)中,系統(tǒng)功耗與頻率成正比,所以實(shí)際應(yīng)用中常希望系統(tǒng)能夠具有滿足節(jié)能要求的低頻系統(tǒng)時(shí)鐘,也能夠具有快速響應(yīng)事件請(qǐng)求的高頻系統(tǒng)時(shí)鐘。MSP430單片機(jī)的系統(tǒng)時(shí)鐘設(shè)計(jì)滿足了這些不同的要求:
高頻率,用于對(duì)系統(tǒng)硬件需求和外部事件快速響應(yīng)。
低頻率,用于降低電流消耗。
穩(wěn)定的頻率,以滿足定時(shí)應(yīng)用,如實(shí)時(shí)時(shí)鐘RTC。
低Q值振蕩器,用于保證開始及停止操作最小時(shí)間延遲。
各種時(shí)鐘的頻率應(yīng)由設(shè)計(jì)者根據(jù)所需模塊、處理速度等的實(shí)際需要以及對(duì)功耗的要求來(lái)綜合考慮。MSP430采用了一個(gè)低頻晶體振蕩器,并將其倍頻至標(biāo)稱的工作頻率范圍,即
MSP430通過鎖頻環(huán)FLL以及增強(qiáng)鎖頻環(huán)FLL+等部件,將晶振頻率倍頻至系統(tǒng)頻率。數(shù)字控制振蕩器DCO和鎖相環(huán)FLL技術(shù)的結(jié)合可以實(shí)現(xiàn)快速啟動(dòng)。在晶體振蕩器失效時(shí),DCO可自動(dòng)用于系統(tǒng)時(shí)鐘。MSP430所有器件都有時(shí)鐘模塊,都可以實(shí)現(xiàn)超低功耗應(yīng)用。
MSP430X1XX系列單片機(jī)基礎(chǔ)時(shí)鐘模塊結(jié)構(gòu)如圖5-2所示,其中MSP430X11X與MSP430X12X內(nèi)部沒有XT2高頻振蕩器。
圖5-2MSP430F13X/14X基礎(chǔ)時(shí)鐘模塊結(jié)構(gòu)
MSP430X1XX基礎(chǔ)時(shí)鐘模塊有以下3個(gè)時(shí)鐘輸入源。
LFXT1CKL為低頻時(shí)鐘源,由32768Hz晶體、標(biāo)準(zhǔn)晶體或陶瓷諧振器以及外接450kHz~8MHz時(shí)鐘源產(chǎn)生。
XT2CLK為高頻時(shí)鐘源,由標(biāo)準(zhǔn)晶體、陶瓷諧振器或外接450kHz~8MHz時(shí)鐘源產(chǎn)生。
DCOCLK為片內(nèi)數(shù)字控制RC振蕩器,經(jīng)常用作系統(tǒng)和外設(shè)的時(shí)鐘信號(hào)。
DCOCLK可提供3種時(shí)鐘信號(hào):
ACLK(輔助時(shí)鐘)。ACLK是LFXT1CLK信號(hào)經(jīng)1、2、4、8分頻后得到的。ACLK可由軟件選作各外圍模塊的時(shí)鐘信號(hào),一般用于低速外設(shè)。
MCLK(系統(tǒng)主時(shí)鐘)。MCLK可由軟件選擇來(lái)自LFXT1CLK、XT2CLK、DOCCLK三者之一,然后經(jīng)1、2、4、8分頻得到。MCLK主要用于CPU和系統(tǒng)。
SMCLK(子系統(tǒng)時(shí)鐘)。SMCLK可由軟件選擇來(lái)自LFXT1CLK、XT2CLK和DOCCLK其中之一,然后經(jīng)1、2、4、8分頻得到。SMCLK主要用于高速外圍模塊。
根據(jù)不同的應(yīng)用要求和系統(tǒng)條件,MSP430X14X、MSP430F15X、MSP430F4XX等系列器件可以通過端口引腳在外部使用ACLK、SMCLK和MCLK時(shí)鐘信號(hào)。
系統(tǒng)頻率和系統(tǒng)的工作電壓密切相關(guān)。某些應(yīng)用中可能需要較高的工作電壓,所以也需要系統(tǒng)提供相應(yīng)較高的頻率,系統(tǒng)頻率和系統(tǒng)工作電壓之間的關(guān)系如圖5-3所示。
圖5-3頻率和工作電壓的關(guān)系
2.低速晶體振蕩器
MSP430系列的每種產(chǎn)品中都含有低速晶體振蕩器——LFXT1。LFXT1振蕩器默認(rèn)工作模式是32768Hz低頻模式,32768Hz晶振通過XIN和XOUT兩個(gè)引腳連接,所有保證工作穩(wěn)定的元件和移相電容都集成在芯片中,這樣可降低系統(tǒng)成本和系統(tǒng)功耗。LFXT1也可以通過外接450kHz~8MHz的高速晶體振蕩器或陶瓷諧振器工作在高頻模式,這時(shí)兩個(gè)引腳還需外接電容,電容大小應(yīng)根據(jù)晶體或振蕩器特性來(lái)選擇。
LFXT1的邏輯控制如圖5-4所示。發(fā)生有效的上電清除信號(hào)PUC后,LFXT1振蕩器開始工作。一次有效PUC信號(hào)可以將SR寄存器(狀態(tài)寄存器)中的OSCOFF位復(fù)位,即允許LFXT1工作。如果LFXT1CLK信號(hào)沒有用作SMCLK或MCLK信號(hào),也可以通過軟件置位OSCOFF,以禁止LFXT1工作。
圖5-4LFXT1振蕩器邏輯控制圖
3.高速晶體振蕩器
高速振蕩器即第二振蕩器XT2,主要存在于X13X,X14X,X15X,X16X,X43X,X44X等器件中,它的工作特性與LFXT1振蕩器工作在高頻模式時(shí)類似,時(shí)鐘信號(hào)XT2CLK由它產(chǎn)生。XT2的邏輯控制如圖5-5所示,如果XT2CLK信號(hào)沒有用作時(shí)鐘MCLK和SMCLK,可以通過置位控制位XT2OFF(BCSCTL1)關(guān)閉XT2。
圖5-5XT2的邏輯控制圖
4.DCO振蕩器
MSP430的兩個(gè)外部振蕩器產(chǎn)生的時(shí)鐘信號(hào)都可以經(jīng)1、2、4、8分頻后用做系統(tǒng)主時(shí)鐘MCLK。如果振蕩器失效,DCO振蕩器會(huì)自動(dòng)被選作MCLK的時(shí)鐘源,因此由振蕩器失效引起的NMI中斷請(qǐng)求可以得到響應(yīng),甚至在CPU關(guān)閉的情況下也能得到處理。MSP430可以讓任意被允許的中斷請(qǐng)求在低功耗模式下得到服務(wù),甚至在LPM4模式下。MCLK在中斷服務(wù)時(shí)自動(dòng)有效。
DCO振蕩器是一個(gè)可數(shù)字控制的RC振蕩器,它的頻率隨供電電壓、環(huán)境溫度的變化而變化,具有一定的不穩(wěn)定性。DCO頻率可以通過DCO控制寄存器中的控制位來(lái)增強(qiáng)振蕩頻率的穩(wěn)定性。
當(dāng)DCO信號(hào)沒有用作SMCLK和MCLK時(shí)鐘信號(hào)時(shí),可以用狀態(tài)寄存器SR中的控制位SCG0關(guān)閉直流發(fā)生器,直流發(fā)生器消耗的電流定義了DCOCLK的基本頻率。DCO的控制邏輯如圖5-6所示。
圖5-6DCO的控制邏輯
在信號(hào)復(fù)位(PUC)之后,由DCOCLK作MCLK的時(shí)鐘信號(hào),根據(jù)需要可將MCLK的時(shí)鐘源另外設(shè)置為L(zhǎng)FXT1或者XT2,設(shè)置順序如下:
①?gòu)?fù)位OSCOFF;
②清除OFIFG;
③延時(shí)等待至少50μs;
④再次檢查OFIFG,如果仍然置位,則重復(fù)①~④步驟,直到OFIFG=0為止。
程序如下:
;SelectLFXT1(HFmode)forMCLK
BIC#OSCOFF,SR;Turnonosc.
BIS.B#XTS,BCSCTL1;HFmode
L1BIC.B#OFIFG,&IFG1;ClearOFIFG
MOV#OFFH,R15;Delay
L2 DECR15
JNZL2
BIT.B#OFIFG,&IFG1 ;Re-testOFIFG
JNZL1 ;Repeattestifneeded
BIS.B#SELM1+SELM0,&BCSCTL2 ;SelectLFXT1CLK
5.基本時(shí)鐘模塊失效操作
基本時(shí)鐘模塊具有振蕩器失效檢測(cè)功能。振蕩器失效檢測(cè)器是能夠監(jiān)控LFXT1CLK(在HF模式)和XT2CLK的一個(gè)模擬電路。當(dāng)任意一個(gè)時(shí)鐘信號(hào)在大約50μs內(nèi)不出現(xiàn)時(shí),可以檢測(cè)出振蕩器失效。當(dāng)檢測(cè)到振蕩器失效并且在MCLK來(lái)源于LFXT1(在HF模式)或XT2時(shí),DCO振蕩器會(huì)自動(dòng)被選作MCLK的時(shí)鐘源,因此在振蕩器失效的情況下,代碼可以繼續(xù)執(zhí)行。
6.基本時(shí)鐘模塊寄存器
這里以MSP430F1XX系列為例,介紹時(shí)鐘模塊的3個(gè)控制寄存器,如表5-1所示。
表5-1MSP430F1XX時(shí)鐘模塊寄存器
(1)?DCOCTL:DCO控制寄存器,用戶可以通過靈活設(shè)置DCOCTL得到所需頻率。各位定義如下:
DCO.0~DCO.2:定義8種頻率之一,可分段調(diào)節(jié)DCOCLK頻率,相鄰兩種頻率相差10%。而頻率由注入直流發(fā)生器的電流定義。
MOD.0~MOD.4:定義在32個(gè)DCO周期中插入的fDCO+1周期個(gè)數(shù),而在余下的DCO周期中為fDCO周期,控制切換DCO和DCO+1選擇的兩種頻率。如果DCO常數(shù)為7,則已選擇最高頻率,此時(shí)不能用MOD.0~MOD.4進(jìn)行調(diào)整。
(2)?BCSCTL1:基本時(shí)鐘系統(tǒng)控制寄存器1。其各位定義如下:
XT2OFF:控制XT2振蕩器的開啟與關(guān)閉。
0XT2振蕩器開啟;
1XT2振蕩器關(guān)閉(默認(rèn)XT2關(guān)閉)。XTS:控制LFXT1工作模式,選擇需結(jié)合實(shí)際晶體振蕩器連接情況。
0LFXT1工作在低頻模式(默認(rèn)低頻模式);
1LFXT1工作在高頻模式(必須連接有相應(yīng)高頻時(shí)鐘源)。
DIVA.0DIVA.1:控制ACLK分頻。
XT5V:此位需為0。Rsel.0,Rsel.1,Rsel.2:
三位控制某個(gè)內(nèi)部電阻以決定標(biāo)稱頻率。
圖5-7DCO頻率的調(diào)整
(3)?BCSCTL2:基本時(shí)鐘系統(tǒng)控制寄存器2。各位定義如下:
SELM.0,SELM.1:選擇MCLK時(shí)鐘源。
DIVM.0,DIVM.1:選擇MCLK分頻。
SELS:選擇SMCLK時(shí)鐘源。
0時(shí)鐘源為DCOCLK(默認(rèn)時(shí)鐘源);
1片內(nèi)有XT2的,時(shí)鐘源為XT2CLK,片內(nèi)無(wú)XT2的,時(shí)鐘源為L(zhǎng)FXT1CLK。
DIVS.0,DIVS.1:選擇SMCLK分頻。
DCOR:選擇DCO電阻。
0內(nèi)部電阻;
1外部電阻。
7.MSP430F4XX系列時(shí)鐘模塊
MSP430F4XX系列的時(shí)鐘模塊中使用了增強(qiáng)型鎖頻環(huán)技術(shù)FLL+,時(shí)鐘模塊同樣有DCO、LFXT1振蕩器和LFXT2振蕩器(41/42系列沒有LFXT2振蕩器),硬件可自動(dòng)調(diào)整DCO頻率,支持時(shí)鐘配置的超低功耗應(yīng)用,可以在低頻振蕩器的驅(qū)動(dòng)下得到較高的穩(wěn)定頻率。
如圖5-8所示,MSP430F4XX的時(shí)鐘模塊的3個(gè)時(shí)鐘源(LFXT1CLK、
XT2CLK、DCOCLK)可提供4種時(shí)鐘信號(hào):
ACLK(輔助時(shí)鐘):ACLK來(lái)自LFXT1CLK信號(hào),ACLK可由軟件選作各外圍模塊的時(shí)鐘信號(hào),一般用于低速外設(shè)。
ACLK/n:ACLK經(jīng)1、2、4、8分頻后由引腳P1.5輸出,僅供外部電路使用。這可保證MSP430F4XX和MSP430X1XX系列的時(shí)鐘系統(tǒng)相兼容。
MCLK(系統(tǒng)主時(shí)鐘):MCLK可由軟件選擇來(lái)自LFXT1CLK、XT2CLK(器件具有XT2CLK)和DCOCLK三者之一,然后經(jīng)1、2、4、8分頻得到。MCLK主要用于CPU和
系統(tǒng)。
圖5-8MSP430F4XX時(shí)鐘模塊
SMCLK(子系統(tǒng)時(shí)鐘):可由軟件選擇來(lái)自XT2CLK(器件具有XT2CLK)和DCOCLK,SMCLK主要用于高速外圍模塊。
MSP430系列FLL+時(shí)鐘系統(tǒng)支持以下情況:
快速響應(yīng)硬件要求或者外部事情請(qǐng)求,設(shè)為高頻率(DCO/FLL+XT1)。
降低電流消耗,設(shè)為低頻率(LF)。
定時(shí)應(yīng)用時(shí)采用穩(wěn)定的外部時(shí)鐘源。
允許最短延遲時(shí)間啟動(dòng)
——?停止操作(DCO)。
1)?FLL+運(yùn)行模式
當(dāng)RC振蕩器受溫度和壓力的影響而使頻率發(fā)生偏移時(shí),F(xiàn)LL+通過比較ACLK和DCOCLK/(N+1)的大小,由頻率積分器產(chǎn)生一個(gè)10位的頻率偏差,積分器根據(jù)這個(gè)偏差控制調(diào)整DCOCLK的頻率,形成一個(gè)調(diào)整反饋環(huán)。DCO頻率積分器的輸出可以在SCFI0和SCFI1中讀出。計(jì)數(shù)器在每個(gè)ACLK周期進(jìn)行+1或-1調(diào)整。頻率積分器的10位是由硬件自動(dòng)調(diào)節(jié)的,其中5位由DCO的頻率周期選擇,5位由調(diào)制器控制。在每32個(gè)DCOCLK時(shí)鐘周期中,周期累加的變化可以通過調(diào)制器混合相鄰兩個(gè)DCOCLK周期來(lái)克服,如圖5-9所示。如果寄存器SCFQCTL1中的控制位M置位,調(diào)制器被禁止,臨近的DCO周期不被混合。當(dāng)狀態(tài)寄存器(SR)的控制位SCG0=1時(shí),F(xiàn)LL+停止操作。
圖5-9調(diào)制器操作
鎖相環(huán)技術(shù)使DCOCLK的頻率非常穩(wěn)定,F(xiàn)LL+和DCO結(jié)合具有快速啟動(dòng)和數(shù)控信號(hào)的特點(diǎn):
快速啟動(dòng)時(shí),MSP430F4XX的DCO振蕩器的響應(yīng)時(shí)間小于6μs,可支持長(zhǎng)睡眠周期和突發(fā)事件的相應(yīng)。
數(shù)控信號(hào)。DCO振蕩器啟動(dòng)時(shí)有相同的設(shè)置,這就使正常運(yùn)行時(shí)不需要很長(zhǎng)的鎖定周期。
2)
FLL+失效控制
MSP430的硬件電路能夠檢測(cè)振蕩器是否失效。一般當(dāng)振蕩器丟失在約100個(gè)振蕩周期時(shí)設(shè)置振蕩器失效標(biāo)志OscFault。OscFault標(biāo)志令振蕩器失效中斷標(biāo)志OFIFG置位,F(xiàn)LL+振蕩器失效邏輯如圖5-10所示。
圖5-10FLL+振蕩器邏輯
FLL+振蕩器有以下4種失效情況:
XT2OF:XT2振蕩器失效。
XT1OF:LFXT1振蕩器在高頻模式(HF)下失效。
LFOF:LFXT1振蕩器在低頻模式(LF)下失效。
DCOF:DCO振蕩器失效。
FLL+振蕩器失效會(huì)影響特殊功能振蕩器的OFIFG和OFIE兩個(gè)控制位。只要振蕩器失效,振蕩失效信號(hào)就會(huì)使OFIFG標(biāo)志置位,如果OFIE也置位,振蕩失效中斷將請(qǐng)求一個(gè)非屏蔽中斷,非屏蔽中斷被響應(yīng)后,OFIE自動(dòng)復(fù)位。OFIE的初始狀態(tài)是復(fù)位的,即使有振蕩失效情況發(fā)生也不會(huì)有振蕩失效請(qǐng)求中斷。其中,振蕩器失效中斷允許位(OFIE)位于中斷允許寄存器IE1的1位;振蕩器失效中標(biāo)志位(OFIFG)位于中斷寄存器IFG1的1位。
振蕩器只可由單獨(dú)的允許位OFIE屏蔽,即使通用中斷允許GIE復(fù)位也不能禁止。用戶在使用過程中,通常在PUC后必須編制一段程序來(lái)識(shí)別或設(shè)置振蕩器狀態(tài),以防止因振蕩故障信號(hào)有效而將OFIFG永久置位。由于PUC將OFIE復(fù)位,因此,這時(shí)不會(huì)發(fā)生中斷請(qǐng)求。當(dāng)從振蕩器故障來(lái)的中斷請(qǐng)求被接受時(shí),中斷允許位OFIE自動(dòng)復(fù)位以阻止繼續(xù)到來(lái)的中斷請(qǐng)求,直到軟件做出適當(dāng)?shù)捻憫?yīng)使振蕩器故障信號(hào)失效,在到達(dá)這一狀態(tài)后,OFIE可以按模塊中斷一般規(guī)則重新置位。振蕩器故障事件不受通用中斷允許位的影響。
中斷標(biāo)志OFIFG也用于在中斷服務(wù)程序的開始識(shí)別中斷源。OFIFG的置位與NMI事件無(wú)關(guān),它的作用是支配性的。
當(dāng)中斷請(qǐng)求被接受得到服務(wù)時(shí),中斷標(biāo)志OFIFG仍保持置位。這是強(qiáng)制性的,因?yàn)樗桥cNMI中斷一起構(gòu)成多源中斷,并要指示軟件處理振蕩器故障事件。首先服務(wù)OFIFG的條件使得這一事件的優(yōu)先級(jí)比NMI事件更高。
3)?MSP430F4XX時(shí)鐘模塊寄存器
MSP430F4XX時(shí)鐘模塊寄存器如表5-2所示,這些控制寄存器都是字節(jié)形式的,必須以字節(jié)指令來(lái)訪問。
表5-2MSP430F4XX時(shí)鐘模塊寄存器
(1)?SCFQCTL:系統(tǒng)時(shí)鐘控制寄存器。各位定義如下:
M:調(diào)制器使能控制位。
0調(diào)制器使能;
1調(diào)制器禁止。
N:DCOCLK倍數(shù)選擇位。若DCO+=0,則FDCOCLK=(N+1)×fcrystal;若DCO+=1,則FDCOCLK=D×(N+1)×fcrystal。在PUC信號(hào)后,如果ACLK?=?32768Hz,SCFQCTL的值默認(rèn)為31,DCO+=0,SMCLK和MCLK為:32?×?fcrystal=1.048576MHz。
(2)?SCFI0:系統(tǒng)頻率積分寄存器0。各位定義如下:
MODx(LSBx):是10位DCOCLK頻率調(diào)整參數(shù)的最后兩位,含義見SCFI1寄存器部分。這10位DCOCLK頻率調(diào)整參數(shù)由FLL+硬件自動(dòng)完成。
FLLDx:FFL+環(huán)分頻系數(shù)D,DCOCLK在FLL+反饋環(huán)中被分頻。
00不分頻;
012分頻;
104分頻;
118分頻。
表5-3頻率的可調(diào)整范圍
DCOCLK的頻率由軟件來(lái)確定,如果狀態(tài)寄存器中的控制位SCG1復(fù)位,則DCOCLK有效,如果SCG1置位,則DCOCLK停止。控制位FN_8、FN_4、FN_3、FN_2可以調(diào)整DCOCLK的范圍。如果根據(jù)目標(biāo)頻率需要對(duì)FN_X位進(jìn)行改變,可增加D或者設(shè)置DCO+,以下幾個(gè)步驟可以確保頻率不會(huì)超出系統(tǒng)所允許的最高頻率。
保證FLL+鎖定位(SCG0在狀態(tài)寄存器中)并把它置位,關(guān)閉反饋環(huán)控制。
把新數(shù)值裝入調(diào)整寄存器SCFQCTL(調(diào)整位M,乘數(shù)N)。
將DCO控制位置位,調(diào)整器高位置位:SCFI1=0FH,使得芯片以盡可能低的頻率工作。
選擇DCO+控制位為1或者0。
將控制寄存器SCFI0裝入新的數(shù)值。
還原或設(shè)置FLL+控制位。
(3)?SCFI1:系統(tǒng)頻率積分寄存器1。各位定義如下:
DCOx:DCOCLK頻率周期控制,這5位控制DCOCLK頻率周期的29種組合(最高4種相同),每一個(gè)組合比前一個(gè)高10%。
MODx:調(diào)制器控制位的高3位,低2位在寄存器SCFI0中,這3位控制32種可能的周期混合方式。
(4)?FLL_CTL0:FLL+控制寄存器0。各位定義如下:
DCO+:DCO用作MCLK或SMCLK前是否需要預(yù)分頻選擇位。
0不分頻;
1分頻。XTS_FLL:LFXT1模式選擇位。
0低頻模式;
1高頻模式。
OscCap:振蕩器電容選擇位。
001pF;
016pF;
108pF;
1110pF。
XT2OF:XT2振蕩器失效標(biāo)志位(MSP430F41/42中沒有XT2)。
0沒有失效;
1失效。
XT1OF:LFXT1振蕩器在高頻模式(HF)下失效標(biāo)志位。
0沒有失效;
1失效。
LFOF:LFXT1振蕩器在低頻模式(LF)下失效標(biāo)志位。
0沒有失效;
1失效。
DCOF:DCO振蕩器失效標(biāo)志位。
0沒有失效;
1失效。
(5)?FLL_CTL1:FLL+控制寄存器1。各位定義如下:
SMCLKOFF:時(shí)鐘信號(hào)SMCLK關(guān)閉控制位。
0打開SMCLK;
1
關(guān)閉SMCLK。
XT2OFF:XT2振蕩器關(guān)閉控制位。如果XT2沒有被用做MCLK(SELM≠2或CPUOFF=1)或SMCLK(SELS=0或者SMCLKOFF=1),則關(guān)閉XT2。
0打開XT2;
1關(guān)閉XT2。
SELMx:MCLK時(shí)鐘源選擇位。
00DCOCLK;
01DCOCLK;
10XT2CLK;
11LFXT1CLK。
SELS:SMCLK時(shí)鐘源選擇位。
0DCOCLK;
1XT2CLK。
FLL_DIV:LFXT1頻率的分頻因子選擇位。
00不分頻;
012分頻;
104分頻;
118分頻。
8.基礎(chǔ)時(shí)鐘模塊應(yīng)用舉例
例5.1
設(shè)MCLK=XT2,SMCLK=DCOCLK,將MCLK由P5.4口輸出。
程序如下:
#include"msp430x14x.h"
voidmain(void)
{
unsignedinti;
WDTCTL=WDTPW+WDTHOLD;//停止WDT
P5DIR|=0x10;
//P5.4輸出
P5SEL=0x10;//P5.4用作MCLK輸出
BCSCTL1&=~XT2OFF;//XT2有效
do
{
IFG1&=~OFIFG;
//清除振蕩器失效標(biāo)志
For(i=0xFF;i>0;i=--); //穩(wěn)定時(shí)間
}
while(IFG1&OFIFG)!=0);//如果振蕩器失效標(biāo)志存在
BCSCTL2|=SELM1;
//MCLK=XT2
for(;;)
}
例5.2
設(shè)ACLK=LFXT1=?32768Hz,MCLK=(n+1)×2×ACLK,將MCLK和ACLK分別通過P1.1和P1.5輸出。
程序如下:
//測(cè)得p1.5ACLK=32.768K 輔助時(shí)鐘
//測(cè)得P1.1MCLK=7.995M 系統(tǒng)主時(shí)鐘
#include"msp430x44x.h"
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD; //停止看門狗
SCFI0|=FN_4;
SCFQCTL=121;//(121+1)×32768×2=7.99MHz
FLL_CTL0=DCOPLUS+XCAP18PF;
P1DIR=0x22;//P1.1和P1.5輸出
P1SEL=0x22;//P1.1和P1.5輸出
MCLK和
ACLK
while(1);
}
例5.3
設(shè)ACLK=LFXT1=32768Hz,MCLK選SCFQCTL默認(rèn)值31,SMCLK選擇XT2CLK。
//測(cè)得p1.5ACLK=32.768k 輔助時(shí)鐘
//測(cè)得P1.4SMCLK=4M 子系統(tǒng)時(shí)鐘
//測(cè)得P1.1MCLK=1.048M 系統(tǒng)主時(shí)鐘
#include"msp430x44x.h"
voidmain(void)
{
unsignedinti;
WDTCTL=WDTPW+WDTHOLD;//停止看門狗
5.1.2低功耗結(jié)構(gòu)
1.低功耗控制
當(dāng)系統(tǒng)時(shí)鐘發(fā)生器基本功能建立以后,CPU中狀態(tài)寄存器SR中的SCG1、SCG2、OSCOFF和CPUOFF位就是重要的低功耗控制位。各控制位的作用如下:
SCG1:當(dāng)SCG1復(fù)位時(shí),使能SMCLK;SCG1置位則禁止SMCLK。
SCG0:當(dāng)SCG0復(fù)位時(shí),直流發(fā)生器被激活,只有SCG0被置位且DCOCLK信號(hào)沒有用作MCLK或SMCLK,直流發(fā)生器才能被禁止。當(dāng)電流關(guān)閉(SCG0=0)時(shí),DCO的啟動(dòng)有些延遲,延遲時(shí)間在μs范圍內(nèi)(具體看器件參數(shù))。
OSCOFF:當(dāng)OSCOFF復(fù)位時(shí),LFXT1晶體振蕩器被激活,只有當(dāng)OSCOFF被置位且不用于MCLK或SMCLK時(shí),LFXT1晶體振蕩器才能被禁止。當(dāng)使用振蕩器關(guān)閉選項(xiàng)OSCOFF時(shí),需要考慮晶體振蕩器的啟動(dòng)設(shè)置時(shí)間。
CPUOFF:當(dāng)OSCOFF復(fù)位時(shí),用于CPU的時(shí)鐘信號(hào)MCLK被激活;當(dāng)CPUOFF置位時(shí),MCLK停止。
2.系統(tǒng)工作模式
MSP430系列單片機(jī)有6種不同的工作模式,包括1種活動(dòng)模式和5種低功耗模式。MSP430工作模式是通過控制位SCG0、SCG1、OSCOFF、CPUOFF來(lái)設(shè)置實(shí)現(xiàn)的,如表5-4所示。在各種工作模式下,時(shí)鐘系統(tǒng)所產(chǎn)生的3種時(shí)鐘活動(dòng)狀態(tài)也是各不相同的。
表5-4各種工作模式、各控制位及時(shí)鐘的活動(dòng)狀態(tài)
圖5-11MSP430工作模式狀態(tài)圖
圖5-12各種工作模式下MSP430的耗電情況
3.超低功耗的運(yùn)行與管理
MSP430工作模式通過模塊的智能化運(yùn)行管理和CPU的狀態(tài)組合來(lái)支持超低功耗各種要求。MSP430的低功耗特性既可以保持工作狀態(tài),又可以根據(jù)要求工作。系統(tǒng)的這些低功耗特性是靠系統(tǒng)對(duì)中斷的響應(yīng)來(lái)實(shí)現(xiàn)的。
MSP430系列單片機(jī)各個(gè)模塊運(yùn)行完全是獨(dú)立的,定時(shí)器、I/O、A/D轉(zhuǎn)換、看門狗、液晶顯示器等都可以在主CPU休眠的狀態(tài)下獨(dú)立運(yùn)行。當(dāng)需要主CPU工作時(shí),任何一個(gè)模塊都可以通過中斷喚醒CPU,從而使系統(tǒng)以最低功耗運(yùn)行。這一點(diǎn)是MSP430系列單片機(jī)最突出的優(yōu)點(diǎn),也是與其他單片機(jī)的最大區(qū)別。
在通常情況下,根據(jù)需要可使用軟件將CPU設(shè)定到某一種低功耗工作模式下,在需要時(shí)再使用中斷將CPU從休眠狀態(tài)中喚醒,完成工作之后又可以進(jìn)入相應(yīng)的休眠狀態(tài),CPU只工作于突發(fā)狀態(tài)。
根據(jù)運(yùn)行需要,MSP430可以通過中斷事件從各種低功耗模式轉(zhuǎn)化到活動(dòng)模式,又可以從活動(dòng)模式進(jìn)入相應(yīng)的低功耗方式(LPM0,LPM3或LPM4)。基于一般的低功耗原則,對(duì)于MSP430系列單片機(jī)在設(shè)計(jì)中還應(yīng)該注意以下幾點(diǎn)。
最大化LPM3的時(shí)間,用32768Hz晶振作為ACLK時(shí)鐘,DCO用于CPU激活后的突發(fā)短暫運(yùn)行。
用接口模塊代替軟件驅(qū)動(dòng)功能。
避免頻繁的子程序和函數(shù)調(diào)用。
盡可能直接用電池供電。
盡量用快速查表代替冗長(zhǎng)的軟件計(jì)算。在軟件計(jì)算中使用單周期的CPU寄存器。
將不用的FETI輸入端接到VSS。
JTAG端口TMS、TCK和TDI不要連接到VSS。
CMOS輸入端不能有浮空節(jié)點(diǎn),將所有的輸入端接適當(dāng)電平。
不論對(duì)于內(nèi)核還是對(duì)于外圍模塊,選擇盡可能低的運(yùn)行頻率,如果不影響功能應(yīng)設(shè)計(jì)自動(dòng)關(guān)機(jī)。
用中斷控制程序運(yùn)行。
系統(tǒng)響應(yīng)中斷的過程如下。
(1)硬件自動(dòng)中斷服務(wù)。
PC入棧。
SR入棧。
中斷向量賦給PC。
GIE,CPUOFF,OSCOFF和SCG1清除。
IFG標(biāo)志位清除(單源中斷標(biāo)志)。
(2)執(zhí)行中斷處理子程序。
(3)執(zhí)行RETI指令(中斷返回)。
SR出棧(恢復(fù)原來(lái)的標(biāo)志)。
PC出棧。
系統(tǒng)響應(yīng)中斷時(shí)的堆棧情況如圖5-13。
通過對(duì)系統(tǒng)響應(yīng)的中斷過程分析,可以更加深刻地認(rèn)識(shí)MSP430系列單片機(jī)的低功耗特性。
中斷將CPU從休眠狀態(tài)中喚醒。在中斷處理過程中可以自動(dòng)對(duì)控制位GIE、CPUOFF、OSCOFF和SCG1清除,從而使CPU進(jìn)入活動(dòng)模式。
系統(tǒng)低功耗模式的保持。中斷響應(yīng)時(shí)可以將SR入棧保存,即保存了系統(tǒng)某種低功耗狀態(tài);中斷響應(yīng)結(jié)束時(shí),可以通過RETI指令將SR出棧,這樣就恢復(fù)了系統(tǒng)進(jìn)入中斷前的低功耗狀態(tài);可以讓系統(tǒng)繼續(xù)保持這種低功耗狀態(tài),直到下一次中斷事件的出現(xiàn),系統(tǒng)進(jìn)入活動(dòng)模式開始處理中斷。
圖5-13系統(tǒng)響應(yīng)中斷時(shí)的堆棧
系統(tǒng)根據(jù)需求可以在各種低功耗模式之間切換。SR寄存器內(nèi)容能夠決定系統(tǒng)的工作模式。由系統(tǒng)響應(yīng)中斷過程可見,SR在中斷初期被入棧保存,在中斷結(jié)束時(shí)恢復(fù)出棧,繼續(xù)控制系統(tǒng)的工作模式,所以可以在中斷處理子程序過程中,根據(jù)中斷結(jié)束之后要進(jìn)入的工作模式,對(duì)SR內(nèi)容進(jìn)行相應(yīng)的設(shè)置,這樣當(dāng)前事件處理完畢,執(zhí)行RETI指令時(shí),系統(tǒng)就能按照出棧的SR內(nèi)容進(jìn)入另一種工作模式。
例如:系統(tǒng)初始化完畢之后工作于低功耗模式0,中斷事件觸發(fā)到活動(dòng)模式,中斷處理結(jié)束后進(jìn)入到低功耗模式3,只有程序代碼中單位時(shí)間到之后,才能觸發(fā)一個(gè)極短暫的運(yùn)行。
5.2MSP430系列單片機(jī)的各種端口
5.2.1MSP430端口概述目前MSP430所有系列單片機(jī)的總線都不對(duì)外開放,所以端口就成為用戶可以利用的重要資源。MSP430的端口可以直接用于輸入/輸出,以實(shí)現(xiàn)多功能復(fù)用,還可以為MSP430系統(tǒng)擴(kuò)展設(shè)備提供必要的邏輯控制信號(hào)。常見的鍵盤接口電路可以直接用端口進(jìn)行模擬,用查詢或中斷方式控制。MSP430端口主要具有以下特點(diǎn)。
1.端口類型豐富
目前產(chǎn)品中有端口P1、P2、P3、P4、P5、P6、P7、P8、P9、P10S和COM。產(chǎn)品因型號(hào)不同可包含上述全部或部分端口,如表5-5所示。其中MSP430X3XX系列中有P0口和三態(tài)輸出端口TP0,P0口與其它端口稍有不同,后面會(huì)具體給出說明。
表5-5MSP430的端口
2.端口功能
MSP430各端口功能如表5-6所示。
表5-6MSP430端口功能
3.端口寄存器
MSP430中不同的端口含有的控制寄存器不同,其中P1和P2具有7個(gè)寄存器,P3、P4、P5、P6具有4個(gè)寄存器。每個(gè)I/O位都可以通過編程寄存器進(jìn)行獨(dú)立設(shè)置,允許任意組合輸入、輸出和中斷。每個(gè)端口都可以按字節(jié)輸入、輸出,也可以按位進(jìn)行操作。其中,P0、P1和P2還可作外部中斷的輸入口使用。
4.端口數(shù)據(jù)輸出特性
微處理器輸入端口的漏電流對(duì)系統(tǒng)的耗電影響很大。MSP430單片機(jī)輸入端口的漏電流最大為50nA,遠(yuǎn)低于其它系列單片機(jī)(一般為1~10μA)。不管是灌電流還是拉電流,每個(gè)端口的輸出晶體管都能限制輸出電流(最大約6mA),保證系統(tǒng)安全。以P1.0為例,端口低電平和高電平輸出特性如圖5-14和圖5-15所示。
圖5-14低電平輸出特性
圖5-15高電平輸出特性
5.2.2端口P0、P1和P2
端口P0、P1和P2具有輸入/輸出功能和中斷功能,每個(gè)信號(hào)都可作為一個(gè)中斷源和外部模塊功能(除P0外)。這些功能可以通過它們各自的控制寄存器的設(shè)置來(lái)實(shí)現(xiàn)。目前,只有MSP430X3XX中有P0口。
P0口有6個(gè)寄存器用于引腳控制,P1和P2口有7個(gè)寄存器用于引腳控制。由于模塊寄存器位于低端地址,須用字節(jié)指令以絕對(duì)尋址模式訪問。下面Px代表P0、P1或P2。
(1)
PxDIR:輸入/輸出方向寄存器。
該寄存器中相互獨(dú)立的8位分別定義了8個(gè)引腳的輸入/輸出方向。8位在PUC后都被復(fù)位。當(dāng)使用輸入/輸出功能時(shí),要先定義端口的方向,以使引腳的輸入/輸出滿足設(shè)計(jì)者的要求。當(dāng)作為輸入時(shí),只能讀,作為輸出時(shí)則可讀可寫。
0I/O引腳被切換成輸入模式;
1I/O引腳被切換成輸出模式。
例如:
BIS.B#020H,&P0DIR
;P0.5輸出
BIS.B#001H,&P1DIR
;P1.0輸出
MOV.B#0FCH,&P2DIR
;P2低2位輸入
(2)PxIN:輸入寄存器。
輸入寄存器是掃描I/O引腳信號(hào)的只讀寄存器,通過對(duì)端口輸入寄存器進(jìn)行讀操作,可以知道I/O端口的輸入情況,用戶不能對(duì)它寫入,只能讀出。讀出時(shí),必須設(shè)定該引腳的方向?yàn)檩斎搿H绻麑?duì)該寄存器寫入,會(huì)在寫操作有效期間增加電流損耗。
例如:
TST.B#01H,&P1IN ;測(cè)試P1的最低位的值
(3)PxOUT:輸出寄存器。
該寄存器為I/O端口的輸出緩沖寄存器。輸出緩存可用所有包含目的操作數(shù)的指令修改,以達(dá)到改變I/O端口狀態(tài)的目的。在讀取時(shí),輸出緩存的內(nèi)容與引腳定義方向無(wú)關(guān)。改變方向寄存器的內(nèi)容,輸出緩存的內(nèi)容不受影響。
例如:
BIS.B#002h,&P0OUT ;P0.1輸出1
BIC.B#002h,&P1OUT ;P1.1輸出0
XOR.B#002h,&P2OUT ;P2.1輸出求反
(4)PxIFG:中斷標(biāo)志寄存器。
該寄存器有8個(gè)標(biāo)志位,標(biāo)志相應(yīng)引腳是否有待處理中斷的信息,即相應(yīng)引腳是否有中斷請(qǐng)求。如果Px口的某個(gè)引腳允許中斷,則當(dāng)該引腳電平發(fā)生滿足中斷觸發(fā)沿電平要求時(shí),PxIFG的相應(yīng)位就會(huì)置位,說明該引腳上有中斷請(qǐng)求產(chǎn)生。寄存器各位定義如下:
PxIFG.x:中斷標(biāo)志位。
0沒有中斷請(qǐng)求;
1有中斷請(qǐng)求。
其中,P0口的低2位標(biāo)志位在SFR的IFG1(IFG1.2和IFG1.3)中。要想得到有效的中斷請(qǐng)求,外部中斷事件的時(shí)間不能低于1.5倍的MCLK時(shí)間,以保證中斷請(qǐng)求被接受,且使相應(yīng)的中斷標(biāo)志位置位。其中,P0口的中斷標(biāo)志位P0IFG.0和
P0IFG.1是單源中斷,在服務(wù)時(shí)會(huì)自動(dòng)復(fù)位,而P0IFG.2~P0IFG.7共用一個(gè)中斷向量,P1~P6口的中斷標(biāo)志PxIFG.0~PxIFG.7共用了一個(gè)中斷向量,均屬于多源中斷。當(dāng)任一事件引起的中斷進(jìn)行服務(wù)時(shí),PxIFG.0~PxIFG.7不會(huì)自動(dòng)復(fù)位。必須用軟件來(lái)判定是對(duì)哪一個(gè)事件服務(wù),并將相應(yīng)的標(biāo)志復(fù)位。
(5)PxIES:中斷觸發(fā)沿選擇寄存器。
該寄存器只有跳變才能引起中斷請(qǐng)求,而靜態(tài)電平則不能。若要允許Px口的某個(gè)引腳中斷,還需要定義該引腳的中斷觸發(fā)方式。該寄存器的8位分別定義了Px的8個(gè)引腳的中斷觸發(fā)沿。
0對(duì)應(yīng)引腳由低到高的電平跳變(上升沿)使相應(yīng)標(biāo)志位置位;
1對(duì)應(yīng)引腳由高到低的電平跳變(下降沿)使相應(yīng)標(biāo)志位置位。
例如:
MOV.B#0FH,&P2IES;P2低4位下降沿觸發(fā)中斷
(6)PxIE:中斷使能寄存器。
該寄存器Px口的各引腳都有一位用以控制該引腳是否允許中斷。其中P0口的低2位中斷使能控制位P0IE.0和P0IE.1在SFRIE1(IE1.2和IE1.3)中。該寄存器的各位定義如下:
PxIE.x:中斷使能控制位。
0禁止該位中斷;
1允許該位中斷。例如:
MOV.B#0FH,&P2IE;P2低4位允許中斷
(7)
PxSEL:功能選擇寄存器。
P1和P2兩個(gè)端口還具有其它片內(nèi)外設(shè)備功能(P0口無(wú)此寄存器),為減少引腳,這些功能與芯片外的聯(lián)系通過復(fù)用P1和P2引腳的方式來(lái)實(shí)現(xiàn)。P1SEL和P2SEL用來(lái)選擇引腳的I/O端口功能與外圍設(shè)備模塊功能。
0選擇引腳為I/O端口;
1選擇引腳為外圍模塊功能。
例如:
BIS.B#020H,&P1SEL;p1.5定義為外圍模塊功能
BIS.B#002H,&P2SEL;p2.1定義為外圍模塊功能
5.2.3端口P3~P10
MSP430X13/14/15/16X及MSP430X4XX等系列中含有P3、P4、P5和P6端口,MSP430X22X中部分器件有P7端口,其中部分MSP430X4XX系列中具有P7、P8、P9、P10口,P7—P8與P9—P10可以合起來(lái)作16位尋址,P7—P8定義為PA口,P9—P10定義為PB口。如P7—P8可以通過向P7SEL和P8SEL寫入字節(jié)來(lái)設(shè)置,也可以通過PASEL寫入一個(gè)字來(lái)設(shè)置。這幾個(gè)端口沒有中斷能力,其余功能同P0、P1和P2一樣,能實(shí)現(xiàn)輸入/輸出功能和外圍模塊功能。每個(gè)端口有4個(gè)寄存器:端口方向選擇寄存器(PxDIR)、輸入寄存器(PxIN)、輸出寄存器(PxOUT)和功能選擇寄存器(PxSEL)。用戶可以通過這4個(gè)寄存器實(shí)現(xiàn)對(duì)它們的操作,具體定義和用法同P1和P2口。
5.2.4端口TP0
在MSP430X3XX系列器件中,有三態(tài)輸出端口TP0。它是一個(gè)6位的端口,由以下兩個(gè)寄存器控制,分別使用低6位。
(1)
TPD:端口數(shù)據(jù)寄存器。
該寄存器中TPD.0~TPD.5的內(nèi)容為引腳TP0.0~TP0.5的輸出值。
(2)
TPE:端口允許寄存器。
該寄存器中TPE.0~TPE.5分別控制TP0.0~TP0.5的三態(tài)特性,當(dāng)TPE的相應(yīng)位置位時(shí),TPD的內(nèi)容可以由引腳TP0輸出。當(dāng)TPE復(fù)位時(shí),三態(tài)輸出為高阻狀態(tài)。
5.2.5端口
COM和S
端口COM和S出現(xiàn)在MSP430FX4XX等有液晶驅(qū)動(dòng)模塊的器件中,COM端口為液晶片的公共端,S端口為液晶片的段碼端。液晶片輸出端也可編程配置為數(shù)字輸出端口。詳細(xì)使用方法參見本書第5章第10節(jié)液晶驅(qū)動(dòng)模塊部分。
5.2.6端口應(yīng)用舉例
例5.4使P1.0輸出高電平。
程序代碼如下:
#include"msp430x44x.h"
voidmain(void)
{
while(1)
{
P1DIR|=0X01;
P1OUT|=0X01;//clearalltheledsdisplay
}
}
5.3定
時(shí)
器
MSP430系列定時(shí)器資源豐富,有看門狗定時(shí)器(WDT)、基本定時(shí)器(BasicTimer1)、8位定時(shí)器/計(jì)數(shù)器(8bitTimer/Counter)、定時(shí)器A(Timer_A)和定時(shí)器B(Timer_B)等。定時(shí)器可用來(lái)實(shí)現(xiàn)定時(shí)控制、延遲、頻率測(cè)量、脈寬測(cè)量和信號(hào)產(chǎn)生、信號(hào)檢測(cè)等,定時(shí)器A(Timer_A)還可以作為串行接口的可編程波特率發(fā)生器,在多任務(wù)的系統(tǒng)中也可用來(lái)作為中斷信號(hào)實(shí)現(xiàn)程序的切換。MSP430系列各定時(shí)器模塊功能如表5-7所示,不同的器件所含有的定時(shí)器的個(gè)數(shù)和種類不同,在使用時(shí)應(yīng)加以注意。
表5-7各種定時(shí)器功能
5.3.1看門狗定時(shí)器
看門狗定時(shí)器(WDT)是MSP430系列單片機(jī)中用于系統(tǒng)監(jiān)測(cè)和內(nèi)部定時(shí)使用的一種模塊,當(dāng)程序發(fā)生故障時(shí)能使受控系統(tǒng)重新啟動(dòng),也可作為一般內(nèi)部定時(shí)器使用??撮T狗的主要特點(diǎn)如下。
WDT是一個(gè)16位計(jì)數(shù)器。
需要口令才能對(duì)其操作。
有看門狗和定時(shí)器兩種模式。
有8種可選的定時(shí)時(shí)間。
1.WDT結(jié)構(gòu)
看門狗定時(shí)器實(shí)質(zhì)上是一個(gè)定時(shí)器,其主要功能是當(dāng)程序發(fā)生故障時(shí)能使受控系統(tǒng)重新啟動(dòng)。如果WDT超過WDT所定時(shí)的時(shí)間,則發(fā)生系統(tǒng)復(fù)位。當(dāng)系統(tǒng)不需要看門狗功能時(shí),也可將它當(dāng)普通的定時(shí)器使用,當(dāng)?shù)竭_(dá)WDT所定時(shí)的時(shí)間時(shí)能產(chǎn)生中斷。此外,WDT還可以完全停止活動(dòng)以支持超低功耗應(yīng)用??撮T狗定時(shí)器原理如圖5-16所示。
圖5-16看門狗定時(shí)器原理
在工業(yè)現(xiàn)場(chǎng),由于供電電源,空間電磁干擾或其它原因往往會(huì)引起強(qiáng)烈的噪聲干擾。這些干擾作用于數(shù)字器件,極易使其產(chǎn)生誤動(dòng)作,引起微控制器發(fā)生“程序跑飛”事故。若不進(jìn)行有效處理,程序就不能回到正常工作狀態(tài),從而失去應(yīng)有的控制功能。MSP430的看門狗定時(shí)器正是為了解決這類問題而設(shè)計(jì)的,尤其是在具有循環(huán)結(jié)構(gòu)的程序任務(wù)中更為有效。當(dāng)WDT超過WDT所定時(shí)的時(shí)間時(shí),能發(fā)生復(fù)位操作。如果通過編制程序使WDT定時(shí)時(shí)間稍大于程序執(zhí)行一遍所用的時(shí)間,并且程序執(zhí)行過程中加入對(duì)看門狗定時(shí)器清零的指令,使計(jì)數(shù)器重新計(jì)數(shù),則當(dāng)程序正常運(yùn)行時(shí),就會(huì)在WDT定時(shí)時(shí)間到達(dá)之前執(zhí)行WDT清零指令,不會(huì)產(chǎn)生WDT溢出。如果由于干擾使程序跑飛,則不會(huì)在WDT定時(shí)時(shí)間到達(dá)之前執(zhí)行WDT清零指令,WDT就會(huì)溢出,從而產(chǎn)生系統(tǒng)復(fù)位,CPU需要重新運(yùn)行用戶程序,這樣程序就可以又恢復(fù)正常運(yùn)行狀態(tài)。
2.WDT寄存器
WDT的寄存器是由控制寄存器WDTCTL和計(jì)數(shù)單元WDTCNT組成的,它的中斷允許和中斷標(biāo)志位在SFR中。
1)計(jì)數(shù)單元WDTCNT
WDTCNT是一個(gè)16位增計(jì)數(shù)器,由MSP430所選定的時(shí)鐘電路產(chǎn)生的固定周期脈沖信號(hào)對(duì)計(jì)數(shù)器進(jìn)行加法計(jì)數(shù)。如果計(jì)數(shù)器事先被預(yù)置的初始狀態(tài)不同,那么從開始計(jì)數(shù)到計(jì)數(shù)溢出為止所用的時(shí)間就不同。WDTCNT不能直接通過軟件存取,必須通過看門狗定時(shí)器的控制寄存器WDTCTL(地址為0120H)進(jìn)行訪問。
2)控制寄存器WDTCTL
WDTCTL由兩部分組成,其中高8位被用作口令,低8位是對(duì)WDT操作的控制命令。要寫入操作WDT的控制命令,必須先正確寫入高字節(jié)看門狗口令,口令為5AH,如果口令寫錯(cuò)將導(dǎo)致系統(tǒng)復(fù)位。在讀WDTCTL時(shí)不需要口令,可直接讀取地址120H中的內(nèi)容,讀出數(shù)據(jù)低字節(jié)為WDTCTL的值,高字節(jié)始終為69H。WDTCTL除了有看門狗定時(shí)器的控制位之外,還有兩個(gè)位用于設(shè)置NMI引腳功能。下面是WDTCTL寄存器各位的定義。
IS0,IS1:看門狗定時(shí)器的定時(shí)輸出選擇位。其中T是WDTCNT的輸入時(shí)鐘源周期。IS1IS0輸出周期
00T×215
01T×213
10T×29
11T×26SSEL:WDTCNT的時(shí)鐘源選擇位。
0SMCLK
1ACLK
WDT定時(shí)時(shí)間是由IS0、IS1及SSEL確定的,因此通過軟件對(duì)計(jì)數(shù)器設(shè)置不同的初始值,就可以實(shí)現(xiàn)不同時(shí)間的定時(shí)。WDT最多只能定時(shí)8種和時(shí)鐘源相關(guān)的時(shí)間,表5-8列出了晶振為32768Hz,SMCLK=1MHz條件下,WDT可選的定時(shí)時(shí)間。
表5-8WDT的定時(shí)時(shí)間
NMIES:中斷的邊沿觸發(fā)方式選擇位。
0上升沿觸發(fā)NMI中斷;
1下降沿觸發(fā)NMI中斷。
HOLD:看門狗定時(shí)器工作停止位,降低功耗。
0WDT功能激活;
1時(shí)鐘禁止輸入,計(jì)數(shù)停止。
3.WDT的工作模式
1)看門狗模式
當(dāng)WDTCTL的TMSEL=0時(shí),WDT工作在看門狗模式。在該模式下,一旦WDT到達(dá)定時(shí)時(shí)間或?qū)懭脲e(cuò)誤的口令都會(huì)觸發(fā)PUC信號(hào),WDTCNT和WDTCTL兩寄存器內(nèi)容將被全部清除,WDT功能被激活,并自動(dòng)進(jìn)入看門狗模式。用戶在通過軟件設(shè)置看門狗模式時(shí),一般都需要進(jìn)行如下操作。
進(jìn)行WDT的初始化,設(shè)置合適的時(shí)間(通過SSEL、IS0、IS1位來(lái)選定)。
周期性地對(duì)WDTCNT清零,以防止WDT溢出,保證WDT的正確使用。
如果系統(tǒng)不用看門狗功能,應(yīng)在程序開始處禁止看門狗功能,程序如下。
MOV#WDTPW+WDTCNTCL,&WDTCTL;
2)定時(shí)器模式
當(dāng)TMSEL=1時(shí),選擇定時(shí)器模式。在設(shè)置好中斷條件后,WDT將按設(shè)定的時(shí)間周期產(chǎn)生中斷請(qǐng)求,在響應(yīng)中斷后,中斷標(biāo)志位將自動(dòng)清除。
在定時(shí)模式下,要注意定時(shí)時(shí)間改變應(yīng)伴隨計(jì)數(shù)器清除,并在一條指令中完成。如果先后分別進(jìn)行清除和定時(shí)時(shí)間選擇,或改變定時(shí)時(shí)間而不同時(shí)清除WDTCNT,將導(dǎo)致不可預(yù)料的系統(tǒng)立即復(fù)位或中斷。另外,在正常工作時(shí),改變時(shí)鐘源也可能導(dǎo)致WDTCNT額外的計(jì)數(shù)時(shí)鐘,如:
MOV#WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL,&WDTCTL ;定時(shí)1000ms
MOV#WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0,&WDTCTL ;定時(shí)8.19ms
3)低功耗模式
當(dāng)系統(tǒng)不需要WDT工作時(shí),可以設(shè)置HOLD=1來(lái)關(guān)閉WDT,以減少功耗。
4)看門狗定時(shí)器的中斷控制功能
在看門狗模式下中斷是不可屏蔽的,由受控程序非正常運(yùn)行引發(fā)。定時(shí)器模式下中斷是可屏蔽的,由選定時(shí)間到達(dá)而引發(fā)。前者的優(yōu)先級(jí)高于后者,兩者的中斷向量地址不同,使用時(shí)請(qǐng)參見相關(guān)芯片數(shù)據(jù)手冊(cè)??撮T狗定時(shí)器用到SFR地址的兩位。
中斷標(biāo)志W(wǎng)DTIFG位于IFG1.0,初始狀態(tài)為復(fù)位。
中斷標(biāo)志W(wǎng)DTIE位于IE1.0,初始狀態(tài)為復(fù)位。
與中斷功能相關(guān)的WDTCTL的控制位NMI和NMIES,NMIIE位于IE1.4,MNIFG位于IFG1.4。
4.看門狗定時(shí)器應(yīng)用舉例
例5.6
使用看門狗的定時(shí)功能定時(shí)產(chǎn)生一個(gè)方波,由P5.1輸出。
程序如下:
#include<msp430x44x.h>
voidmain(void)
{
WDTCTL=WDT_ADLY_250;//設(shè)置看門狗定時(shí)時(shí)間為250ms
IE1|=WDTIE;//WDT使能
P5DIR|=0x02;//設(shè)置P5.1為輸出
_EINT();//中斷允許
for(;;)
{
_BIS_SR(LPM3_bits); //進(jìn)入LPM3
_NOP(); //驗(yàn)證,可用C-SPY觀察
}
}
//看門狗中斷服務(wù)子程序
#pragmavector=WDT_VECTOR
__interruptvoidwatchdog_timer(void)
{
P5OUT^=0x02; //P5.1輸出取反
}5.3.2基本定時(shí)器
基本定時(shí)器(BasicTimer1)是MSP430X3XX和MSP430X4XX系列器件中的模塊,BasicTimer1經(jīng)常應(yīng)用在低功耗系統(tǒng)中,支持軟件和各種外圍模塊工作在低頻率、低功耗條件下。BasicTimer1非常適合于周期性地產(chǎn)生中斷,更新LCD或啟動(dòng)一個(gè)新的測(cè)量周期。
1.BasicTimer1的結(jié)構(gòu)
MSP430X44X系列BasicTimer1的結(jié)構(gòu)如圖5-17所示,BasicTimer1通過對(duì)SMCLK或ACLK進(jìn)行分頻,向其它外圍模塊提供低頻控制信號(hào)。
圖5-17BasicTimer1的結(jié)構(gòu)圖
2.BasicTimer1的寄存器
通過控制寄存器BTCTL的設(shè)置可以對(duì)計(jì)數(shù)單元BTCNT1和BTCNT2進(jìn)行軟件控制。當(dāng)芯片上電、復(fù)位(/NMI引腳)、看門狗溢出或看門狗密鑰非法出現(xiàn)時(shí),該寄存器各位保持原狀。用戶程序通常在BasicTimer1初始化期間來(lái)設(shè)定操作條件。
1)?BTCTL控制寄存器
BTCTL控制寄存器控制BasicTimer1的運(yùn)行,由各位的值來(lái)選擇頻率源、中斷頻率及LCD控制電路的幀頻率。BTCTL各位定義如下:
SSEL,DIV:BTCNT2的輸入頻率CLK2選擇位,BasicTimer1總是按輸入的時(shí)鐘作增計(jì)數(shù)。SSEL用來(lái)選擇輔助時(shí)鐘ACLK或系統(tǒng)主時(shí)鐘MCLK,DIV決定是否對(duì)選定的時(shí)鐘信號(hào)分頻。MSP430F4xx的BTCNT2的輸入頻率如表5-9所示。
表5-9BTCNT2的輸入頻率
HOLD:計(jì)數(shù)器停止控制位。
0BTCNT1和BTCNT2運(yùn)行中;
1BTCNT2停止工作,如果DIV也置位,BTCNT1停止工作。
BasicTimer1的寄存器可以利用HOLD位禁止模塊的所有功能,并把功耗降低到最低程度,即只有漏電流。當(dāng)計(jì)數(shù)器被允許或禁止時(shí)不會(huì)發(fā)生額外計(jì)數(shù),系統(tǒng)對(duì)控制寄存器BTCTL的訪問會(huì)影響計(jì)數(shù),它可以用通常的方式進(jìn)行讀寫操作。
FRFQ1,F(xiàn)RFQ0:fLCD頻率選擇位,可選擇4個(gè)BTCNT1的輸出之一作為fLCD信號(hào),該位控制LCD更新頻率如表5-10所示。與片上外設(shè)LCD驅(qū)動(dòng)模塊一起工作的設(shè)備使用fLCD信號(hào)產(chǎn)生COM公共端和SEG行驅(qū)動(dòng)的時(shí)序信號(hào)。表5-10fLCD信號(hào)頻率
表5-11BTCNT2的定時(shí)中斷頻率
2)計(jì)數(shù)單元BTCNT1和BTCNT2
BasicTimer1除了定時(shí)控制外,還有BTCNT1和BTCNT2兩個(gè)重要計(jì)數(shù)單元。這兩個(gè)單元都可用字節(jié)方式進(jìn)行讀寫,相關(guān)特性如表5-12所示。
表5-12BTCNT1和BTCNT2
BTCNT1對(duì)ACLK分頻。LCD驅(qū)動(dòng)的幀頻率從計(jì)數(shù)器高4位輸出中選擇。最高位輸出可以作為BTCNT2的時(shí)鐘輸入。
BTCNT2對(duì)可選輸入時(shí)鐘ACLK、SMCLK或ACLK/256分頻。中斷周期可以BTCTL中的IP0~I(xiàn)P2位中選擇8個(gè)輸出之一。
BasicTimer1可以工作在16位定時(shí)器/計(jì)數(shù)器模式,此時(shí)CLK2來(lái)源于BTCNT1最高位輸出。所以當(dāng)作16位計(jì)數(shù)器時(shí),只能選擇ACLK作為BTCNT1和BTCNT2的時(shí)鐘源。
3.BasicTimer1的中斷
BasicTimer1中斷允許位BTIE在IE2中(IE2.7)。中斷標(biāo)志位BTIFG在IFG2(IFG2.7)中,該標(biāo)志位響應(yīng)中斷后自動(dòng)復(fù)位。
中斷標(biāo)志和中斷允許遵循一般的模塊中斷原則。除了受各自的中斷允許控制外,中斷請(qǐng)求還受控于通用中斷標(biāo)志GIE。PUC使中斷允許標(biāo)志BTIE復(fù)位。當(dāng)BasicTimer有中斷請(qǐng)求時(shí),中斷標(biāo)志BTIFG置位;當(dāng)中斷請(qǐng)求被接受時(shí),中斷標(biāo)志BTIFG復(fù)位。該中斷可用于系統(tǒng)的控制,它是單源中斷。
4.基本定時(shí)器應(yīng)用舉例
例5.7
使用基本定時(shí)器的定時(shí)功能,產(chǎn)生一個(gè)頻率為4Hz的方波信號(hào),由P5.1輸出,其中ACLK=LFXT1=32768Hz,MCLK=1.048576MHz。
程序如下:
#include<msp430x44x.h>
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//停止看門狗
IE2|=BTIE;
//基本定時(shí)器開中斷
5.3.316位定時(shí)器A
TI推出的所有MSP430系列FLASH型單片機(jī)都含有定時(shí)器A(Timer_A)。Timer_A是由一個(gè)16位定時(shí)器和多路捕獲/比較通道組成的,各通道都可單獨(dú)控制,為開發(fā)人員提供較多靈活的選擇余地。MSP430的型號(hào)不同,Timer_A模塊中的捕獲/比較器數(shù)量也不同,MSP430系列單片機(jī)的Timer_A有以下特性:
具有16位計(jì)數(shù)器,4種工作模式。
具有多種可選的計(jì)數(shù)器時(shí)鐘源。
具有3個(gè)或者5個(gè)可配置的捕獲/比較寄存器。
支持多時(shí)序控制、多個(gè)捕獲/比較功能及多種輸出波形(PWM)。
具有異步輸入、輸出鎖存功能。
沒有自動(dòng)重載時(shí)間常數(shù)功能,但產(chǎn)生的定時(shí)脈沖或PWM(脈寬調(diào)制)信號(hào)沒有軟件帶來(lái)的誤差。
能捕獲外部事件發(fā)生的時(shí)間,鎖定其發(fā)生時(shí)的高低電平。
具有完善的中斷服務(wù)功能。
具有8種輸出方式選擇,3個(gè)可配置輸出單元。
1.Timer_A結(jié)構(gòu)
Timer_A由三部分組成,如圖5-18所示。
1)計(jì)數(shù)器部分
計(jì)數(shù)器部分用來(lái)完成時(shí)鐘源的選擇與分頻、模式控制及計(jì)數(shù)等功能。輸入的時(shí)鐘源具有4種選擇,所選定的時(shí)鐘源又可以1、2、4或8分頻作為計(jì)數(shù)頻率,Timer_A可以通過選擇4種工作模式靈活地完成定時(shí)/計(jì)數(shù)功能。
2)捕獲/比較器
捕獲/比較器用于捕獲事件發(fā)生的時(shí)間或產(chǎn)生時(shí)間間隔,捕獲比較功能的引入主要是為了提高I/O端口處理事務(wù)的能力和速度。不同的MSP430單片機(jī),Timer_A模塊中所含有的捕獲/比較器的數(shù)量不一樣,但每個(gè)捕獲/比較器的結(jié)構(gòu)完全相同,輸入和輸出都取決于各自所帶的控制寄存器的控制字,捕獲/比較器相互之間工作完全相互獨(dú)立。
3)輸出單元
輸出單元用于產(chǎn)生用戶所需要的輸出信號(hào)。Timer_A具有可選的8種輸出模式,支持PWM輸出。
圖5-18Timer_A的結(jié)構(gòu)原理圖
2.Timer_A寄存器
MSP430系列單片機(jī)不同系列包含有不同數(shù)目的捕獲/比較器,含有3個(gè)捕獲/比較器。Timer_A的寄存器(比如MSP430X13X)如表5-13所示。用戶對(duì)Timer_A的所有操作都是通過操作該模塊的寄存器完成的。
表5-13Timer_A的寄存器
(1)TACTL:控制寄存器。
定時(shí)器控制寄存器TACTL中包含定時(shí)器及其操作的控制位。POR信號(hào)后TACTL的所有位都自動(dòng)復(fù)位,但在PUC信號(hào)后不受影響,TACTL各位的定義如下:
表5-14Timer_A時(shí)鐘源
ID1,ID0:輸入分頻選擇位。
00不分頻;
012分頻;
104分頻;
118分頻。
由SSEL0和SSEL1兩位選擇時(shí)鐘源,然后再由ID0和ID1選擇分頻系數(shù)將輸入信號(hào)分頻,分頻后的信號(hào)才用于計(jì)數(shù)器計(jì)數(shù)。
MC1,MC0:計(jì)數(shù)模式控制選擇位。
00停止模式;
11增計(jì)數(shù)模式;
10連續(xù)計(jì)數(shù)模式;
11增/減計(jì)數(shù)模式。
TACLR:定時(shí)器清除位,該位由硬件自動(dòng)復(fù)位,其讀出值始終為0。
0Timer_A計(jì)數(shù)器TAR內(nèi)容不清零;
1Timer_A計(jì)數(shù)器TAR內(nèi)容清零。
定時(shí)器和分頻器在POR或TACLR位置位時(shí)復(fù)位。TACLR由硬件自動(dòng)復(fù)位,其讀出始終為0。定時(shí)器在下一個(gè)有效輸入沿開始工作。如果不是被清除模式控制位暫停,則定時(shí)器以增計(jì)數(shù)模式開始工作。
TAIE:定時(shí)器中斷允許位。
0禁止定時(shí)器中斷;
1允許定時(shí)器中斷。
TAIFG:定時(shí)器標(biāo)志位,不同工作模式下,該位有不同的置位條件。
0無(wú)中斷請(qǐng)求;
1有中斷請(qǐng)求。
(2)TAR:16位計(jì)數(shù)器。
該單元就是執(zhí)行計(jì)數(shù)的單元,是計(jì)數(shù)器的主體,其內(nèi)容可讀可寫。若要修改Timer_A,推薦修改順序如下:
①修改控制寄存器和停止定時(shí)器。
②
啟動(dòng)定時(shí)器工作。
當(dāng)計(jì)數(shù)時(shí)鐘不是MCLK時(shí),寫入應(yīng)該在計(jì)數(shù)器停止計(jì)數(shù)時(shí)進(jìn)行,以免因與CPU不同步而引起時(shí)鐘競(jìng)爭(zhēng)。輸入時(shí)鐘和軟件所用的系統(tǒng)時(shí)鐘異步也可能引起時(shí)間競(jìng)爭(zhēng),使定時(shí)器響應(yīng)出錯(cuò),所以用TACTL控制寄存器中的控制位來(lái)改變定時(shí)器工作,尤其是修改輸入選擇位,輸入分頻器和定時(shí)器清除位時(shí),定時(shí)器應(yīng)停止,例如:
MOV#01C6H,&TACTL ;ACLK/4,定時(shí)器停止,定時(shí)器復(fù)位
BIS#10H,&TACTL ;開始增計(jì)數(shù)模式
(3)
TACCTLx:捕獲/比較控制寄存器。
Timer_A有多個(gè)捕獲/比較模塊,每個(gè)模塊都有自己的控制字CCTLx,這里x為捕獲/比較模塊序號(hào)。該寄存器在POR信號(hào)后全部復(fù)位,但在PUC信號(hào)后不影響。該寄存器中各位的定義如下:
CM1CM0:選擇捕獲方式。
00禁止捕獲模式;
01上升沿捕獲;
10下降沿捕獲;
11上升沿與下降沿都捕獲。
CCIS1CCIS0:捕獲模式中,捕獲事件的輸入源選擇位。
00CCIxA;
01CCIxB;
10GND;
11VCC。
SCS:捕獲信號(hào)與定時(shí)器時(shí)鐘同步選擇位。
0異步捕獲;
1同步捕獲。
異步捕獲模式允許在請(qǐng)求時(shí)立即將CCIFG置位且捕獲定時(shí)器值,適用與捕獲信號(hào)的周期遠(yuǎn)大于定時(shí)器時(shí)鐘周期的情況。但是,如果定時(shí)器時(shí)鐘和捕獲信號(hào)發(fā)生時(shí)間競(jìng)爭(zhēng),則捕獲寄存器可能出錯(cuò)。實(shí)際中經(jīng)常使用同步捕獲模式,而且捕獲總是有效的。
SCCI:同步比較/捕獲輸入,比較相等信號(hào)EQUx將選定的捕獲/比較輸入信號(hào)CCIx(CCIxA,CCIxB,VCC和GND)進(jìn)行鎖存,可由SCCIx讀出。
CAP:工作模式選擇位。
0比較模式;
1捕獲模式。
如果通過捕獲/比較寄存器CCTLx中的CAP使工作模式從比較模式變?yōu)椴东@模式,那么不應(yīng)同時(shí)進(jìn)行捕獲,否則,在捕獲/比較寄存器中的值是不可預(yù)料的,操作順序一般如下:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府采購(gòu)圖書設(shè)備合同
- 工業(yè)用途管材采購(gòu)協(xié)議
- 商業(yè)店鋪?zhàn)赓U合同解除
- 四招標(biāo)文件的審核
- 市政建設(shè)質(zhì)量承諾
- 橋梁建設(shè)勞務(wù)分包協(xié)議書
- 二手大型機(jī)械買賣合同
- 水上交通艇購(gòu)買合同樣本
- 臨時(shí)貸款展期合同范本
- 全面咨詢合同資料
- 拆除鋼結(jié)構(gòu)安全施工方案
- 國(guó)際仲裁和調(diào)解案例分析
- GB/T 43333-2023獨(dú)立型微電網(wǎng)調(diào)試與驗(yàn)收規(guī)范
- 心理健康教育主題班會(huì)課件(共38張)
- 五年級(jí)上冊(cè)《勞動(dòng)與技術(shù)》期中期末復(fù)習(xí)測(cè)試卷(附答案)
- 了解世界各大宗教的信仰
- 《社會(huì)調(diào)查研究與方法》課程復(fù)習(xí)題-課程ID-01304試卷號(hào)-22196
- 一例縫線傷口延遲愈合患者的個(gè)案護(hù)理體會(huì)
- 商務(wù)寫作與外貿(mào)函電-第二版-習(xí)題答案
- 大面積腦梗死護(hù)理查房
- 房屋拆除工程投標(biāo)方案(技術(shù)標(biāo))
評(píng)論
0/150
提交評(píng)論