MSP430單片機(jī)硬件結(jié)構(gòu)及原理_第1頁(yè)
MSP430單片機(jī)硬件結(jié)構(gòu)及原理_第2頁(yè)
MSP430單片機(jī)硬件結(jié)構(gòu)及原理_第3頁(yè)
MSP430單片機(jī)硬件結(jié)構(gòu)及原理_第4頁(yè)
MSP430單片機(jī)硬件結(jié)構(gòu)及原理_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第第3 3章章 MSP430MSP430單片機(jī)硬件單片機(jī)硬件結(jié)構(gòu)及原理結(jié)構(gòu)及原理2本章內(nèi)容本章內(nèi)容n3.1 MSP430 x14x結(jié)構(gòu)概述結(jié)構(gòu)概述 n3.2 MSP430 x14x的主要特性和外部引腳的主要特性和外部引腳n3.3 MSP430單片機(jī)的中央處理器單片機(jī)的中央處理器n3.4 MSP430單片機(jī)的存儲(chǔ)器結(jié)構(gòu)單片機(jī)的存儲(chǔ)器結(jié)構(gòu)n3.5 MSP430時(shí)鐘模塊與低功耗結(jié)構(gòu)時(shí)鐘模塊與低功耗結(jié)構(gòu)n3.6系統(tǒng)復(fù)位和初始化系統(tǒng)復(fù)位和初始化n3.7 中斷系統(tǒng)中斷系統(tǒng)33.1 MSP430 x14x結(jié)構(gòu)概述結(jié)構(gòu)概述 4硬件結(jié)構(gòu)具有以下特點(diǎn):硬件結(jié)構(gòu)具有以下特點(diǎn): n超低功耗結(jié)構(gòu),能夠延長(zhǎng)電池生存周期

2、。超低功耗結(jié)構(gòu),能夠延長(zhǎng)電池生存周期。RAM保保持方式下電流為持方式下電流為0.1A,等待方式時(shí)電流為,等待方式時(shí)電流為0.8A,活動(dòng)狀態(tài)時(shí)電流也僅為,活動(dòng)狀態(tài)時(shí)電流也僅為250A/MIPS。n高性能的模擬器件可以用于精確測(cè)量。集成高性能的模擬器件可以用于精確測(cè)量。集成12位位200Kbps的的A/D轉(zhuǎn)換器,自帶采樣保持。轉(zhuǎn)換器,自帶采樣保持。n16位位RISC中央處理器,中央處理器,125ns指令周期??梢灾噶钪芷凇?梢杂幂^少的代碼空間實(shí)現(xiàn)高性能的應(yīng)用。用較少的代碼空間實(shí)現(xiàn)高性能的應(yīng)用。n在系統(tǒng)可編程的在系統(tǒng)可編程的FLASH,為開(kāi)發(fā)編程提供便利。,為開(kāi)發(fā)編程提供便利。 5MSP430 x1

3、4x主要包括以下功能部件:主要包括以下功能部件: 1.CPU2.存儲(chǔ)器:存儲(chǔ)器:3.外圍模塊:主要包括:時(shí)鐘模塊、外圍模塊:主要包括:時(shí)鐘模塊、看門(mén)狗、定時(shí)器看門(mén)狗、定時(shí)器A、定時(shí)器、定時(shí)器B、比、比較器較器A、串口、串口0、串口、串口1、硬件乘、硬件乘法器、法器、12位模數(shù)轉(zhuǎn)換和端口等。位模數(shù)轉(zhuǎn)換和端口等。6MSP430X11X系列系列 7MSP430X12X系列系列 8MSP430X13X系列系列 9MSP430X14X系列系列 10MSP430F15X/F16(1)X 系列系列 11MSP430F15X/F16(1)X 系列系列12MSP430X41X系列系列 13MSP430F43X系

4、列系列 14MSP430F44X系列系列 153.3 MSP430單片機(jī)的中央處理器單片機(jī)的中央處理器 1617MSP430CPU的主要特征的主要特征nRISC指令集,指令集,27條內(nèi)核指令和條內(nèi)核指令和7種尋址模式種尋址模式n寄存器資源豐富寄存器資源豐富n寄存器操作為單周期寄存器操作為單周期n16位地址總線(xiàn)位地址總線(xiàn)n常數(shù)發(fā)生器常數(shù)發(fā)生器n直接的存儲(chǔ)器到存儲(chǔ)器訪(fǎng)問(wèn)直接的存儲(chǔ)器到存儲(chǔ)器訪(fǎng)問(wèn)n位、字和字節(jié)操作方式位、字和字節(jié)操作方式18MSP430 CPU的寄存器的寄存器 簡(jiǎn)寫(xiě)功能R0程序計(jì)數(shù)器PC,指示下一條將要執(zhí)行的指令地址。R1堆棧指針SP,指向堆棧棧頂R2狀態(tài)寄存器SR/常數(shù)發(fā)生器CG1

5、R3常數(shù)發(fā)生器CG2R4通用寄存器R15通用寄存器19(1)程序計(jì)數(shù)器)程序計(jì)數(shù)器PC/R0n程序計(jì)數(shù)器是程序計(jì)數(shù)器是MSP430 CPU中最核心的寄存器,中最核心的寄存器,指示出下一條即將執(zhí)行的指令的地址。指示出下一條即將執(zhí)行的指令的地址。n程序計(jì)數(shù)器程序計(jì)數(shù)器PC的內(nèi)容總是偶數(shù),指向偶字節(jié)地址的內(nèi)容總是偶數(shù),指向偶字節(jié)地址.n程序計(jì)數(shù)器程序計(jì)數(shù)器PC可以像其他寄存器一樣用所有指令可以像其他寄存器一樣用所有指令和所有尋址方式訪(fǎng)問(wèn),但對(duì)程序存儲(chǔ)器的訪(fǎng)問(wèn)必須和所有尋址方式訪(fǎng)問(wèn),但對(duì)程序存儲(chǔ)器的訪(fǎng)問(wèn)必須以字為單位,否則會(huì)清除高位字節(jié)。以字為單位,否則會(huì)清除高位字節(jié)。n程序計(jì)數(shù)器程序計(jì)數(shù)器PC的變化

6、的軌跡決定程序的流程的變化的軌跡決定程序的流程.n程序計(jì)數(shù)器程序計(jì)數(shù)器PC的寬度決定了存儲(chǔ)器可以直接尋址的寬度決定了存儲(chǔ)器可以直接尋址的范圍。的范圍。nMSP430的程序計(jì)數(shù)器是的程序計(jì)數(shù)器是16位的計(jì)數(shù)器,最多位的計(jì)數(shù)器,最多直接尋址的存儲(chǔ)空間高達(dá)直接尋址的存儲(chǔ)空間高達(dá)64KB。 20n舉例:舉例: nMOV #LABLE,PC ;跳轉(zhuǎn)到地址跳轉(zhuǎn)到地址LABLE開(kāi)始執(zhí)行開(kāi)始執(zhí)行nMOV LABLE,PC ;程序開(kāi)始執(zhí)行的地址為程序開(kāi)始執(zhí)行的地址為L(zhǎng)ABLE所在內(nèi)存中的數(shù)所在內(nèi)存中的數(shù) nMOV R14,PC ;程序開(kāi)始執(zhí)行的地址為寄存器程序開(kāi)始執(zhí)行的地址為寄存器R14中的數(shù)中的數(shù)21(2)堆

7、棧指針)堆棧指針SPn系統(tǒng)堆棧在系統(tǒng)調(diào)用子程序或進(jìn)入中斷服系統(tǒng)堆棧在系統(tǒng)調(diào)用子程序或進(jìn)入中斷服務(wù)程序時(shí),能夠保護(hù)程序計(jì)數(shù)器務(wù)程序時(shí),能夠保護(hù)程序計(jì)數(shù)器PC.n然后將子程序的入口地址或者中斷矢量地然后將子程序的入口地址或者中斷矢量地址送程序計(jì)數(shù)器,執(zhí)行子程序或中斷服務(wù)址送程序計(jì)數(shù)器,執(zhí)行子程序或中斷服務(wù)程序。程序。n子程序或者中斷服務(wù)程序執(zhí)行完畢,遇到子程序或者中斷服務(wù)程序執(zhí)行完畢,遇到返回指令時(shí),將堆棧的內(nèi)容送到程序計(jì)數(shù)返回指令時(shí),將堆棧的內(nèi)容送到程序計(jì)數(shù)器中,程序流程又返回到原來(lái)的地方,繼器中,程序流程又返回到原來(lái)的地方,繼續(xù)執(zhí)行續(xù)執(zhí)行.n此外,堆棧可以在函數(shù)調(diào)用期間保存寄存此外,堆棧可以在

