




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、合肥工業(yè)大學(xué)DSP及MSP430實驗室 MSP430單片機原理與應(yīng)用單片機原理與應(yīng)用 http:/ MSP430單片機時鐘系統(tǒng)和低功耗結(jié)構(gòu)時鐘系統(tǒng)時鐘系統(tǒng)5.1低功耗結(jié)構(gòu)及應(yīng)用低功耗結(jié)構(gòu)及應(yīng)用5.2 在MSP430單片機中,時鐘系統(tǒng)不僅可以為CPU提供時序,還可以為不同的片內(nèi)外設(shè)提供不同頻率的時鐘。MSP430單片機通過軟件控制時鐘系統(tǒng)可以使其工作在多種模式下,包括1種活動模式和7種低功耗模式。通過這些工作模式,可合理地利用系統(tǒng)資源,實現(xiàn)整個應(yīng)用系統(tǒng)的低功耗。時鐘系統(tǒng)是MSP430單片機中非常關(guān)鍵的部件,通過時鐘系統(tǒng)的配置可以在功耗和性能之間尋求最佳的平衡點,為單芯片系統(tǒng)與超低功耗系統(tǒng)設(shè)計提供
2、了靈活的實現(xiàn)手段。本章重點講述MSP430單片機的時鐘系統(tǒng)及其低功耗結(jié)構(gòu)。5.1 時鐘系統(tǒng)5.1.1 時鐘系統(tǒng)結(jié)構(gòu)與原理1時鐘系統(tǒng)結(jié)構(gòu) (1)5個時鐘來源 時鐘系統(tǒng)模塊具有5個時鐘來源。 XT1CLK:低頻/高頻振蕩器,可以使用32768Hz的手表晶振、標(biāo)準(zhǔn)晶體、諧振器或432MHz的外部時鐘源; VLOCLK:內(nèi)部超低功耗低頻振蕩器,典型頻率12kHz; REFOCLK:內(nèi)部調(diào)整低頻參考振蕩器,典型值為32768Hz; DCOCLK:內(nèi)部數(shù)字時鐘振蕩器,可由FLL穩(wěn)定后得到; XT2CLK:高頻振蕩器,可以是標(biāo)準(zhǔn)晶振、諧振器或432MHz的外部時鐘源。(2)3個時鐘信號時鐘系統(tǒng)模塊可以產(chǎn)生3
3、個時鐘信號供CPU和外設(shè)使用。 ACLK:輔助時鐘(Auxiliary Clock)??梢酝ㄟ^軟件選擇XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV或XT2CLK(當(dāng)XT2CLK可用時)。DCOCLKDIV是FLL模塊內(nèi)DCOCLK經(jīng)過1/2/4/8/16/32分頻后獲得的。ACLK主要用于低速外設(shè)。ACLK可以再進(jìn)行1/2/4/8/16/32分頻,ACLK/n 就是ACLK 經(jīng)過1/2/4/8/16/32分頻后得到的,也可以通過外部引腳進(jìn)行輸出。 MCLK:主時鐘(Master Clock)。MCLK的時鐘來源與ACLK相同,MCLK專門供CPU使用,MCLK配
4、置得越高,CPU的執(zhí)行速度就越快,功耗就越高。一旦關(guān)閉MCLK,CPU也將停止工作,因此在超低功耗系統(tǒng)中可以通過間歇啟用MCLK的方法降低系統(tǒng)功耗。MCLK也可經(jīng)1/2/4/8/16/32分頻后供CPU使用。 SMCLK:子系統(tǒng)時鐘(Subsystem Master Clock)。SMCLK的時鐘來源與ACLK相同,SMCLK主要用于高速外設(shè),SMCLK也可以再進(jìn)行1/2/4/8/16/32分頻。5.1 時鐘系統(tǒng)(3)MSP430F5xx/6xx系列單片機的時鐘系統(tǒng)結(jié)構(gòu)圖5.1 時鐘系統(tǒng)2時鐘系統(tǒng)的原理 (1)內(nèi)部超低功耗低頻振蕩器(VLO) 內(nèi)部超低功耗低頻振蕩器在無須外部晶振的情況下,可提
5、供12kHz的典型頻率。VLO為不需要精確時鐘基準(zhǔn)的系統(tǒng)提供了一個低成本、超低功耗的時鐘源。當(dāng)VLO被用作ACLK、MCLK或SMCLK時(SELA=1、SELM=1或SELS=1),VLO被啟用。5.1 時鐘系統(tǒng) (2)內(nèi)部調(diào)整低頻參考時鐘振蕩器(REFO) 在不要求或不允許使用晶振的應(yīng)用中,REFO可以用作高精度時鐘。經(jīng)過內(nèi)部調(diào)整,REFO的典型頻率為32768Hz,并且可以為FLL模塊提供一個穩(wěn)定的參考時鐘源。REFOCLK與FLL的組合,在無須外部晶振的情況下,提供了靈活的大范圍系統(tǒng)時鐘。當(dāng)不使用REFO時,REFO不消耗電能。5.1 時鐘系統(tǒng)(3)XT1振蕩器(XT1) 如圖5.1.
6、2所示。MSP430單片機的每種器件都支持XT1振蕩器,MSP430F5xx/6xx系列單片機的XT1振蕩器支持兩種模式:LF(低頻模式)和HF(高頻模式)。 圖5.1.2 OSC振蕩器結(jié)構(gòu)框圖5.1 時鐘系統(tǒng)圖5.1.3XT2振蕩器結(jié)構(gòu)框圖(4)XT2振蕩器(XT2) 如圖5.1.3所示,XT2振蕩器用來產(chǎn)生高頻的時鐘信號XT2CLK,其工作特性與XT1振蕩器工作在高頻模式相似,晶振的選擇范圍為4 32MHz,具體范圍由XT2DRIVE控制位進(jìn)行設(shè)置。高頻時鐘信號XT2CLK可以分別作為輔助時鐘ACLK、主時鐘MCLK和子系統(tǒng)時鐘SMCLK的基準(zhǔn)時鐘信號,也可提供給鎖頻環(huán)模塊(FLL),可以
7、利用XT2OFF控制位實現(xiàn)對XT2模塊的啟用(0)和關(guān)閉(1)。5.1 時鐘系統(tǒng)(5)鎖頻環(huán)(FLL) 如圖5.1.4所示,F(xiàn)LL的參考時鐘FLLREFCLK可以來自于XT1CLK、REFOCLK或XT2CLK中的任何一個時鐘源,通過SELREF控制位進(jìn)行選擇。由于這3種時鐘的精確度都很高,倍頻后仍然能夠得到準(zhǔn)確的頻率。FLL能夠產(chǎn)生兩種時鐘信號:DCOCLK和DCOCLKDIV,其中DCOCLKDIV信號為DCOCLK時鐘經(jīng)1/2/4/8/16/32分頻后得到(分頻系數(shù)為D)。圖5.1.4 鎖頻環(huán)模塊結(jié)構(gòu)框圖5.1 時鐘系統(tǒng) 鎖頻環(huán)是一種非常巧妙的電路,它的核心部件是數(shù)控振蕩器和一個頻率積分
8、器。數(shù)控振蕩器能夠產(chǎn)生DCOCLK時鐘,頻率計數(shù)器實際上是一個加減計數(shù)器,“+”輸入端上的每個脈沖將使計數(shù)值加1,“-”輸入端上的每個脈沖將使計數(shù)值減1。FLLREFCLK經(jīng)過1/2/4/8/12/16分頻后輸入頻率積分器的“+”輸入端(分頻系數(shù)為n),DCOCLKDIV經(jīng)過(N+1)分頻后輸入頻率積分器的“-”輸入端,頻率積分器的運算結(jié)果又輸出給數(shù)控振蕩器,改變數(shù)控振蕩器的輸出頻率DCOCLK,構(gòu)成反饋環(huán)。經(jīng)過反饋調(diào)整,最終的結(jié)果使頻率積分器的“+”輸入端的頻率與“-”輸入端的頻率相同,即nfNDfFLLREFCLKDCOCLK) 1(所以,數(shù)控振蕩器的最終輸出頻率為fDCOCLK=D(N+
9、1) fFLLREFCLK/n其中,D由3位FLLD控制位確定,取值為1,2,4,8,16,32;N由10位FLLN控制位確定,取值范圍為11023;n由3位FLLREFDIV控制位確定,取值為1,2,4,8,12,16。5.1 時鐘系統(tǒng)圖5.1.6 MODOSC結(jié)構(gòu)框圖 (6)內(nèi)部模塊振蕩器(MODOSC) 如圖5.1.6所示,UCS時鐘模塊還包含一個內(nèi)部模塊振蕩器MODOSC,能夠產(chǎn)生約4.8MHz的MODCLK時鐘。Flash控制器模塊、ADC_12模塊等片內(nèi)外設(shè)都可使用MODCLK作為內(nèi)部參考時鐘。 為了降低功耗,當(dāng)不需要使用MODOSC時,可將其關(guān)閉。當(dāng)產(chǎn)生有條件或無條件啟用請求時,
10、MODOSC可自動開啟。設(shè)置MODOSCREQEN控制位,將允許有條件啟用請求使用MODOSC模塊。對于利用無條件啟用請求的模塊無須置位MODOSCREQEN控制位,例如Flash控制器、ADC_12等。5.1 時鐘系統(tǒng) (7)時鐘模塊失效及安全操作 MSP430單片機的時鐘模塊包含檢測XT1、XT2和DCO振蕩器故障失效的功能。振蕩器故障失效檢測邏輯如圖5.1.7所示。圖5.1.7 MSP430振蕩器故障失效檢測邏輯示意圖晶振故障失效條件有以下4種。 XT1LFOFFG:XT1振蕩器在低頻模式(LF)下失效; XT1HFOFFG:XT1振蕩器在高頻模式(HF)下失效; XT2OFFG:XT2
11、振蕩器失效; DCOFFG:DCO振蕩器失 效。5.1 時鐘系統(tǒng)UCS時鐘模塊控制寄存器列表如表5.1.4所示。5.1.2 時鐘模塊控制寄存器寄存器簡寫類型偏移地址初始狀態(tài)時鐘模塊控制寄存器0UCSCTL0讀/寫00h0000h時鐘模塊控制寄存器1UCSCTL1讀/寫02h0020h時鐘模塊控制寄存器2UCSCTL2讀/寫04h101Fh時鐘模塊控制寄存器3UCSCTL3讀/寫06h0000h時鐘模塊控制寄存器4UCSCTL4讀/寫08h0044h時鐘模塊控制寄存器5UCSCTL5讀/寫0Ah0000h時鐘模塊控制寄存器6UCSCTL6讀/寫0ChC1CDh時鐘模塊控制寄存器7UCSCTL7讀
12、/寫0Eh0703h時鐘模塊控制寄存器8UCSCTL8讀/寫10h0707h時鐘模塊控制寄存器9UCSCTL9讀/寫12h0000h表5.1.4 MSP430F5xx/6xx系列單片機時鐘模塊寄存器匯總(基址:0160h)5.1 時鐘系統(tǒng)15141312111098保留DCO76543210MOD保留1時鐘模塊控制寄存器0(UCSCTL0) DCO:第812位,DCO頻拍選擇。選擇DCO頻拍并在FLL運行期間自動調(diào)整。 MOD:第37位,調(diào)制位計數(shù)器。選擇調(diào)制類型,所有的MOD位在FLL運行期間自動調(diào)整,無須用戶干預(yù)。當(dāng)調(diào)制位計數(shù)器從31減到0時,DCOx的值自動增加。當(dāng)調(diào)制位計數(shù)器從0增加到
13、31時,DCOx的值自動減少。5.1 時鐘系統(tǒng)15141312111098保留76543210保留DCORSEL保留保留DISMOD2時鐘模塊控制寄存器1(UCSCTL1) DCORSEL:第46位,DCO頻率范圍選擇。 DISMOD: 第0位,調(diào)制器禁止使能控制位。0:使能調(diào)制器; 1:禁止調(diào)制器。5.1 時鐘系統(tǒng)15141312111098保留FLLD保留FLLN76543210FLLN3時鐘模塊控制寄存器2(UCSCTL2) FLLD:第1214位,F(xiàn)LL預(yù)分頻器。這些位設(shè)置DCOCLK的分頻系數(shù)D,即DCOCLK經(jīng)過D次分頻后得到DCOCLKDIV時鐘。000:fDCOCLK/1; 0
14、01: fDCOCLK/2; 010:fDCOCLK/4; 011:fDCOCLK/8;100:fDCOCLK/16; 101:fDCOCLK/32;110:保留為以后使用,默認(rèn)值fDCOCLK/32;111:保留為以后使用,默認(rèn)值fDCOCLK/32。 FLLN:第09位,倍頻系數(shù)。設(shè)置倍頻值N,N必須大于0,如果FLLN=0,則N被自動設(shè)置為1。5.1 時鐘系統(tǒng)15141312111098保留76543210保留SELREF保留FLLREFDIV4時鐘模塊控制寄存器3(UCSCTL3) SELREF:第46位,F(xiàn)LL參考時鐘源選擇控制位。這些控制位選擇FLL的參考時鐘源FLLREFCLK。
15、000:XT1CLK; 001:保留為以后使用,默認(rèn)參考時鐘源XT1CLK;010:REFOCLK; 011:保留為以后使用,默認(rèn)參考時鐘源REFOCLK;100:保留為以后使用,默認(rèn)參考時鐘源REFOCLK;101:當(dāng)XT2有效時,選擇XT2CLK,否則,選擇REFOCLK;110:保留為以后使用,默認(rèn)與101配置情況相同;111:保留為以后使用,默認(rèn)與101配置情況相同。 FLLREFDIV:第02位,F(xiàn)LL參考時鐘分頻器。000: fFLLREFCLK/1; 001:fFLLREFCLK/2; 010:fFLLREFCLK/4; 011:fFLLREFCLK/8;100:fFLLREFC
16、LK/12; 101:fFLLREFCLK/16;110:保留為以后使用,默認(rèn)值fFLLREFCLK/16;111:保留為以后使用,默認(rèn)值fFLLREFCLK/16。5.1 時鐘系統(tǒng)15141312111098保留SELA76543210保留SELS保留SELM5時鐘模塊控制寄存器4(UCSCTL4) SELA:第810位,ACLK參考時鐘源選擇控制位。 000:XT1CLK; 001:VLOCLK; 010:REFOCLK; 011:DCOCLK; 100:DCOCLKDIV; 101:當(dāng)XT2有效時,選擇XT2CLK,否則,選擇DCOCLKDIV; 110:保留為以后使用,默認(rèn)與101配置
17、情況相同; 111:保留為以后使用,默認(rèn)與101配置情況相同。 SELS:第46位,SMCLK參考時鐘源選擇控制位。 000:XT1CLK; 001:VLOCLK; 010:REFOCLK; 011:DCOCLK; 100:DCOCLKDIV; 101:當(dāng)XT2有效時,選擇XT2CLK,否則,選擇DCOCLKDIV; 110:保留為以后使用,默認(rèn)與101配置情況相同; 111:保留為以后使用,默認(rèn)與101配置情況相同。 SELM:第02位,MCLK參考時鐘源選擇控制位。 000:XT1CLK; 001:VLOCLK; 010:REFOCLK; 011:DCOCLK; 100:DCOCLKDIV
18、; 101:當(dāng)XT2有效時,選擇XT2CLK,否則,選擇DCOCLKDIV; 110:保留為以后使用,默認(rèn)與101配置情況相同; 111:保留為以后使用,默認(rèn)與101配置情況相同。5.1 時鐘系統(tǒng)15141312111098保留DIVPA保留DIVA76543210保留DIVS保留DIVM6時鐘模塊控制寄存器5(UCSCTL5) DIVPA:第1214位,ACLK/n時鐘輸出分頻器。 000: fACLK/1; 001:fACLK/2; 010:fACLK/4; 011:fACLK/8; 100:fACLK/16 101:fACLK/32; 110:保留為以后使用,默認(rèn)值fACLK/32; 1
19、11:保留為以后使用,默認(rèn)值fACLK/32。 DIVA:第810位,ACLK時鐘源分頻器,分頻后作為ACLK時鐘。 000: fACLK/1; 001:fACLK/2; 010:fACLK/4; 011:fACLK/8; 100:fACLK/16 101:fACLK/32; 110:保留為以后使用,默認(rèn)值fACLK/32; 111:保留為以后使用,默認(rèn)值fACLK/32。 DIVS:第46位,SMCLK時鐘源分頻器,分頻后作為SMCLK時鐘。 000: fSMCLK/1; 001:fSMCLK/2; 010:fSMCLK/4; 011:fSMCLK/8; 100:fSMCLK/16 101:
20、fSMCLK/32; 110:保留為以后使用,默認(rèn)值fSMCLK/32; 111:保留為以后使用,默認(rèn)值fSMCLK/32。 DIVM:第02位,MCLK時鐘源分頻器,分頻后作為MCLK時鐘。 000: fMCLK/1; 001:fMCLK/2; 010:fMCLK/4; 011:fMCLK/8; 100:fMCLK/16 101:fMCLK/32; 110:保留為以后使用,默認(rèn)值fMCLK/32; 111:保留為以后使用,默認(rèn)值fMCLK/32。5.1 時鐘系統(tǒng)15141312111098XT2DRIVE保留XT2BYPASS保留XT2OFF76543210XT1DRIVEXTSXT1BYP
21、ASSXCAPSMCLKOFFXT1OFF7時鐘模塊控制寄存器6(UCSCTL6) XT2DRIVE:第1415位,XT2振蕩器驅(qū)動調(diào)節(jié)控制位。系統(tǒng)上電時,XT2振蕩器以最大電流啟動,以實現(xiàn)快速可靠啟動。如有必要,用戶可手動軟件調(diào)節(jié)振蕩器的驅(qū)動能力。 00:最低電流消耗,XT2振蕩器工作在48MHz; 01:增強XT2振蕩器的驅(qū)動強度,XT2振蕩器工作在816MHz; 10:增強XT2振蕩器的驅(qū)動能力,XT2振蕩器工作在1624MHz; 11:XT2振蕩器最大驅(qū)動能力、最大電流消耗,XT2振蕩器工作在2432MHz。 XT2BYPASS:第12位,XT2旁路選擇控制位。 0:XT2來源于內(nèi)部時
22、鐘(使用外部晶振); 1:XT2來源于外部引腳輸入(旁路模式)。 XT2OFF:第8位,XT2振蕩器關(guān)閉控制位。 0:當(dāng)XT2引腳被設(shè)置位XT2功能且沒有被設(shè)置為旁路模式時,XT2被打開; 1:當(dāng)XT2沒有被作用ACLK、SMCLK或MCLK的時鐘源,且沒有作為FLL的參考時鐘時,XT2被關(guān)閉。5.1 時鐘系統(tǒng) XT1DRIVE:第67位,XT1振蕩器驅(qū)動調(diào)節(jié)控制位。系統(tǒng)上電時,XT1振蕩器以最大電流啟動,以實現(xiàn)快速可靠啟動。如有必要,用戶可手動軟件調(diào)節(jié)振蕩器的驅(qū)動能力。 00:XT1在低頻模式下最低電流消耗,XT1在高頻模式下工作在48MHz; 01:增強XT1在低頻模式下的驅(qū)動強度,XT1
23、在高頻模式下工作在816MHz; 10:增強XT1在低頻模式下的驅(qū)動能力,XT1在高頻模式下工作在1624MHz; 11:XT1在低頻模式下最大驅(qū)動能力、最大電流消耗,XT1在高頻模式下工作在2432MHz。 XTS:第5位,XT1模式選擇控制位。 0:低頻模式,XCAP定義XIN和XOUT引腳間的電容; 1:高頻模式,XCAP位沒有使用。 XT1BYPASS:第4位,XT1旁路選擇控制位。 0:XT1來源于內(nèi)部時鐘(使用外部晶振); 1:XT1來源于外部引腳輸入(旁路模式)。 XCAP:第23位,振蕩器負(fù)載電容選擇控制位。這些位選擇振蕩器在低頻模式時(XTS=0)的負(fù)載電容。 00:2pF;
24、 01:5.5pF; 10:8.5pF; 11:12pF。 SMCLKOFF:第1位,SMCLK開關(guān)控制位。 0:SMCLK打開; 1:SMCLK關(guān)閉。 XT1OFF:第0位,XT1開關(guān)控制位; 0:當(dāng)XT1引腳被設(shè)置位XT1功能且沒有被設(shè)置為旁路模式時,XT1被打開; 1:當(dāng)XT1沒有被作用ACLK、SMCLK或MCLK的時鐘源,且沒有作為FLL的參考時鐘時,XT1被關(guān)閉。5.1 時鐘系統(tǒng)15141312111098保留76543210保留XT2OFFGXT1HFOFFGXT1LFOFFGDCOFFG8時鐘模塊控制寄存器7(UCSCTL7) XT2OFFG:第3位,XT2晶振故障失效標(biāo)志位。
25、如果XT2晶振產(chǎn)生故障失效,XT2OFFG置位,之后晶振故障失效中斷標(biāo)志位OFIFG置位,請求中斷。XT2OFFG可以手動軟件清除,若清除后,XT2故障失效情況仍然存在,XT2OFFG將自動置位。 0:上次復(fù)位后,沒有故障失效產(chǎn)生; 1:上次復(fù)位后,XT2產(chǎn)生故障失效。 XT1HFOFFG:第2位,XT1在高頻模式下晶振故障失效標(biāo)志位。其置位及清除情況與XT2OFFG類似。 0:上次復(fù)位后,沒有故障失效產(chǎn)生; 1:上次復(fù)位后,XT1(高頻模式)產(chǎn)生故障失效。 XT1LFOFFG:第1位,XT1在低頻模式下晶振故障失效標(biāo)志位。其置位及清除情況與XT2OFFG類似。 0:上次復(fù)位后,沒有故障失效產(chǎn)
26、生; 1:上次復(fù)位后,XT1(低頻模式)產(chǎn)生故障失效。 DCOFFG:第0位,DCO振蕩器故障失效標(biāo)志位。當(dāng)DCO=0或31時,DCOFFG置位。DCOFFG可以手動軟件清除,若清除后,DCO故障失效情況仍然存在,DCOFFG將自動置位。 0:上次復(fù)位后,沒有故障失效產(chǎn)生; 1:上次復(fù)位后,DCO產(chǎn)生故障失效。5.1 時鐘系統(tǒng)15141312111098保留76543210保留MODOSCREQENSMCLKREQENMCLKREQENACLKREQEN9時鐘模塊控制寄存器8(UCSCTL8) MODOSCREQEN:第3位,MODOSC時鐘條件請求控制位。 0:MODOSC條件請求禁止; 1
27、:MODOSC條件請求允許。 SMCLKREQEN:第2位,SMCLK時鐘條件請求控制位。 0:SMCLK條件請求禁止; 1:SMCLK條件請求允許。 MCLKREQEN:第1位,MCLK時鐘條件請求控制位。 0:MCLK條件請求禁止; 1:MCLK條件請求允許。 ACLKREQEN:第0位,ACLK時鐘條件請求控制位。 0:ACLK條件請求禁止; 1:ACLK條件請求允許。5.1 時鐘系統(tǒng)15141312111098保留76543210保留XT2BYPASSLVXT1BYPASSLV10時鐘模塊控制寄存器9(UCSCTL9) XT2BYPASSLV:第1位,XT2旁路輸入振蕩范圍選擇控制位。
28、 0:輸入范圍從0到DVCC; 1:輸入范圍從0到DVIO。 XT1BYPASSLV:第0位,XT1旁路輸入振蕩范圍選擇控制位。0:輸入范圍從0到DVCC; 1:輸入范圍從0到DVIO。5.1 時鐘系統(tǒng)5.1.3 時鐘系統(tǒng)應(yīng)用舉例#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 UCSCTL4 |= SELA_1; / 將ACLK的時鐘源配置為VLO P1DIR |= BIT0; / 設(shè)置ACLK通過P1.0口輸出 P1SEL |= BIT0; _ _bis_SR_register(LPM3_bits); / 進(jìn)入LPM3,S
29、MCLK和MCLK停止,ACLK活動【例5.1.1】 使用內(nèi)部振蕩器時鐘源VLO,配置ACLK為VLOCLLK(約12kHz),且將ACLK通過P1.0口輸出(MSP430F5529單片機中引腳P1.0和ACLK復(fù)用)。5.1 時鐘系統(tǒng)【例5.1.2】 XIN和XOUT引腳接32768Hz低頻手表晶振,將ACLK配置為32768Hz,且將ACLK通過P1.0口輸出。#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 P1DIR |= BIT0; / 設(shè)置ACLK通過P1.0口輸出 P1SEL |= BIT0; P5SEL |=
30、BIT4+BIT5; / P5.4和P5.5選擇XT1晶振功能 UCSCTL6 &= (XT1OFF); / 使能XT1 UCSCTL6 |= XCAP_3; / 選擇內(nèi)部負(fù)載電容12pF UCSCTL3 = 0; / FLL的參考時鐘為XT1 / 測試晶振是否產(chǎn)生故障失效,并清除故障失效標(biāo)志位 do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / 清除XT2,XT1,DCO故障失效標(biāo)志位 SFRIFG1 &= OFIFG; / 清除晶振故障失效中斷標(biāo)志位 while (SFRIFG1&OFIFG); / 測試晶振故障失效中斷標(biāo)志位 UCSCTL6 &
31、= (XT1DRIVE_3); / 減少XT1驅(qū)動能力,降低功耗 UCSCTL4 |= SELA_0; / ACLK時鐘來源XT1晶振 _ _bis_SR_register(LPM3_bits); / 進(jìn)入LPM3 5.1 時鐘系統(tǒng)【例5.1.3】 XT2IN和XT2OUT引腳接高頻晶振,晶振頻率范圍為455kHz16MHz,將SMCLK和MCLK配置為XT2CLK,且將MCLK通過P7.7口輸出,將SMCLK通過P2.2口輸出。#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 P2DIR |= BIT2; / 設(shè)置SMCLK
32、通過P2.2口輸出 P2SEL |= BIT2; P7DIR |= BIT7; / 設(shè)置MCLK通過P7.7口輸出 P7SEL |= BIT7; P5SEL |= BIT2+BIT3; / P5.2和P5.3選擇XT2晶振功能 UCSCTL6 &= XT2OFF; / 使能XT2 UCSCTL3 |= SELREF_2; / FLL模塊的參考時鐘源選擇REFO UCSCTL4 |= SELA_2; / ACLK=REFO,SMCLK=DCO,MCLK=DCO / 測試晶振是否產(chǎn)生故障失效,并清除故障失效標(biāo)志位 do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFF
33、G); / 清除XT2,XT1,DCO故障失效標(biāo)志位 SFRIFG1 &= OFIFG; / 清除晶振故障失效中斷標(biāo)志位 while (SFRIFG1&OFIFG); / 測試晶振故障失效中斷標(biāo)志位 UCSCTL6 &= XT2DRIVE0; / 減少XT1驅(qū)動能力,降低功耗 UCSCTL4 |= SELS_5 + SELM_5; / SMCLK=MCLK=XT2 while(1); / 死循環(huán)5.1 時鐘系統(tǒng)【例5.1.4】 使用內(nèi)部振蕩器時鐘源REFO,配置ACLK為32kHz,SMCLK和MCLK為8MHz。利用軟件延遲反轉(zhuǎn)P1.1口狀態(tài),并將ACLK、SMCLK和MCLK通過相應(yīng)端口輸
34、出。#include void main(void) WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 P1DIR |= BIT1; / P1.1口輸出 P1DIR |= BIT0; / 設(shè)置ACLK通過P1.0口輸出 P1SEL |= BIT0; P2DIR |= BIT2; / 設(shè)置SMCLK通過P2.2口輸出 P2SEL |= BIT2; P7DIR |= BIT7; / 設(shè)置MCLK通過P7.7口輸出 P7SEL |= BIT7; UCSCTL3 = SELREF_2; / 設(shè)置FLL的參考時鐘源為REFO UCSCTL4 |= SELA_2; / 設(shè)置ACLK為REFO
35、 UCSCTL0 = 0 x0000; / 將DCOx和MODx設(shè)為最低 / 測試晶振是否產(chǎn)生故障失效,并清除故障失效標(biāo)志位 do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / 清除XT2,XT1,DCO故障失效標(biāo)志位 SFRIFG1 &= OFIFG; / 清除晶振故障失效中斷標(biāo)志位 while (SFRIFG1&OFIFG); / 測試晶振故障失效中斷標(biāo)志位5.1 時鐘系統(tǒng) _ _bis_SR_register(SCG0); / 禁止FLL UCSCTL1 = DCORSEL_5; / 選擇DCO頻率范圍 UCSCTL2 |= 249; / 設(shè)置
36、DCP頻率為8MHz / 計算公式:(249 + 1) * 32768 = 8MHz _ _bic_SR_register(SCG0); / 啟用FLL _ _delay_cycles(250000); / 延時,待DCO工作穩(wěn)定 while(1) P1OUT = BIT1; / 反轉(zhuǎn)P1.1狀態(tài) _ _delay_cycles(600000); / 軟件延遲 5.1 時鐘系統(tǒng)5.2 低功耗結(jié)構(gòu)及應(yīng)用5.2.1 低功耗模式 MSP430單片機具有7種低功耗模式(LPM04、LPM3.5和LPM4.5,并非全部系列都具有),通過不同程度的休眠,可降低系統(tǒng)功耗。在任何一種低功耗模式下,CPU都被關(guān)
37、閉,程序?qū)⑼V箞?zhí)行,直到被中斷喚醒或單片機復(fù)位。因此在進(jìn)入任何一種低功耗模式之前,都必須設(shè)置好喚醒CPU的中斷條件、打開中斷允許位、等待被喚醒,否則程序?qū)⒂锌赡苡肋h(yuǎn)停止運行。 MSP430單片機具有3種時鐘信號:輔助時鐘ACLK、子系統(tǒng)時鐘SMCLK、主系統(tǒng)時鐘MCLK。MSP430單片機能夠?qū)崿F(xiàn)低功耗的根本原因是在不同的低功耗模式下關(guān)閉不同的系統(tǒng)時鐘,關(guān)閉的系統(tǒng)時鐘越多休眠模式越深。具體是通過CPU狀態(tài)寄存器SR中的SCG1、SCG2、OSCOFF和CPUOFF這4個控制位的配置來關(guān)閉系統(tǒng)時鐘。通過配置這些控制位,可使MSP430單片機從活動模式進(jìn)入到相應(yīng)的低功耗模式。再通過中斷方式從各種低
38、功耗模式回到活動模式。各模式之間的轉(zhuǎn)換關(guān)系如圖5.2.1所示。圖5.2.1 MSP430工作模式狀態(tài)圖5.2 低功耗結(jié)構(gòu)及應(yīng)用工作模式控制位CPU和時鐘狀態(tài)喚醒中斷源活動模式(AM)SCG1=0SCG0=0OSCOFF=0CPUOFF=0CPU活動MCLK活動SMCLK活動ACLK活動DCO可用 FLL可用定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式0(LPM0)SCG1=0SCG0=0OSCOFF=0CPUOFF=1CPU禁止MCLK禁止SMCLK活動ACLK活動DCO可用 FLL可用定時器、ADC、DMA、UART、WDT、I/O
39、、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式1(LPM1)SCG1=0SCG0=1OSCOFF=0CPUOFF=1CPU禁止MCLK禁止SMCLK活動ACLK活動DCO可用 FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式2(LPM2)SCG1=1SCG0=0OSCOFF=0CPUOFF=1CPU禁止MCLK禁止SMCLK禁止ACLK活動DCO可用 FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式3(LPM3)SCG1=1SCG0=1OSCOFF=0C
40、PUOFF=1CPU禁止MCLK禁止SMCLK禁止ACLK活動DCO可用FLL禁止定時器、ADC、DMA、UART、WDT、I/O、比較器、外部中斷、RTC、串行通信、其他外設(shè)低功耗模式3.5(LPM3.5)SCG1=1SCG0=1OSCOFF=1CPUOFF=1當(dāng)PMMREGOFF = 1,無RAM保持,RTC可以啟用(僅限MSP5xx)復(fù)位信號、外部中斷、RTC低功耗模式4(LPM4)SCG1=1SCG0=1OSCOFF=1CPUOFF=1CPU禁止所有時鐘禁止復(fù)位信號、外部中斷低功耗模式4.5(LPM4.5)SCG1=1SCG0=1OSCOFF=1CPUOFF=1當(dāng)PMMREGOFF =
41、 1,無RAM保持,RTC禁止(僅限MSP5xx)復(fù)位信號、外部中斷表5.2.1 MSP430工作模式列表5.2 低功耗結(jié)構(gòu)及應(yīng)用5.2.2 MSP430單片機各工作模式下的電流消耗參數(shù)VCCVCORE頻率(fDCO=fMCLK=fSMCLK)單位1MHz8MHz12MHz20MHz25MHz典型最大典型最大典型最大典型最大典型最大IAM3.0V00.360.472.322.60mA10.402.654.04.4mA20.442.90mA30.410.111.0mA表5.2.2 活動模式下流入VCC的電流(不包含外部電流)5.2 低功耗結(jié)構(gòu)及應(yīng)用參數(shù)VC
42、CVCORE1111單位典型最大典型最大典型最大典型最大ILPM0,1MHz2.2V0737785808597mA3.0V37983928895105ILPM22.2V06.56.512101117mA3.0V37.07.013111218ILPM3,LFXT122.2V01.601.902.65.6mA11.652.002.75.921.73.0V06.122.02.43.06.332.06.49.3ILPM3,VLO33.0V0mA5.22
43、5.331.31.6 3.0ILPM43.0V0mA5.38.1ILPM4.53.0V50.260.51.0mA表5.2.3 低功耗模式下流入VCC的電流(不包含外部電流)5.2 低功耗結(jié)構(gòu)及應(yīng)用5.2.3 低功耗應(yīng)用舉例【例5.2.1】 列舉與低功耗模式相關(guān)的內(nèi)部函數(shù)。分析:MSP430的軟件開發(fā)環(huán)境(CCSv5)為低功耗模式的設(shè)置與控制提供了以下內(nèi)部函數(shù)。_ _bis_SR_register(LPM0_bits); 或L
44、PM0; / 進(jìn)入低功耗模式0_ _bis_SR_register(LPM1_bits); 或LPM1; / 進(jìn)入低功耗模式1_ _bis_SR_register(LPM2_bits); 或LPM2; / 進(jìn)入低功耗模式2_ _bis_SR_register(LPM3_bits); 或LPM3; / 進(jìn)入低功耗模式3_ _bis_SR_register(LPM4_bits); 或LPM4; / 進(jìn)入低功耗模式4_ _bic_SR_register_on_exit(LPM0_bits);或LPM0_EXIT / 退出低功耗模式0_ _bic_SR_register_on_exit(LPM1_bi
45、ts);或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);/ 常用,進(jìn)低功耗模式x,啟用中斷(x=04)5.2 低功耗結(jié)構(gòu)及應(yīng)用【例5.2.2】 分別利用軟件延遲和定時器實現(xiàn)LED閃
46、爍。分析:MSP430F5529單片機的P1.0引腳外接一個紅色的小LED,本實例分別利用軟件延遲和定時器的方法實現(xiàn)LED的閃爍,并通過對比對低功耗模式的應(yīng)用進(jìn)行解釋。(1)利用軟件延時的方法實現(xiàn)LED閃爍利用軟件延時的方法實現(xiàn)LED閃爍的實例程序代碼如下所示:#include void main(void) volatile unsigned int i; 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;i0;
47、i-); / 延時一段時間 5.2 低功耗結(jié)構(gòu)及應(yīng)用(2)利用定時器延時實現(xiàn)LED閃爍利用定時器延時實現(xiàn)LED閃爍的實例程序代碼如下所示:#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 P1DIR |= 0 x01; / 將P1.0設(shè)為輸出 TA0CCTL0 = CCIE; / CCR0中斷允許 TA0CCR0 = 50000; TA0CTL = TASSEL_2 + MC_1 + TACLR; / 參考時鐘選擇SMCLK, 增計數(shù)模式, 清除TAR計數(shù)器 _ _bis_SR_register(LPM0_bits + GIE
48、); / 進(jìn)入LPM0并使能全局中斷/TA0中斷服務(wù)程序#pragma vector=TIMER0_A0_VECTOR_ _interrupt void TIMER0_A0_ISR(void) P1OUT = 0 x01; / 反轉(zhuǎn)P1.0端口狀態(tài)5.2 低功耗結(jié)構(gòu)及應(yīng)用 對以上兩個程序分析可知,在利用軟件延時的方法實現(xiàn)LED閃爍的程序中,CPU從50000開始一直在減計數(shù),直到i等于0,反轉(zhuǎn)一次P1.0端口狀態(tài),之后繼續(xù)計數(shù),從不停止。而在利用定時器延時的方法實現(xiàn)LED閃爍的程序中,當(dāng)程序?qū)⒍〞r器TA0配置完成之后,MSP430單片機就進(jìn)入LPM0模式,CPU立刻被停止。只有當(dāng)定時時間到(50000個SMCLK
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健美操社會體育指導(dǎo)員高級模擬試卷成套編排與教學(xué)法深度剖析
- 2025年珠寶鑒定師職業(yè)技能認(rèn)證考試試題:寶石鑒定與評估實踐應(yīng)用案例
- 跨文化管理成功案例
- 2025年小升初數(shù)學(xué)入學(xué)考試模擬題(拓展創(chuàng)新型)-數(shù)列極限問題試卷
- 2025年注冊造價工程師案例分析(安裝)模擬試卷解析與實戰(zhàn)技巧
- Delphi編程中的錯誤處理技巧試題及答案
- 廣東省汕尾市陸豐市甲西鎮(zhèn)漁池小學(xué)2024-2025學(xué)年四下英語期中綜合測試模擬試題含答案
- 高中歷史人教統(tǒng)編版(必修)中外歷史綱要(上)第三單元 遼宋夏金多民族政權(quán)的并立與元朝的統(tǒng)一第10課 遼夏金元的統(tǒng)治同步訓(xùn)練題
- 2025年計算機二級Delphi筆試試題與答案
- 護理領(lǐng)域創(chuàng)新實踐與發(fā)展路徑
- 藍(lán)色大氣商務(wù)商業(yè)計劃書PPT模板
- 青春紅綠燈教學(xué)設(shè)計中小學(xué)心理健康心理游戲腳本
- 蘇教版二年級(下冊)科學(xué)全冊單元測試卷含期中期末(有答案)
- 《城鎮(zhèn)土地使用稅納稅申報表》
- 三年級數(shù)學(xué)下冊口算脫式豎式練習(xí)題
- 17025實驗室體系
- 大榆樹溝防洪治理工程初步設(shè)計報告
- 8D報告培訓(xùn)教材(共30頁).ppt
- 屋面及防水工程工程量計算PPT課件
- 逆作法與順作法施工方案比較
- 植物分類學(xué)-菊科.ppt
評論
0/150
提交評論