




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