8、函數(shù)調(diào)用期間保存寄存器變量、局域變量和參數(shù)等。器變量、局域變量和參數(shù)等。 22n堆棧指針堆棧指針SP總是指向堆棧的頂部。系統(tǒng)在將數(shù)據(jù)總是指向堆棧的頂部。系統(tǒng)在將數(shù)據(jù)壓入堆棧時(shí),總是先將堆棧指針壓入堆棧時(shí),總是先將堆棧指針SP的值減的值減2,然,然后再將數(shù)據(jù)送到后再將數(shù)據(jù)送到SP所指的所指的RAM單元。將數(shù)據(jù)從單元。將數(shù)據(jù)從堆棧中彈出正好與壓入過(guò)程相反;先將數(shù)據(jù)從堆棧中彈出正好與壓入過(guò)程相反;先將數(shù)據(jù)從SP所指示的內(nèi)存單元取出,再將所指示的內(nèi)存單元取出,再將SP值加值加2。23n舉例:舉例:nMOV 2(SP), R6 ;將內(nèi)存單元將內(nèi)存單元I2中的數(shù)放到中的數(shù)放到R6中中nMOV R7, 0(

9、SP) ;將將R7中的數(shù)放到棧頂所在單元中的數(shù)放到棧頂所在單元(I3)中中nPUSH #0123h ;將將SP的值減的值減2,再將再將#0123h放到放到SP所指向的單元中。所指向的單元中。nPOP R8 ;將將SP所指向單元中的數(shù)所指向單元中的數(shù)(#0123h)放到放到R8中,再將中,再將SP的的值加值加2 24(3) 狀態(tài)寄存器狀態(tài)寄存器SR0C進(jìn)位標(biāo)志。當(dāng)運(yùn)算結(jié)果產(chǎn)生進(jìn)位時(shí)置位,否則復(fù)位。1Z零標(biāo)志。當(dāng)運(yùn)算結(jié)果為零時(shí)Z置位,否則Z復(fù)位。2N負(fù)標(biāo)志。當(dāng)運(yùn)算結(jié)果為負(fù)時(shí)N置位,否則N復(fù)位。3GIE中斷控制位??刂瓶善帘沃袛?,當(dāng)GIE置位CPU可響應(yīng)可屏蔽中斷,否則不響應(yīng)可屏蔽中斷。4CPUOf

10、f置位CPUOff位可使CPU進(jìn)入關(guān)閉模式,可用所有允許的中斷將CPU喚醒。C-Carry bit ;Z-Zero bit;N-Negative bit;GIE-General Interrupt Enable255OscOff置位OscOff位可使晶體振蕩器處于停止?fàn)顟B(tài),同時(shí)CPUOff也需置位??捎猛獠恐袛嗷蛘逳MI喚醒。6SCG0SCG0置位關(guān)閉SMCLK,與SCG1一起控制系統(tǒng)時(shí)鐘發(fā)生器的4種狀態(tài)。7SCG1SCG1置位關(guān)閉DCO發(fā)生器,與SCG0一起控制系統(tǒng)時(shí)鐘發(fā)生器的4種狀態(tài)。8V溢出標(biāo)志。當(dāng)運(yùn)算結(jié)果超出有符號(hào)數(shù)范圍時(shí)置位。溢出情況如下:正數(shù) + 正數(shù) = 負(fù)數(shù)負(fù)數(shù) + 負(fù)數(shù) =

11、正數(shù)正數(shù) - 負(fù)數(shù) = 負(fù)數(shù)負(fù)數(shù) - 正數(shù) = 正數(shù)915保留未用。OscOff-Oscillator Off;SCG0-System Clock Generator;V-Overflow bit26(4) 常數(shù)發(fā)生器常數(shù)發(fā)生器CG1和和CG2寄存器As常數(shù)說(shuō)明R200-寄存器模式R201(0)絕對(duì)尋址模式R21000004H+4位處理R21100008H+8位處理R30000000H0字處理R30100001H+1R31000002H+2位處理R3110FFFFH-1位處理27n舉例:?jiǎn)尾僮鲾?shù)指令舉例:?jiǎn)尾僮鲾?shù)指令nCLR dst ;將將dst單元清零單元清零n這不是內(nèi)核指令,而是一條模擬指

12、令,匯編器將這不是內(nèi)核指令,而是一條模擬指令,匯編器將As=00,R3=0,用,用nMOV R3,dst n來(lái)模擬。來(lái)模擬。28(5)通用工作寄存器)通用工作寄存器R4R15n舉例:舉例:nMOV #1234H,R15 ;執(zhí)行后執(zhí)行后R15內(nèi)容為內(nèi)容為1234HnMOV.B #23H,R15 ;執(zhí)行后執(zhí)行后R15內(nèi)容為內(nèi)容為0023HnADD.B #34H,R15 ;執(zhí)行后執(zhí)行后R15內(nèi)容為內(nèi)容為0057H293.4 MSP430單片機(jī)的存儲(chǔ)器結(jié)構(gòu)單片機(jī)的存儲(chǔ)器結(jié)構(gòu) nMSP430系列的存儲(chǔ)空間采用系列的存儲(chǔ)空間采用“馮馮-諾依曼諾依曼”結(jié)結(jié)構(gòu),物理上完全分離的存儲(chǔ)區(qū)域如構(gòu),物理上完全分離的存

13、儲(chǔ)區(qū)域如ROM/FLASH、RAM、外圍模塊、特殊功能寄存器、外圍模塊、特殊功能寄存器SFR等,被安等,被安排在同一地址空間,這樣就可以使用一組地址、排在同一地址空間,這樣就可以使用一組地址、數(shù)據(jù)總線(xiàn)、相同的指令對(duì)它們進(jìn)行字節(jié)或字形式數(shù)據(jù)總線(xiàn)、相同的指令對(duì)它們進(jìn)行字節(jié)或字形式訪(fǎng)問(wèn)。訪(fǎng)問(wèn)。nMSP430系列單片機(jī)存儲(chǔ)器的這種組織方式和系列單片機(jī)存儲(chǔ)器的這種組織方式和CPU采用精簡(jiǎn)指令相互協(xié)調(diào),對(duì)外圍模塊的訪(fǎng)問(wèn)采用精簡(jiǎn)指令相互協(xié)調(diào),對(duì)外圍模塊的訪(fǎng)問(wèn)不需要單獨(dú)的指令,為軟件的開(kāi)發(fā)和調(diào)試提供便不需要單獨(dú)的指令,為軟件的開(kāi)發(fā)和調(diào)試提供便利。利。303.4.1 MSP430存儲(chǔ)空間結(jié)構(gòu)存儲(chǔ)空間結(jié)構(gòu)MSP4

14、30不同系列器件的存儲(chǔ)空間分布有很不同系列器件的存儲(chǔ)空間分布有很多相同之處:多相同之處:n中斷向量被安排在相同的空間:中斷向量被安排在相同的空間:0FFE00FFFFH;n8位、位、16位外圍模塊占用相同范圍的存儲(chǔ)器地址;位外圍模塊占用相同范圍的存儲(chǔ)器地址;n所有器件的特殊功能寄存器占用相同范圍的存儲(chǔ)器地所有器件的特殊功能寄存器占用相同范圍的存儲(chǔ)器地址:址:00H0FH;n數(shù)據(jù)存儲(chǔ)器開(kāi)始于相同的地址,即從數(shù)據(jù)存儲(chǔ)器開(kāi)始于相同的地址,即從0200H處開(kāi)始;處開(kāi)始;n代碼存儲(chǔ)器的最高地址都是代碼存儲(chǔ)器的最高地址都是0FFFFH。31存儲(chǔ)空間的分布也存在一些差異:存儲(chǔ)空間的分布也存在一些差異:n不同

15、型號(hào)器件的代碼存儲(chǔ)器容量不一樣;不同型號(hào)器件的代碼存儲(chǔ)器容量不一樣;n代碼存儲(chǔ)器的起始地址不一樣,每一種器件的代碼存儲(chǔ)器代碼存儲(chǔ)器的起始地址不一樣,每一種器件的代碼存儲(chǔ)器的起始地址為的起始地址為 起始地址起始地址 = 10000H 該器件的代碼容量該器件的代碼容量n僅僅FLASH型有信息存儲(chǔ)器,而且不同的器件地址也不一型有信息存儲(chǔ)器,而且不同的器件地址也不一樣,但容量都是樣,但容量都是256Bn僅僅FLASH型有引導(dǎo)存儲(chǔ)器,而且不同器件的地址也不一型有引導(dǎo)存儲(chǔ)器,而且不同器件的地址也不一樣,但容量都是樣,但容量都是1KBn各器件數(shù)據(jù)存儲(chǔ)器的末地址也不一樣,其末地址為各器件數(shù)據(jù)存儲(chǔ)器的末地址也不

16、一樣,其末地址為 末地址末地址 = 該器件數(shù)據(jù)該器件數(shù)據(jù)RAM容量容量 + 0200Hn中斷向量的具體內(nèi)容因器件不同而不同;中斷向量的具體內(nèi)容因器件不同而不同;n所有器件的所有器件的8位、位、16位外圍模塊地址范圍內(nèi)的具體內(nèi)容因位外圍模塊地址范圍內(nèi)的具體內(nèi)容因器件不同而不同。器件不同而不同。323.4.1 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器RAMnMSP430的數(shù)據(jù)存儲(chǔ)器位于存儲(chǔ)器地址空間的的數(shù)據(jù)存儲(chǔ)器位于存儲(chǔ)器地址空間的0200H以上,這些存儲(chǔ)器一般用做數(shù)據(jù)的保存與以上,這些存儲(chǔ)器一般用做數(shù)據(jù)的保存與堆棧,同時(shí)也是數(shù)據(jù)運(yùn)算的場(chǎng)所,特殊場(chǎng)合還可堆棧,同時(shí)也是數(shù)據(jù)運(yùn)算的場(chǎng)所,特殊場(chǎng)合還可以用作程序存儲(chǔ)器。以用

17、作程序存儲(chǔ)器。n可以字操作也可以字節(jié)操作,通過(guò)指令后綴加以可以字操作也可以字節(jié)操作,通過(guò)指令后綴加以區(qū)別。區(qū)別。n字節(jié)操作可以是奇地址或者是偶地址,在字操作字節(jié)操作可以是奇地址或者是偶地址,在字操作時(shí),每?jī)蓚€(gè)字節(jié)為一個(gè)操作單位,必須對(duì)準(zhǔn)偶地時(shí),每?jī)蓚€(gè)字節(jié)為一個(gè)操作單位,必須對(duì)準(zhǔn)偶地址。址。33舉例舉例MOV.B #20H, &221H; 執(zhí)行后執(zhí)行后221H單元的內(nèi)容為單元的內(nèi)容為20HMOV.B #324H, &221H; 執(zhí)行后執(zhí)行后221H單元的內(nèi)容為單元的內(nèi)容為24HMOV.W #3234H, &222H; 執(zhí)行后執(zhí)行后222H單元的內(nèi)容為單元的內(nèi)容為34H,223H單元的內(nèi)容為單元的

18、內(nèi)容為32HMOV.W #324H, &221H; 執(zhí)行后執(zhí)行后221H單元的內(nèi)容為單元的內(nèi)容為03H,220H單元的內(nèi)容為單元的內(nèi)容為24HRAM空間還可以進(jìn)行運(yùn)算,如:空間還可以進(jìn)行運(yùn)算,如:MOV.B #33H, &220H; 執(zhí)行后地址執(zhí)行后地址220H的內(nèi)容為的內(nèi)容為33HADD.B #22H, &220H; 執(zhí)行后地址執(zhí)行后地址220H的內(nèi)容為的內(nèi)容為55H343.4.2 程序存儲(chǔ)器程序存儲(chǔ)器ROMn程序程序ROM區(qū)為區(qū)為0FFFFH以下一定數(shù)量存儲(chǔ)空間,以下一定數(shù)量存儲(chǔ)空間,可存放指令代碼和數(shù)據(jù)表格。程序代碼必須偶地可存放指令代碼和數(shù)據(jù)表格。程序代碼必須偶地址尋址。址尋址。n程序

19、代碼可分為三種情況:中斷向量區(qū)、用戶(hù)程程序代碼可分為三種情況:中斷向量區(qū)、用戶(hù)程序代碼及系統(tǒng)引導(dǎo)程序序代碼及系統(tǒng)引導(dǎo)程序(個(gè)別器件有,如個(gè)別器件有,如FLASH型型)。351 中斷向量區(qū)中斷向量區(qū)中斷源中斷標(biāo)志系統(tǒng)中斷地址優(yōu)先級(jí)上電、外部復(fù)位、看門(mén)狗、FLASH存儲(chǔ)器WDTIFG復(fù)位0FFFEH15 NMI、振蕩器故障、FLASH訪(fǎng)問(wèn)出錯(cuò)NMIFG、OFIGF、ACCVIFG非屏蔽/可屏蔽0FFFCH14定時(shí)器BBCCIFG0可屏蔽0FFFAH13定時(shí)器BB C C I F G 1 6 ,TBIFG可屏蔽0FFF8H12比較器ACMPAIFG可屏蔽0FFF6H11看門(mén)狗定時(shí)器WDTIFG可屏蔽

20、0FFF4H10串口0接收URXIFG0可屏蔽0FFF2H9串口0發(fā)送UTXIFG0可屏蔽0FFF0H8ADCADCIFG可屏蔽0FFEEH7定時(shí)器ACCIFG0可屏蔽0FFECH6定時(shí)器AC C I F G 1 2 ,TAIFG可屏蔽0FFEAH5P1P1IFG.07可屏蔽0FFE8H4串口1接收URXIFG1可屏蔽0FFE6H3串口1發(fā)送UTXIFG1可屏蔽0FFE4H2P2P2IFG.07可屏蔽0FFE2H1362 用戶(hù)程序區(qū)用戶(hù)程序區(qū)n用戶(hù)程序區(qū)一般用來(lái)存放程序與常數(shù)或表格。用戶(hù)程序區(qū)一般用來(lái)存放程序與常數(shù)或表格。MSP430的存儲(chǔ)結(jié)構(gòu)尤其允許存放大的數(shù)表,并的存儲(chǔ)結(jié)構(gòu)尤其允許存放大的

21、數(shù)表,并且可以用所有的字和字節(jié)指令訪(fǎng)問(wèn)這些表。這一且可以用所有的字和字節(jié)指令訪(fǎng)問(wèn)這些表。這一點(diǎn)為提高編程的靈活性和節(jié)省程序存儲(chǔ)空間帶來(lái)點(diǎn)為提高編程的靈活性和節(jié)省程序存儲(chǔ)空間帶來(lái)各種好處。各種好處。373.4.3 外圍模塊寄存器外圍模塊寄存器nMSP430系列單片機(jī)外圍模塊的尋址被安排在系列單片機(jī)外圍模塊的尋址被安排在0010H01FFH這一區(qū)域,都可以用軟件訪(fǎng)問(wèn)和這一區(qū)域,都可以用軟件訪(fǎng)問(wèn)和控制??刂?。nMSP430可以象可以象訪(fǎng)問(wèn)普通訪(fǎng)問(wèn)普通RAM單元一樣對(duì)這些寄單元一樣對(duì)這些寄存器進(jìn)行操作。這些寄存器也分為字節(jié)結(jié)構(gòu)和字存器進(jìn)行操作。這些寄存器也分為字節(jié)結(jié)構(gòu)和字結(jié)構(gòu)。結(jié)構(gòu)。n地址空間地址空間

22、0100H01FFH安排字結(jié)構(gòu),地址空間安排字結(jié)構(gòu),地址空間0010H00FFH安排字節(jié)模塊,地址空間安排字節(jié)模塊,地址空間0000H000FH保存特殊功能寄存器。保存特殊功能寄存器。38MSP430F149 字模塊的空間分配字模塊的空間分配地址說(shuō)明地址說(shuō)明0H1FFH保留170H170H定時(shí)器A1E0H1EFH保留160H16FH定時(shí)器A1D0H1DFH保留150H15FHADC12轉(zhuǎn)換0H1CFH保留140H14FHADC12轉(zhuǎn)換1B0H1BFH保留130H13FH硬件乘法器0H1AFHADC12控制和中斷120H12FH看門(mén)狗、FLASH控制190H19FH定時(shí)器B110H11FH保留1

23、80H18FH定時(shí)器B100H10FH保留39MSP430F149 字節(jié)模塊的空間分配字節(jié)模塊的空間分配地址說(shuō)明地址說(shuō)明0H1FFH保留70H70H串口1/串口00E0H1EFH保留60H6FH保留0D0H1DFH保留50H5FH比較器A,系統(tǒng)時(shí)鐘0H1CFH保留40H4FH保留0B0H1BFH保留30H3FH端口6/端口50H1AFH保留20H2FH端口4/端口3090H19FH保留10H1FH端口1/端口2080H18FHADC12存儲(chǔ)控制00H0FHSFR40MSP430F149 特殊功能寄存器特殊功能寄存器SFR的空間分配的空間分配地址說(shuō)明地址說(shuō)明0FH無(wú)定義/未實(shí)現(xiàn)07H無(wú)定義/未實(shí)

24、現(xiàn)0EH無(wú)定義/未實(shí)現(xiàn)06H無(wú)定義/未實(shí)現(xiàn)0DH無(wú)定義/未實(shí)現(xiàn)05H模塊允許2:ME20CH無(wú)定義/未實(shí)現(xiàn)04H模塊允許1:ME10BH無(wú)定義/未實(shí)現(xiàn)03H中斷標(biāo)志2:IFG20AH無(wú)定義/未實(shí)現(xiàn)02H中斷標(biāo)志1:IFG109H無(wú)定義/未實(shí)現(xiàn)01H中斷允許2:IE208H無(wú)定義/未實(shí)現(xiàn)00H中斷允許1:IE1413.5 MSP430時(shí)鐘模塊與低功耗結(jié)構(gòu)時(shí)鐘模塊與低功耗結(jié)構(gòu)n時(shí)鐘模塊對(duì)于單片機(jī)來(lái)說(shuō)是至關(guān)重要的,它不僅給時(shí)鐘模塊對(duì)于單片機(jī)來(lái)說(shuō)是至關(guān)重要的,它不僅給CPU提提供正確的時(shí)序,還給單片機(jī)的外圍模塊提供工作時(shí)序。因供正確的時(shí)序,還給單片機(jī)的外圍模塊提供工作時(shí)序。因此,一個(gè)高效穩(wěn)定的時(shí)鐘模塊

25、是單片機(jī)系統(tǒng)能夠正常工作此,一個(gè)高效穩(wěn)定的時(shí)鐘模塊是單片機(jī)系統(tǒng)能夠正常工作的基礎(chǔ)。的基礎(chǔ)。n在數(shù)字系統(tǒng)中,系統(tǒng)功耗與頻率成正比,實(shí)際應(yīng)用中常希在數(shù)字系統(tǒng)中,系統(tǒng)功耗與頻率成正比,實(shí)際應(yīng)用中常希望系統(tǒng)能夠快速響應(yīng)事件的同時(shí)又要盡量的降低系統(tǒng)能耗,望系統(tǒng)能夠快速響應(yīng)事件的同時(shí)又要盡量的降低系統(tǒng)能耗,這對(duì)于單片機(jī)來(lái)說(shuō)是一個(gè)互相矛盾的要求。這對(duì)于單片機(jī)來(lái)說(shuō)是一個(gè)互相矛盾的要求。nMSP430的系統(tǒng)時(shí)鐘很好的滿(mǎn)足了這個(gè)要求,它通過(guò)提的系統(tǒng)時(shí)鐘很好的滿(mǎn)足了這個(gè)要求,它通過(guò)提供幾種不同的時(shí)鐘信號(hào),并為時(shí)鐘設(shè)計(jì)多種不同的工作模供幾種不同的時(shí)鐘信號(hào),并為時(shí)鐘設(shè)計(jì)多種不同的工作模式,使用戶(hù)可以根據(jù)需要,靈活的為式

26、,使用戶(hù)可以根據(jù)需要,靈活的為CPU和外設(shè)選擇合適和外設(shè)選擇合適的時(shí)鐘頻率。的時(shí)鐘頻率。423.5.1 MSP430系列時(shí)鐘模塊系列時(shí)鐘模塊43它有它有3個(gè)時(shí)鐘源輸入端個(gè)時(shí)鐘源輸入端nLFXT1CLK 低頻時(shí)鐘源,接低頻時(shí)鐘晶體、也低頻時(shí)鐘源,接低頻時(shí)鐘晶體、也可接高頻時(shí)鐘晶體、陶瓷諧振器或直接外接時(shí)鐘可接高頻時(shí)鐘晶體、陶瓷諧振器或直接外接時(shí)鐘信號(hào)源。信號(hào)源。nXT2CLK 高頻時(shí)鐘源,接標(biāo)準(zhǔn)高頻晶體、也高頻時(shí)鐘源,接標(biāo)準(zhǔn)高頻晶體、也可接陶瓷諧振器或直接外接可接陶瓷諧振器或直接外接450kHz8MHz時(shí)鐘時(shí)鐘信號(hào)源。信號(hào)源。nDCOCLK 片內(nèi)可以數(shù)字控制的片內(nèi)可以數(shù)字控制的RC振蕩器。振蕩器

27、。44基礎(chǔ)時(shí)鐘模塊可提供基礎(chǔ)時(shí)鐘模塊可提供3種時(shí)鐘信號(hào):種時(shí)鐘信號(hào):nACLK 輔助時(shí)鐘,是輔助時(shí)鐘,是LFXT1CLK信號(hào)經(jīng)信號(hào)經(jīng)1,2,4,8分頻分頻后得到的。分頻系數(shù)可由軟件控制。后得到的。分頻系數(shù)可由軟件控制。ACLK可由軟件選作可由軟件選作各個(gè)外圍模塊的時(shí)鐘信號(hào),一般用于低速外設(shè)。各個(gè)外圍模塊的時(shí)鐘信號(hào),一般用于低速外設(shè)。nMCLK 系統(tǒng)主時(shí)鐘,由軟件選擇來(lái)自系統(tǒng)主時(shí)鐘,由軟件選擇來(lái)自L(fǎng)FXT1CLK、XT2CLK,DCOCLK三者之一,然后經(jīng)三者之一,然后經(jīng)1,2,4,8分頻分頻得到,分頻系數(shù)可由軟件控制。主要用于得到,分頻系數(shù)可由軟件控制。主要用于CPU和系統(tǒng)。和系統(tǒng)。nSMCL

28、K 子系統(tǒng)時(shí)鐘,由軟件選擇來(lái)自子系統(tǒng)時(shí)鐘,由軟件選擇來(lái)自L(fǎng)FXT1CLK、XT2CLK,DCOCLK三者之一,然后經(jīng)三者之一,然后經(jīng)1,2,4,8分頻分頻得到,分頻系數(shù)可由軟件控制。主要用于高速外圍模塊。得到,分頻系數(shù)可由軟件控制。主要用于高速外圍模塊。45n當(dāng)發(fā)生有效的當(dāng)發(fā)生有效的PUC后,后,MCLK和和SMCLK使用工作使用工作在在800KHz附近附近DCOCLK作為時(shí)鐘源,作為時(shí)鐘源,ACLK使使用工作在低速模式的用工作在低速模式的LFXT1CLK作為時(shí)鐘源。作為時(shí)鐘源。n狀態(tài)寄存器狀態(tài)寄存器(SR)控制位控制位SCG0、SCG1、OSCOFF和和CPUOFF用來(lái)配置基礎(chǔ)時(shí)鐘模塊的使用

29、來(lái)配置基礎(chǔ)時(shí)鐘模塊的使能。能。nDCOCTL、BCSCTL1和和BCSCTL2用來(lái)配置基礎(chǔ)用來(lái)配置基礎(chǔ)時(shí)鐘模塊。在程序運(yùn)行的任何時(shí)間,都可以通過(guò)時(shí)鐘模塊。在程序運(yùn)行的任何時(shí)間,都可以通過(guò)這些寄存器來(lái)配置基礎(chǔ)時(shí)鐘模塊。這些寄存器來(lái)配置基礎(chǔ)時(shí)鐘模塊。n(PUC-Power Up Clear重啟)重啟)n(POR-Power On Reset上電復(fù)位,更徹底復(fù)上電復(fù)位,更徹底復(fù)位)位)463.5.2 低速晶體振蕩器低速晶體振蕩器nMSP430系列的每種產(chǎn)品中都有低速晶體振蕩器系列的每種產(chǎn)品中都有低速晶體振蕩器(LTXT1),通常外接),通常外接32768Hz的時(shí)鐘晶體,的時(shí)鐘晶體,可以選擇使用廣泛使

30、用的手表晶振,同時(shí)將所需可以選擇使用廣泛使用的手表晶振,同時(shí)將所需兩個(gè)小電容也集成在內(nèi)部。這樣可降低系統(tǒng)成本。兩個(gè)小電容也集成在內(nèi)部。這樣可降低系統(tǒng)成本。nLFXT1振蕩器在發(fā)生有效的振蕩器在發(fā)生有效的PUC后開(kāi)始工作,一后開(kāi)始工作,一次有效的次有效的PUC信號(hào)將信號(hào)將SR寄存器的寄存器的OscOff位復(fù)位,位復(fù)位,即允許即允許LFXT1工作。如果工作。如果LFXT1CLK信號(hào)沒(méi)有用信號(hào)沒(méi)有用作作SMCLK或或ACLK信號(hào),則可以用軟件將信號(hào),則可以用軟件將OscOff位置以禁止位置以禁止LFXT1工作:工作:nMOV #OscOff,SR47LFXT1 的控制邏輯如下圖所示:的控制邏輯如下圖

31、所示:48注意:注意:n低速時(shí)鐘通常需要幾百低速時(shí)鐘通常需要幾百ms的時(shí)間來(lái)啟動(dòng)。的時(shí)間來(lái)啟動(dòng)。n盡量避免外界信號(hào)對(duì)晶體的干擾,布線(xiàn)時(shí)晶體要盡量避免外界信號(hào)對(duì)晶體的干擾,布線(xiàn)時(shí)晶體要盡量靠近單片機(jī)。盡量靠近單片機(jī)。n當(dāng)工作在低速模式時(shí),如果當(dāng)工作在低速模式時(shí),如果VCC小于小于2.5V,為保,為保證正常工作,需要在證正常工作,需要在VSS和和XOUT之間加入之間加入5.1M歐姆電阻歐姆電阻nLFXT1振蕩器也可以外接頻率較高的高速晶體振振蕩器也可以外接頻率較高的高速晶體振蕩器或陶瓷振蕩器,以工作在高速模式;這時(shí)蕩器或陶瓷振蕩器,以工作在高速模式;這時(shí)XTS位置位,同時(shí)兩個(gè)引腳還要外接電容,電容

32、位置位,同時(shí)兩個(gè)引腳還要外接電容,電容大小根據(jù)晶體或振蕩器的特性來(lái)選擇。大小根據(jù)晶體或振蕩器的特性來(lái)選擇。493.5.3 高速晶體振蕩器高速晶體振蕩器n高速振蕩器(高速振蕩器(XT2)主要存在于)主要存在于F13X,F(xiàn)14X,F(xiàn)4XX等等器件,一般稱(chēng)之為第二振蕩器器件,一般稱(chēng)之為第二振蕩器XT2,它產(chǎn)生時(shí)鐘信號(hào),它產(chǎn)生時(shí)鐘信號(hào)XT2CLK,它的工作特性與,它的工作特性與LFXT1振蕩器工作在高頻模式振蕩器工作在高頻模式時(shí)類(lèi)似。時(shí)類(lèi)似。n下頁(yè)圖是下頁(yè)圖是TX2振蕩器的控制邏輯。如果振蕩器的控制邏輯。如果XT2CLK信號(hào)沒(méi)用信號(hào)沒(méi)用做做MCLK、SMCLK時(shí)鐘信號(hào),則可以用時(shí)鐘信號(hào),則可以用XT2

33、Off控制位關(guān)控制位關(guān)閉閉XT2。n如果如果CPUOff=0,SELM=2,則,則XT2CLK用做用做MCLK時(shí)鐘;時(shí)鐘;如果如果SCG1=0且且SELS=1,XT2CLK用做用做SMCLK時(shí)鐘。時(shí)鐘。50513.5.4 DCO振蕩器振蕩器nMSP430系列的兩個(gè)外部振蕩器產(chǎn)生的時(shí)鐘信號(hào)都可以系列的兩個(gè)外部振蕩器產(chǎn)生的時(shí)鐘信號(hào)都可以經(jīng)經(jīng)1,2,4,8分頻后用作系統(tǒng)主時(shí)鐘分頻后用作系統(tǒng)主時(shí)鐘MCLK。上電復(fù)位。上電復(fù)位或振蕩器失效時(shí),或振蕩器失效時(shí),DCO振蕩器會(huì)自動(dòng)被選做振蕩器會(huì)自動(dòng)被選做MCLK的時(shí)鐘的時(shí)鐘源,頻率在源,頻率在800K左右。左右。nDCO振蕩器實(shí)質(zhì)上是一個(gè)可數(shù)字控制的振蕩器實(shí)

34、質(zhì)上是一個(gè)可數(shù)字控制的RC振蕩器。因?yàn)檎袷幤鳌R驗(yàn)镽C振蕩器的頻率會(huì)隨著溫度和工作電壓的變化而變化,振蕩器的頻率會(huì)隨著溫度和工作電壓的變化而變化,所以同一型號(hào)芯片產(chǎn)生的頻率有所不同。所以同一型號(hào)芯片產(chǎn)生的頻率有所不同。n但同時(shí)但同時(shí)DCO頻率可通過(guò)頻率可通過(guò)DCO、MOD、Rsel等控制位用軟等控制位用軟件調(diào)節(jié),這又增加了振蕩器頻率的穩(wěn)定性。件調(diào)節(jié),這又增加了振蕩器頻率的穩(wěn)定性。n當(dāng)當(dāng)DCO信號(hào)沒(méi)有用作信號(hào)沒(méi)有用作SMCLK和和MCLK時(shí)鐘信號(hào)時(shí),可以時(shí)鐘信號(hào)時(shí),可以用軟件關(guān)閉直流發(fā)生器,直流發(fā)生器消耗的電流定義了用軟件關(guān)閉直流發(fā)生器,直流發(fā)生器消耗的電流定義了DCOCLK的基本頻率。的基本頻

35、率。52DCO的控制邏輯如圖所示。的控制邏輯如圖所示。53MSP430 x1xx的的DCO控制原理圖控制原理圖54最終的最終的DCO輸出頻率輸出頻率DCOCLK由以下功能建立:由以下功能建立:n DCO基礎(chǔ)頻率由內(nèi)部或外部電阻向基礎(chǔ)頻率由內(nèi)部或外部電阻向DC發(fā)生器發(fā)生器注入的電流決定,由注入的電流決定,由DCOR控制位選擇片內(nèi)或片控制位選擇片內(nèi)或片外電阻。外電阻。n 基礎(chǔ)頻率由控制位基礎(chǔ)頻率由控制位Rsel2,Rsel1和和Rsel0分分頻為頻為8個(gè)標(biāo)稱(chēng)頻率范圍,而這些頻率范圍因不同個(gè)標(biāo)稱(chēng)頻率范圍,而這些頻率范圍因不同型號(hào)而異。型號(hào)而異。n 控制位控制位DCO0,DCO1和和DCO2可分段調(diào)節(jié)

36、可分段調(diào)節(jié)DCOCLK頻率。頻率。n 由由5個(gè)調(diào)整位個(gè)調(diào)整位MOD0MOD4控制切換控制切換DCO和和DCO+1選擇的兩種頻率。選擇的兩種頻率。55n由由DCO控制位選擇的控制位選擇的DCOCLK頻率大約可以在時(shí)頻率大約可以在時(shí)鐘周期的鐘周期的10%范圍內(nèi)調(diào)整。在范圍內(nèi)調(diào)整。在MSP430 x1xx系系列中列中DCO的控制由的控制由3個(gè)寄存器完成:個(gè)寄存器完成:DCOCTL、BCSCTL1、BCSCTL2。n(Basic Clock System Control Register )56(1) DCOCTLn地址為地址為056H,PUC后的值為后的值為060HnMOD.0 MOD.4 定義了在

37、定義了在32個(gè)個(gè)DCO周期中插周期中插入的入的f(DCO+1)周期,而在余下的周期,而在余下的DCO周期中為周期中為f(DCO)周期。如果周期。如果DCO常數(shù)為常數(shù)為7,由于已經(jīng)選擇,由于已經(jīng)選擇了最高頻率將不進(jìn)行調(diào)整。了最高頻率將不進(jìn)行調(diào)整。nDCO.0 DCO.2 定義了定義了8種頻率之一,而頻率種頻率之一,而頻率由注入直流發(fā)生器的電流定義。由注入直流發(fā)生器的電流定義。57(2)BCSTCL1 n地址為地址為057H,PUC后的值為后的值為084H58Rsel.0 Rsel.2 三位選擇某個(gè)內(nèi)部電阻以決定標(biāo)稱(chēng)頻率。三位選擇某個(gè)內(nèi)部電阻以決定標(biāo)稱(chēng)頻率。 Rsel=0,選擇最低的標(biāo)稱(chēng)頻率;,選

38、擇最低的標(biāo)稱(chēng)頻率; Rsel=7,選擇最高的標(biāo)稱(chēng)頻率。,選擇最高的標(biāo)稱(chēng)頻率。XT5V 此位必須為此位必須為0。DIVA.0 DIVA.1 選擇選擇ACLK的分頻系數(shù)。的分頻系數(shù)。 DIVA=0,ACLK的分頻系數(shù)為的分頻系數(shù)為1; DIVA=1,ACLK的分頻系數(shù)為的分頻系數(shù)為2; DIVA=2,ACLK的分頻系數(shù)為的分頻系數(shù)為4; DIVA=3,ACLK的分頻系數(shù)為的分頻系數(shù)為8。XTS 選擇選擇LFXT1工作在低頻晶振模式還是高頻晶振模式,選擇須同實(shí)際晶體。工作在低頻晶振模式還是高頻晶振模式,選擇須同實(shí)際晶體。 XTS=0,LFXT1工作在低頻模式;工作在低頻模式; XTS=1,LFXT1

39、工作在高頻模式。工作在高頻模式。XT2OFF 控制控制XT2振蕩器的開(kāi)啟與關(guān)閉。振蕩器的開(kāi)啟與關(guān)閉。 XT2OFF=0,XT2振蕩器開(kāi)啟;振蕩器開(kāi)啟; XT2OFF=1,XT2振蕩器關(guān)閉。振蕩器關(guān)閉。5960(3)BCSTCL2 地址為地址為058H,PUC后值為后值為00HDCOR 選擇內(nèi)部還是外部電阻。選擇內(nèi)部還是外部電阻。DCOR=0,選擇,選擇內(nèi)部電阻;內(nèi)部電阻;DCOR=1,選擇外部電阻。,選擇外部電阻。DIVS.0 DIVS.1 選擇選擇SMCLK的分頻因子。的分頻因子。DIVS=0,分頻因子為1;DIVS=1,分頻因子為2;DIVS=2,分頻因子為4;DIVS=3,分頻因子為8。

40、61SELS 選擇選擇SMCLK的時(shí)鐘源。的時(shí)鐘源。SELS=0,SMCLK的時(shí)鐘源為DCOCLK;SELS=1,SMCLK的時(shí)鐘源為L(zhǎng)FXT1CLK(對(duì)于MSP430F11XX), SMCLK的時(shí)鐘源為XT2CLK(對(duì)于MSP430F13X/14X)。DIVM.0 DIVM.1 選擇選擇MCLK的分頻因子。的分頻因子。DIVM=0,分頻因子為1;DIVM=1,分頻因子為2;DIVM=2,分頻因子為4;DIVM=3,分頻因子為8。SELM.0 SELM.1 選擇選擇MCLK的時(shí)鐘源。的時(shí)鐘源。SELM=0,MCLK的時(shí)鐘源為DCOCLK;SELM=1,MCLK的時(shí)鐘源為DCOCLK;SELM=

41、2,MCLK的時(shí)鐘源為L(zhǎng)FXT1CLK(對(duì)于MSP430F11XX), MCLK的時(shí)鐘源為XT2CLK(對(duì)MSP430F13X/14X);SELM=3,MCLK的時(shí)鐘源為L(zhǎng)FXT1CLK。62PUC信號(hào)之后,信號(hào)之后,DCOCLK被自動(dòng)選做被自動(dòng)選做MCLK時(shí)鐘信時(shí)鐘信號(hào),根據(jù)需要,號(hào),根據(jù)需要,MCLK的時(shí)鐘源可以另外設(shè)置為的時(shí)鐘源可以另外設(shè)置為L(zhǎng)FXT1或者或者XT2.設(shè)置順序如下:設(shè)置順序如下:1.復(fù)位OscOff;2.清除OFIFG;3.延時(shí)等待至少50us;4.再次檢查OFIFG,如果仍然置位,則重復(fù)3,4步驟,直到OFIFG=0為止。63舉例:舉例:;Select LFXT1 (H

42、F mode) for MCLK BIC #OscOff,SR BIS.B #XTS,BCSSTL1L1 BIC.B #OFIFG,&IFG1 MOV #0FFH,R15L2 DEC R15 JNZ L2 BIT.B #OFIFG,&IFG JNZ L1 BIS.B #SELM1+SELM0,&BCSCTL264MSP430 x14x與時(shí)鐘模塊有關(guān)的幾個(gè)引腳與時(shí)鐘模塊有關(guān)的幾個(gè)引腳引腳名稱(chēng)引腳序號(hào)第二功能P1.4/SMCLK12SMCLK信號(hào)輸出P2.0/ACLK20ACLK信號(hào)輸出P5.4/MCLK48MCLK信號(hào)輸出P5.5/SMCLK49SMCLK信號(hào)輸出P5.6/ACLK50ACLK信

43、號(hào)輸出XIN8晶體振蕩器XT1的輸入口XOUT/TCLK9晶體振蕩器XT1的輸出口或測(cè)試時(shí)鐘輸入口XT2IN53晶體振蕩器XT2的輸入口XT2OUT52晶體振蕩器XT2的輸出口P2.5/Rosc25外界一電阻以確定DCO的工作頻率653.5.5 振蕩器失效檢測(cè)振蕩器失效檢測(cè)nMSP430單片機(jī)由模擬電路監(jiān)視單片機(jī)由模擬電路監(jiān)視LFXT1CLK(工工作于高頻模式作于高頻模式)和和XT2CLK。當(dāng)其失效大約。當(dāng)其失效大約50s時(shí)被認(rèn)定為振蕩器失效。當(dāng)振蕩器失效信號(hào)被檢時(shí)被認(rèn)定為振蕩器失效。當(dāng)振蕩器失效信號(hào)被檢測(cè)到,如果測(cè)到,如果MCLK源為高速模式下的源為高速模式下的LFXT1或或XT2,則,則M

44、CLK源自動(dòng)切換到源自動(dòng)切換到DCO。由于。由于DCO被被選為選為MCLK,所以代碼會(huì)繼續(xù)執(zhí)行。,所以代碼會(huì)繼續(xù)執(zhí)行。n振蕩器失效會(huì)設(shè)置振蕩器失效標(biāo)志位振蕩器失效會(huì)設(shè)置振蕩器失效標(biāo)志位OFIFG,如,如果此時(shí)振蕩器失效中斷允許位(果此時(shí)振蕩器失效中斷允許位(OFIE)置位,則)置位,則產(chǎn)生非屏蔽中斷請(qǐng)求。產(chǎn)生非屏蔽中斷請(qǐng)求。OFIFG必須由用戶(hù)軟件清必須由用戶(hù)軟件清除。除。6667nXT2振蕩器的失效信號(hào)和振蕩器的失效信號(hào)和LFXT1振蕩器的失效信號(hào)都能引振蕩器的失效信號(hào)都能引起起OFIFG中斷標(biāo)志。對(duì)于只有中斷標(biāo)志。對(duì)于只有2個(gè)振蕩器的芯片個(gè)振蕩器的芯片(MSP430 x11x、MSP430

45、 x11x1),振蕩器失效標(biāo)志),振蕩器失效標(biāo)志OFIFG可以在可以在LFXT1的失效信號(hào)為的失效信號(hào)為“0”時(shí)用軟件復(fù)位。時(shí)用軟件復(fù)位。對(duì)于有對(duì)于有3個(gè)振蕩器的芯片(個(gè)振蕩器的芯片(MSP430 x13x、MSP430 x14x),振蕩器失效標(biāo)志),振蕩器失效標(biāo)志OFIFG必須在必須在LFXT1和和XT2的失效信號(hào)都為的失效信號(hào)都為“0”時(shí)才能被軟件復(fù)位。時(shí)才能被軟件復(fù)位。n當(dāng)系統(tǒng)上電、,當(dāng)系統(tǒng)上電、,LFXT1在高速模式時(shí)失效或在高速模式時(shí)失效或XT2失效時(shí),失效時(shí),振蕩器失效信號(hào)振蕩器失效信號(hào)XT_OscFault有效,有效,OFIFG被置位。當(dāng)被置位。當(dāng)XT2或高速模式的或高速模式的L

46、FXT1被軟件停止,被軟件停止,XT_OscFault立立即有效,并一直保持到振蕩器重起之后約即有效,并一直保持到振蕩器重起之后約50s。68n如果如果MCLK信號(hào)來(lái)自高速模式的信號(hào)來(lái)自高速模式的LFXT1或或XT2,則當(dāng)則當(dāng)XT振蕩器失效時(shí)振蕩器失效時(shí)DCO振蕩器會(huì)自動(dòng)被選作振蕩器會(huì)自動(dòng)被選作MCLK的的源。由于源。由于DCO振蕩器被選作振蕩器被選作MCLK,XT振蕩器失效而引振蕩器失效而引起的起的NMI中斷請(qǐng)求也可以得到響應(yīng)。這個(gè)中斷請(qǐng)求也可以得到響應(yīng)。這個(gè)NMI中斷的請(qǐng)中斷的請(qǐng)求甚至在求甚至在CPU被關(guān)閉的情況下也能被處理。被關(guān)閉的情況下也能被處理。6970選DCO為MCLKSELM.1

47、=0NMI中斷處理,由硬件復(fù)位:OFIE,NMIE,ACCIEOFIFG=1ACCIFG=1NMIIFG=1復(fù)位ACCVIFG復(fù)位NMIIFG用戶(hù)軟件振蕩器失效處理用戶(hù)軟件FLASH訪(fǎng)問(wèn)出錯(cuò)處理用戶(hù)軟件外部NMI處理OFIFG=0OFIFG=1重新選擇失效的XT振蕩器RETINONONOYesYesYesn燈閃爍燈閃爍n#include nvoid main(void)nn WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timern P3DIR |= BIT2; / Set P3.2 to output directionn for (;)n n vola

48、tile unsigned int i;n P3OUT = BIT2; / Toggle P3.2 using exclusive-ORn i = 50000; / Delayn do (i-);n while (i != 0);n n3.5.6 基礎(chǔ)時(shí)鐘模塊應(yīng)用舉例基礎(chǔ)時(shí)鐘模塊應(yīng)用舉例例例1 設(shè)設(shè)MCLK=XT2,SMCLK=DCOCLK,將,將MCLK由由5.4輸出程序如下:輸出程序如下:#include void main(void) unsigned int i; WDTCTL = WDTPW + WDTHOLD; /停止看門(mén)狗停止看門(mén)狗 P5DIR |= 0X10; /設(shè)置設(shè)置P5.

49、4為輸出為輸出 P5SEL |= 0X10; /設(shè)置設(shè)置P5.4為為MCLK輸出輸出 BCSCTL1 &= XT2OFF; /設(shè)置設(shè)置XT2為有效為有效 do IFG1 &= OFIFG; /清除振蕩器失效標(biāo)志清除振蕩器失效標(biāo)志 for(i = 0 xFF;i0;i-); /穩(wěn)定時(shí)間穩(wěn)定時(shí)間 while(IFG1 & OFIFG) != 0); /如果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán)。如果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán)。 BCSCTL2 |= SELM1; /設(shè)置設(shè)置MCLK = XT2 for(;);72例例2 設(shè)置設(shè)置ACLK=MCLK=LFXT1=LF,將,將MCLK通過(guò)通過(guò)P5.4輸出。輸出

50、。#include void main(void) unsigned int i; WDTCTL = WDTPW + WDTHOLD; /停止看門(mén)狗停止看門(mén)狗 / P5DIR |= 0X10; /設(shè)置設(shè)置P5.4為輸出為輸出 P5SEL |= 0X10; /設(shè)置設(shè)置P5.4為為MCLK輸出輸出 BCSCTL1 &= XTS; /設(shè)置設(shè)置LFXT1為低速模式為低速模式 do IFG1 &= OFIFG; /清除振蕩器失效標(biāo)志清除振蕩器失效標(biāo)志 for(i = 0 xFF;i0;i-); /穩(wěn)定時(shí)間穩(wěn)定時(shí)間 while(IFG1 & OFIFG) != 0); /如果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán)如

51、果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán) BCSCTL2 |= SELM1+SELM0; /設(shè)置設(shè)置MCLK=LFXT1 for(;);733.5.7 低功耗結(jié)構(gòu)低功耗結(jié)構(gòu)74nMSP430系列單片機(jī)是通過(guò)系列單片機(jī)是通過(guò)CPU中狀態(tài)寄存器中狀態(tài)寄存器SR中的中的SCG1、SCG2、OscOff和和CPUOff四個(gè)四個(gè)位來(lái)實(shí)現(xiàn)工作模式控制的。各控制位作用如下:位來(lái)實(shí)現(xiàn)工作模式控制的。各控制位作用如下:75159876543210保留SCG1SCG0OscOffCPUOffnSCG1:當(dāng):當(dāng)SCG1復(fù)位時(shí),使能復(fù)位時(shí),使能SMCLK;SCG1置位則禁置位則禁止止SMCLK。nSCG0:當(dāng):當(dāng)SCG0復(fù)位時(shí)

52、,直流發(fā)生器被激活,只有在復(fù)位時(shí),直流發(fā)生器被激活,只有在SCG0置位且置位且DCOCLK信號(hào)沒(méi)有用于信號(hào)沒(méi)有用于MCLK或或SMCLK,直,直流發(fā)生器才能被禁止。流發(fā)生器才能被禁止。nOscOff:當(dāng):當(dāng)OscOff復(fù)位時(shí),復(fù)位時(shí),LFXT晶體振蕩器激活,只晶體振蕩器激活,只有當(dāng)有當(dāng)OscOff被置位且不用于被置位且不用于MCLK或或SMCLK時(shí),時(shí),LFXT晶晶體振蕩器才能被禁止,當(dāng)使用振蕩器關(guān)閉選項(xiàng)體振蕩器才能被禁止,當(dāng)使用振蕩器關(guān)閉選項(xiàng)OscOff時(shí),時(shí),需要考慮晶體振蕩器的啟動(dòng)設(shè)置時(shí)間。需要考慮晶體振蕩器的啟動(dòng)設(shè)置時(shí)間。nCPUOff:當(dāng):當(dāng)CPUOff復(fù)位,用于復(fù)位,用于CPU的時(shí)

53、鐘信號(hào)的時(shí)鐘信號(hào)MCLK被被激活,當(dāng)激活,當(dāng)CPU置位時(shí),置位時(shí),MCLK停止。停止。76n只要任意中斷被響應(yīng),上述控制位就被壓入堆棧只要任意中斷被響應(yīng),上述控制位就被壓入堆棧保存,中斷處理之后,又可以恢復(fù)以前的工作方保存,中斷處理之后,又可以恢復(fù)以前的工作方式。在中斷處理子程序執(zhí)行期間,通過(guò)間接訪(fǎng)問(wèn)式。在中斷處理子程序執(zhí)行期間,通過(guò)間接訪(fǎng)問(wèn)堆棧數(shù)據(jù),可以操作這些位,這樣在中斷返回后,堆棧數(shù)據(jù),可以操作這些位,這樣在中斷返回后,MSP430單片機(jī)會(huì)以另外一種功耗方式繼續(xù)運(yùn)行。單片機(jī)會(huì)以另外一種功耗方式繼續(xù)運(yùn)行。7778n下表是各種低功耗工作模式的控制位一覽表。下表是各種低功耗工作模式的控制位一

54、覽表。工作模式工作模式SCG1SCG1SCG0SCG0OSCOffOSCOffCPUOffCPUOffLPM00001LPM10101LPM21001LPM31101LPM41111nMSP430系列單片機(jī)各個(gè)模塊運(yùn)行是完全系列單片機(jī)各個(gè)模塊運(yùn)行是完全獨(dú)立的,定時(shí)器、輸入獨(dú)立的,定時(shí)器、輸入輸出端口、輸出端口、A/D轉(zhuǎn)轉(zhuǎn)換、看門(mén)狗、液晶顯示器等都可以在主換、看門(mén)狗、液晶顯示器等都可以在主CPU休眠的狀態(tài)下獨(dú)立運(yùn)行。休眠的狀態(tài)下獨(dú)立運(yùn)行。n當(dāng)需要主當(dāng)需要主CPU工作時(shí),任何一個(gè)模塊都可工作時(shí),任何一個(gè)模塊都可以通過(guò)中斷喚醒以通過(guò)中斷喚醒CPU,從而使系統(tǒng)已最低,從而使系統(tǒng)已最低功耗運(yùn)行。功耗運(yùn)行

55、。n為了充分利用為了充分利用CPU低功耗性能,可以讓低功耗性能,可以讓CPU工作于突發(fā)狀態(tài)。工作于突發(fā)狀態(tài)。n在通常情況下,根據(jù)需要使用軟件將在通常情況下,根據(jù)需要使用軟件將CPU設(shè)定到某一低功耗工作模式下,在需要時(shí)設(shè)定到某一低功耗工作模式下,在需要時(shí)使用中斷將使用中斷將CPU從休眠狀態(tài)中喚醒,完成從休眠狀態(tài)中喚醒,完成工作之后又可以進(jìn)入相應(yīng)的休眠狀態(tài)。工作之后又可以進(jìn)入相應(yīng)的休眠狀態(tài)。 n#include nvoid main(void)nn BCSCTL1 |= DIVA_2; / ACLK/4n WDTCTL = WDT_ADLY_1000; / WDT 1s/4 interval ti

56、mern IE1 |= WDTIE; / Enable WDT interruptn P3DIR |= BIT1; / Set P3.1 to output directionn P3OUT &= BIT1; / Set P3.1 to 0n while(1)n n int i;n _BIS_SR(LPM3_bits + GIE); / Enter LPM3n P3OUT |=BIT1; / Set P3.1 LED onn for (i = 5000; i0; i-); / Delayn P3OUT &= BIT1; / Clear P3.1 LED offn nn#pragma vecto

57、r=WDT_VECTORn_interrupt void watchdog_timer (void)nn _BIC_SR_IRQ(LPM3_bits) / Clear LPM3 bits from 0(SR)nn當(dāng)電流消耗是系統(tǒng)應(yīng)用的重要指標(biāo)時(shí),應(yīng)考慮以當(dāng)電流消耗是系統(tǒng)應(yīng)用的重要指標(biāo)時(shí),應(yīng)考慮以下的一些基本的設(shè)計(jì)原則:下的一些基本的設(shè)計(jì)原則:n最大化最大化LPM3的時(shí)間,用的時(shí)間,用32KHz晶振作為晶振作為ACLK時(shí)鐘,時(shí)鐘,DCO用于用于CPU激活后的突發(fā)短暫運(yùn)行。激活后的突發(fā)短暫運(yùn)行。n用接口模塊代替軟件驅(qū)動(dòng)功能。用接口模塊代替軟件驅(qū)動(dòng)功能。n用中斷控制程序運(yùn)行。用中斷控制程序運(yùn)行。n用

58、可計(jì)算的分支代替標(biāo)志位測(cè)試產(chǎn)生的分支。用可計(jì)算的分支代替標(biāo)志位測(cè)試產(chǎn)生的分支。n用快速查表代替軟件的軟件計(jì)算。用快速查表代替軟件的軟件計(jì)算。n在冗長(zhǎng)的軟件計(jì)算中使用單周期的在冗長(zhǎng)的軟件計(jì)算中使用單周期的CPU寄存器。寄存器。n避免頻繁的子程序和函數(shù)調(diào)用。避免頻繁的子程序和函數(shù)調(diào)用。n盡可能直接用電池供電盡可能直接用電池供電 n不論對(duì)于內(nèi)核還是對(duì)于外圍模塊,選擇盡可能低不論對(duì)于內(nèi)核還是對(duì)于外圍模塊,選擇盡可能低的運(yùn)行頻率,如果不影響功能應(yīng)設(shè)計(jì)自動(dòng)關(guān)機(jī)。的運(yùn)行頻率,如果不影響功能應(yīng)設(shè)計(jì)自動(dòng)關(guān)機(jī)。3.6系統(tǒng)復(fù)位和初始化系統(tǒng)復(fù)位和初始化85POR來(lái)自于硬件復(fù)位,只有以下兩種情況才能產(chǎn)生來(lái)自于硬件復(fù)位,

59、只有以下兩種情況才能產(chǎn)生POR信信號(hào)號(hào)(1)芯片上電;)芯片上電;(2)RST/NMI設(shè)置成復(fù)位模式,在設(shè)置成復(fù)位模式,在RST/NMI引腳上出現(xiàn)引腳上出現(xiàn)低電平信號(hào)。低電平信號(hào)。POR信號(hào)的產(chǎn)生總會(huì)產(chǎn)生信號(hào)的產(chǎn)生總會(huì)產(chǎn)生PUC信號(hào),但信號(hào),但PUC信號(hào)的發(fā)生不信號(hào)的發(fā)生不一定會(huì)產(chǎn)生一定會(huì)產(chǎn)生POR信號(hào)。信號(hào)。PUC信號(hào)是上電清除信號(hào),產(chǎn)生信號(hào)是上電清除信號(hào),產(chǎn)生它的事件為:它的事件為:(1) 發(fā)生發(fā)生POR信號(hào);信號(hào);(2) 處于看門(mén)狗模式下,看門(mén)狗定時(shí)時(shí)間到;處于看門(mén)狗模式下,看門(mén)狗定時(shí)時(shí)間到;(3) 看門(mén)狗定時(shí)器寫(xiě)入錯(cuò)誤的安全鍵值;看門(mén)狗定時(shí)器寫(xiě)入錯(cuò)誤的安全鍵值;(4) FLASH存儲(chǔ)器

60、寫(xiě)入錯(cuò)誤的安全鍵值。存儲(chǔ)器寫(xiě)入錯(cuò)誤的安全鍵值。863.6.1系統(tǒng)上電復(fù)位系統(tǒng)上電復(fù)位n當(dāng)當(dāng)Vcc上電比較慢的時(shí)候,上電比較慢的時(shí)候,POR檢測(cè)器保持檢測(cè)器保持POR信號(hào)信號(hào)為高電平直到為高電平直到Vcc已經(jīng)上升到大于已經(jīng)上升到大于啟動(dòng)啟動(dòng)門(mén)限門(mén)限 ,如圖所如圖所示。當(dāng)示。當(dāng)Vcc快速上升時(shí),快速上升時(shí),POR信號(hào)產(chǎn)生一個(gè)延遲信號(hào)產(chǎn)生一個(gè)延遲 再產(chǎn)再產(chǎn)生生POR信號(hào)以便讓信號(hào)以便讓MSP430正確初始化。正確初始化。873.6.2 系統(tǒng)復(fù)位后器件的初始狀態(tài)系統(tǒng)復(fù)位后器件的初始狀態(tài)(1) 引腳被配置成復(fù)位模式;引腳被配置成復(fù)位模式;(2) I/O引腳被切引腳被切換成輸入模式換成輸入模式;(3) 其

溫馨提示

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

評(píng)論

0/150

提交評(píng)論