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

文檔簡(jiǎn)介

1第3章MSP430單片機(jī)硬件結(jié)構(gòu)及原理2本章內(nèi)容3.1MSP430x14x結(jié)構(gòu)概述3.2MSP430x14x的主要特性和外部引腳3.3MSP430單片機(jī)的中央處理器3.4MSP430單片機(jī)的存儲(chǔ)器結(jié)構(gòu)3.5MSP430時(shí)鐘模塊與低功耗結(jié)構(gòu)3.6系統(tǒng)復(fù)位和初始化3.7中斷系統(tǒng)33.1MSP430x14x結(jié)構(gòu)概述4硬件結(jié)構(gòu)具有以下特點(diǎn):超低功耗結(jié)構(gòu),能夠延長(zhǎng)電池生存周期。RAM保持方式下電流為0.1μA,等待方式時(shí)電流為0.8μA,活動(dòng)狀態(tài)時(shí)電流也僅為250μA/MIPS。高性能的模擬器件可以用于精確測(cè)量。集成12位200Kbps的A/D轉(zhuǎn)換器,自帶采樣保持。16位RISC中央處理器,125ns指令周期。可以用較少的代碼空間實(shí)現(xiàn)高性能的應(yīng)用。在系統(tǒng)可編程的FLASH,為開發(fā)編程提供便利。5MSP430x14x主要包括以下功能部件:

CPU存儲(chǔ)器:外圍模塊:主要包括:時(shí)鐘模塊、看門狗、定時(shí)器A、定時(shí)器B、比較器A、串口0、串口1、硬件乘法器、12位模數(shù)轉(zhuǎn)換和端口等。6MSP430X11X系列

7MSP430X12X系列

8MSP430X13X系列

9MSP430X14X系列

10MSP430F15X/F16(1)X系列

11MSP430F15X/F16(1)X系列12MSP430X41X系列

13MSP430F43X系列

14MSP430F44X系列

153.3MSP430單片機(jī)的中央處理器

1617MSP430CPU的主要特征RISC指令集,27條內(nèi)核指令和7種尋址模式寄存器資源豐富寄存器操作為單周期16位地址總線常數(shù)發(fā)生器直接的存儲(chǔ)器到存儲(chǔ)器訪問(wèn)位、字和字節(jié)操作方式18MSP430CPU的寄存器簡(jiǎn)寫功能R0程序計(jì)數(shù)器PC,指示下一條將要執(zhí)行的指令地址。R1堆棧指針SP,指向堆棧棧頂R2狀態(tài)寄存器SR/常數(shù)發(fā)生器CG1R3常數(shù)發(fā)生器CG2R4通用寄存器…………R15通用寄存器19(1)程序計(jì)數(shù)器PC/R0程序計(jì)數(shù)器是MSP430CPU中最核心的寄存器,指示出下一條即將執(zhí)行的指令的地址。程序計(jì)數(shù)器PC的內(nèi)容總是偶數(shù),指向偶字節(jié)地址.程序計(jì)數(shù)器PC可以像其他寄存器一樣用所有指令和所有尋址方式訪問(wèn),但對(duì)程序存儲(chǔ)器的訪問(wèn)必須以字為單位,否則會(huì)清除高位字節(jié)。程序計(jì)數(shù)器PC的變化的軌跡決定程序的流程.程序計(jì)數(shù)器PC的寬度決定了存儲(chǔ)器可以直接尋址的范圍。MSP430的程序計(jì)數(shù)器是16位的計(jì)數(shù)器,,最多直接尋址的存儲(chǔ)空間高達(dá)64KB。20舉例:MOV#LABLE,PC;跳轉(zhuǎn)到地址LABLE開始執(zhí)行MOVLABLE,PC;程序開始執(zhí)行的地址為L(zhǎng)ABLE所在內(nèi)存中的數(shù)MOV@R14,PC;程序開始執(zhí)行的地址為寄存器R14中的數(shù)21(2)堆棧指針SP系統(tǒng)堆棧在系統(tǒng)調(diào)用子程序或進(jìn)入中斷服務(wù)程序時(shí),能夠保護(hù)程序計(jì)數(shù)器PC.然后將子程序的入口地址或者中斷矢量地址送程序計(jì)數(shù)器,執(zhí)行子程序或中斷服務(wù)程序。子程序或者中斷服務(wù)程序執(zhí)行完畢,遇到返回指令時(shí),將堆棧的內(nèi)容送到程序計(jì)數(shù)器中,程序流程又返回到原來(lái)的地方,繼續(xù)執(zhí)行.此外,堆??梢栽诤瘮?shù)調(diào)用期間保存寄存器變量、局域變量和參數(shù)等。22堆棧指針SP總是指向堆棧的頂部。系統(tǒng)在將數(shù)據(jù)壓入堆棧時(shí),總是先將堆棧指針SP的值減2,然后再將數(shù)據(jù)送到SP所指的RAM單元。將數(shù)據(jù)從堆棧中彈出正好與壓入過(guò)程相反;先將數(shù)據(jù)從SP所指示的內(nèi)存單元取出,再將SP值加2。23舉例:MOV2(SP),R6;將內(nèi)存單元I2中的數(shù)放到R6中MOVR7,0(SP);將R7中的數(shù)放到棧頂所在單元(I3)中PUSH#0123h;將SP的值減2,再將#0123h放到SP所指向的單元中。POPR8;將SP所指向單元中的數(shù)(#0123h)放到R8中,再將SP的值加224(3)狀態(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)可屏蔽中斷。4CPUOff置位CPUOff位可使CPU進(jìn)入關(guān)閉模式,可用所有允許的中斷將CPU喚醒。C-Carrybit;Z-Zerobit;N-Negativebit;GIE-GeneralInterruptEnable255OscOff置位OscOff位可使晶體振蕩器處于停止?fàn)顟B(tài),同時(shí)CPUOff也需置位。可用外部中斷或者NMI喚醒。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ù)=正數(shù)正數(shù)-負(fù)數(shù)=負(fù)數(shù)負(fù)數(shù)-正數(shù)=正數(shù)9~15保留未用。OscOff-OscillatorOff;SCG0-SystemClockGenerator;V-Overflowbit26(4)常數(shù)發(fā)生器CG1和CG2寄存器As常數(shù)說(shuō)明R200---------寄存器模式R201(0)絕對(duì)尋址模式R21000004H+4位處理R21100008H+8位處理R30000000H0字處理R30100001H+1R31000002H+2位處理R3110FFFFH-1位處理27舉例:?jiǎn)尾僮鲾?shù)指令CLRdst;將dst單元清零這不是內(nèi)核指令,而是一條模擬指令,匯編器將As=00,R3=0,用MOVR3,dst來(lái)模擬。28(5)通用工作寄存器R4~R15舉例:MOV#1234H,R15;執(zhí)行后R15內(nèi)容為1234HMOV.B#23H,R15;執(zhí)行后R15內(nèi)容為0023HADD.B#34H,R15;執(zhí)行后R15內(nèi)容為0057H293.4MSP430單片機(jī)的存儲(chǔ)器結(jié)構(gòu)

MSP430系列的存儲(chǔ)空間采用“馮-諾依曼”結(jié)構(gòu),物理上完全分離的存儲(chǔ)區(qū)域如ROM/FLASH、RAM、外圍模塊、特殊功能寄存器SFR等,被安排在同一地址空間,這樣就可以使用一組地址、數(shù)據(jù)總線、相同的指令對(duì)它們進(jìn)行字節(jié)或字形式訪問(wèn)。MSP430系列單片機(jī)存儲(chǔ)器的這種組織方式和CPU采用精簡(jiǎn)指令相互協(xié)調(diào),對(duì)外圍模塊的訪問(wèn)不需要單獨(dú)的指令,為軟件的開發(fā)和調(diào)試提供便利。303.4.1MSP430存儲(chǔ)空間結(jié)構(gòu)MSP430不同系列器件的存儲(chǔ)空間分布有很多相同之處:中斷向量被安排在相同的空間:0FFE0~0FFFFH;8位、16位外圍模塊占用相同范圍的存儲(chǔ)器地址;所有器件的特殊功能寄存器占用相同范圍的存儲(chǔ)器地址:00H~0FH;數(shù)據(jù)存儲(chǔ)器開始于相同的地址,即從0200H處開始;代碼存儲(chǔ)器的最高地址都是0FFFFH。31存儲(chǔ)空間的分布也存在一些差異:不同型號(hào)器件的代碼存儲(chǔ)器容量不一樣;代碼存儲(chǔ)器的起始地址不一樣,每一種器件的代碼存儲(chǔ)器的起始地址為起始地址=10000H—該器件的代碼容量?jī)HFLASH型有信息存儲(chǔ)器,而且不同的器件地址也不一樣,但容量都是256B僅FLASH型有引導(dǎo)存儲(chǔ)器,而且不同器件的地址也不一樣,但容量都是1KB各器件數(shù)據(jù)存儲(chǔ)器的末地址也不一樣,其末地址為末地址=該器件數(shù)據(jù)RAM容量+0200H中斷向量的具體內(nèi)容因器件不同而不同;所有器件的8位、16位外圍模塊地址范圍內(nèi)的具體內(nèi)容因器件不同而不同。323.4.1數(shù)據(jù)存儲(chǔ)器RAMMSP430的數(shù)據(jù)存儲(chǔ)器位于存儲(chǔ)器地址空間的0200H以上,這些存儲(chǔ)器一般用做數(shù)據(jù)的保存與堆棧,同時(shí)也是數(shù)據(jù)運(yùn)算的場(chǎng)所,特殊場(chǎng)合還可以用作程序存儲(chǔ)器??梢宰植僮饕部梢宰止?jié)操作,通過(guò)指令后綴加以區(qū)別。字節(jié)操作可以是奇地址或者是偶地址,在字操作時(shí),每?jī)蓚€(gè)字節(jié)為一個(gè)操作單位,必須對(duì)準(zhǔn)偶地址。33舉例MOV.B#20H,&221H;執(zhí)行后221H單元的內(nèi)容為20HMOV.B#324H,&221H;執(zhí)行后221H單元的內(nèi)容為24HMOV.W#3234H,&222H;執(zhí)行后222H單元的內(nèi)容為34H,223H單元的內(nèi)容為32HMOV.W#324H,&221H;執(zhí)行后221H單元的內(nèi)容為03H,220H單元的內(nèi)容為24HRAM空間還可以進(jìn)行運(yùn)算,如:MOV.B#33H,&220H;執(zhí)行后地址220H的內(nèi)容為33HADD.B#22H,&220H;執(zhí)行后地址220H的內(nèi)容為55H343.4.2程序存儲(chǔ)器ROM程序ROM區(qū)為0FFFFH以下一定數(shù)量存儲(chǔ)空間,可存放指令代碼和數(shù)據(jù)表格。程序代碼必須偶地址尋址。程序代碼可分為三種情況:中斷向量區(qū)、用戶程序代碼及系統(tǒng)引導(dǎo)程序(個(gè)別器件有,如FLASH型)。351中斷向量區(qū)中斷源中斷標(biāo)志系統(tǒng)中斷地址優(yōu)先級(jí)上電、外部復(fù)位、看門狗、FLASH存儲(chǔ)器WDTIFG復(fù)位0FFFEH15NMI、振蕩器故障、FLASH訪問(wèn)出錯(cuò)NMIFG、OFIGF、ACCVIFG非屏蔽/可屏蔽0FFFCH14定時(shí)器BBCCIFG0可屏蔽0FFFAH13定時(shí)器BBCCIFG1~6,TBIFG可屏蔽0FFF8H12比較器ACMPAIFG可屏蔽0FFF6H11看門狗定時(shí)器WDTIFG可屏蔽0FFF4H10串口0接收URXIFG0可屏蔽0FFF2H9串口0發(fā)送UTXIFG0可屏蔽0FFF0H8ADCADCIFG可屏蔽0FFEEH7定時(shí)器ACCIFG0可屏蔽0FFECH6定時(shí)器ACCIFG1~2,TAIFG可屏蔽0FFEAH5P1P1IFG.0~7可屏蔽0FFE8H4串口1接收URXIFG1可屏蔽0FFE6H3串口1發(fā)送UTXIFG1可屏蔽0FFE4H2P2P2IFG.0~7可屏蔽0FFE2H1362用戶程序區(qū)用戶程序區(qū)一般用來(lái)存放程序與常數(shù)或表格。MSP430的存儲(chǔ)結(jié)構(gòu)尤其允許存放大的數(shù)表,并且可以用所有的字和字節(jié)指令訪問(wèn)這些表。這一點(diǎn)為提高編程的靈活性和節(jié)省程序存儲(chǔ)空間帶來(lái)各種好處。373.4.3外圍模塊寄存器MSP430系列單片機(jī)外圍模塊的尋址被安排在0010H~01FFH這一區(qū)域,都可以用軟件訪問(wèn)和控制。MSP430可以象訪問(wèn)普通RAM單元一樣對(duì)這些寄存器進(jìn)行操作。這些寄存器也分為字節(jié)結(jié)構(gòu)和字結(jié)構(gòu)。地址空間0100H~01FFH安排字結(jié)構(gòu),地址空間0010H~00FFH安排字節(jié)模塊,地址空間0000H~000FH保存特殊功能寄存器。38MSP430F149字模塊的空間分配地址說(shuō)明地址說(shuō)明0H~1FFH保留170H~170H定時(shí)器A1E0H~1EFH保留160H~16FH定時(shí)器A1D0H~1DFH保留150H~15FHADC12轉(zhuǎn)換0H~1CFH保留140H~14FHADC12轉(zhuǎn)換1B0H~1BFH保留130H~13FH硬件乘法器0H~1AFHADC12控制和中斷120H~12FH看門狗、FLASH控制190H~19FH定時(shí)器B110H~11FH保留180H~18FH定時(shí)器B100H~10FH保留39MSP430F149字節(jié)模塊的空間分配地址說(shuō)明地址說(shuō)明0H~1FFH保留70H~70H串口1/串口00E0H~1EFH保留60H~6FH保留0D0H~1DFH保留50H~5FH比較器A,系統(tǒng)時(shí)鐘0H~1CFH保留40H~4FH保留0B0H~1BFH保留30H~3FH端口6/端口50H~1AFH保留20H~2FH端口4/端口3090H~19FH保留10H~1FH端口1/端口2080H~18FHADC12存儲(chǔ)控制00H~0FHSFR40MSP430F149特殊功能寄存器SFR的空間分配地址說(shuō)明地址說(shuō)明0FH無(wú)定義/未實(shí)現(xiàn)07H無(wú)定義/未實(shí)現(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.5MSP430時(shí)鐘模塊與低功耗結(jié)構(gòu)時(shí)鐘模塊對(duì)于單片機(jī)來(lái)說(shuō)是至關(guān)重要的,它不僅給CPU提供正確的時(shí)序,還給單片機(jī)的外圍模塊提供工作時(shí)序。因此,一個(gè)高效穩(wěn)定的時(shí)鐘模塊是單片機(jī)系統(tǒng)能夠正常工作的基礎(chǔ)。在數(shù)字系統(tǒng)中,系統(tǒng)功耗與頻率成正比,實(shí)際應(yīng)用中常希望系統(tǒng)能夠快速響應(yīng)事件的同時(shí)又要盡量的降低系統(tǒng)能耗,這對(duì)于單片機(jī)來(lái)說(shuō)是一個(gè)互相矛盾的要求。MSP430的系統(tǒng)時(shí)鐘很好的滿足了這個(gè)要求,它通過(guò)提供幾種不同的時(shí)鐘信號(hào),并為時(shí)鐘設(shè)計(jì)多種不同的工作模式,使用戶可以根據(jù)需要,靈活的為CPU和外設(shè)選擇合適的時(shí)鐘頻率。423.5.1MSP430系列時(shí)鐘模塊43它有3個(gè)時(shí)鐘源輸入端LFXT1CLK低頻時(shí)鐘源,接低頻時(shí)鐘晶體、也可接高頻時(shí)鐘晶體、陶瓷諧振器或直接外接時(shí)鐘信號(hào)源。XT2CLK高頻時(shí)鐘源,接標(biāo)準(zhǔn)高頻晶體、也可接陶瓷諧振器或直接外接450kHz~8MHz時(shí)鐘信號(hào)源。DCOCLK片內(nèi)可以數(shù)字控制的RC振蕩器。44基礎(chǔ)時(shí)鐘模塊可提供3種時(shí)鐘信號(hào):ACLK輔助時(shí)鐘,是LFXT1CLK信號(hào)經(jīng)1,2,4,8分頻后得到的。分頻系數(shù)可由軟件控制。ACLK可由軟件選作各個(gè)外圍模塊的時(shí)鐘信號(hào),一般用于低速外設(shè)。MCLK系統(tǒng)主時(shí)鐘,由軟件選擇來(lái)自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后經(jīng)1,2,4,8分頻得到,分頻系數(shù)可由軟件控制。主要用于CPU和系統(tǒng)。SMCLK子系統(tǒng)時(shí)鐘,由軟件選擇來(lái)自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后經(jīng)1,2,4,8分頻得到,分頻系數(shù)可由軟件控制。主要用于高速外圍模塊。45當(dāng)發(fā)生有效的PUC后,MCLK和SMCLK使用工作在800KHz附近DCOCLK作為時(shí)鐘源,ACLK使用工作在低速模式的LFXT1CLK作為時(shí)鐘源。狀態(tài)寄存器(SR)控制位SCG0、SCG1、OSCOFF和CPUOFF用來(lái)配置基礎(chǔ)時(shí)鐘模塊的使能。DCOCTL、BCSCTL1和BCSCTL2用來(lái)配置基礎(chǔ)時(shí)鐘模塊。在程序運(yùn)行的任何時(shí)間,都可以通過(guò)這些寄存器來(lái)配置基礎(chǔ)時(shí)鐘模塊。(PUC-PowerUpClear重啟)(POR-PowerOnReset上電復(fù)位,更徹底復(fù)位)463.5.2低速晶體振蕩器MSP430系列的每種產(chǎn)品中都有低速晶體振蕩器(LTXT1),通常外接32768Hz的時(shí)鐘晶體,可以選擇使用廣泛使用的手表晶振,同時(shí)將所需兩個(gè)小電容也集成在內(nèi)部。這樣可降低系統(tǒng)成本。LFXT1振蕩器在發(fā)生有效的PUC后開始工作,一次有效的PUC信號(hào)將SR寄存器的OscOff位復(fù)位,即允許LFXT1工作。如果LFXT1CLK信號(hào)沒(méi)有用作SMCLK或ACLK信號(hào),則可以用軟件將OscOff位置以禁止LFXT1工作:MOV#OscOff,SR47LFXT1的控制邏輯如下圖所示:48注意:低速時(shí)鐘通常需要幾百ms的時(shí)間來(lái)啟動(dòng)。盡量避免外界信號(hào)對(duì)晶體的干擾,布線時(shí)晶體要盡量靠近單片機(jī)。當(dāng)工作在低速模式時(shí),如果VCC小于2.5V,為保證正常工作,需要在VSS和XOUT之間加入5.1M歐姆電阻LFXT1振蕩器也可以外接頻率較高的高速晶體振蕩器或陶瓷振蕩器,以工作在高速模式;這時(shí)XTS位置位,同時(shí)兩個(gè)引腳還要外接電容,電容大小根據(jù)晶體或振蕩器的特性來(lái)選擇。493.5.3高速晶體振蕩器高速振蕩器(XT2)主要存在于F13X,F(xiàn)14X,F(xiàn)4XX等器件,一般稱之為第二振蕩器XT2,它產(chǎn)生時(shí)鐘信號(hào)XT2CLK,它的工作特性與LFXT1振蕩器工作在高頻模式時(shí)類似。下頁(yè)圖是TX2振蕩器的控制邏輯。如果XT2CLK信號(hào)沒(méi)用做MCLK、SMCLK時(shí)鐘信號(hào),則可以用XT2Off控制位關(guān)閉XT2。如果CPUOff=0,SELM=2,則XT2CLK用做MCLK時(shí)鐘;如果SCG1=0且SELS=1,XT2CLK用做SMCLK時(shí)鐘。50513.5.4DCO振蕩器MSP430系列的兩個(gè)外部振蕩器產(chǎn)生的時(shí)鐘信號(hào)都可以經(jīng)1,2,4,8分頻后用作系統(tǒng)主時(shí)鐘MCLK。上電復(fù)位或振蕩器失效時(shí),DCO振蕩器會(huì)自動(dòng)被選做MCLK的時(shí)鐘源,頻率在800K左右。DCO振蕩器實(shí)質(zhì)上是一個(gè)可數(shù)字控制的RC振蕩器。因?yàn)镽C振蕩器的頻率會(huì)隨著溫度和工作電壓的變化而變化,所以同一型號(hào)芯片產(chǎn)生的頻率有所不同。但同時(shí)DCO頻率可通過(guò)DCO、MOD、Rsel等控制位用軟件調(diào)節(jié),這又增加了振蕩器頻率的穩(wěn)定性。當(dāng)DCO信號(hào)沒(méi)有用作SMCLK和MCLK時(shí)鐘信號(hào)時(shí),可以用軟件關(guān)閉直流發(fā)生器,直流發(fā)生器消耗的電流定義了DCOCLK的基本頻率。52DCO的控制邏輯如圖所示。53MSP430x1xx的DCO控制原理圖54最終的DCO輸出頻率DCOCLK由以下功能建立:①DCO基礎(chǔ)頻率由內(nèi)部或外部電阻向DC發(fā)生器注入的電流決定,由DCOR控制位選擇片內(nèi)或片外電阻。②基礎(chǔ)頻率由控制位Rsel2,Rsel1和Rsel0分頻為8個(gè)標(biāo)稱頻率范圍,而這些頻率范圍因不同型號(hào)而異。③控制位DCO0,DCO1和DCO2可分段調(diào)節(jié)DCOCLK頻率。④由5個(gè)調(diào)整位MOD0~MOD4控制切換DCO和DCO+1選擇的兩種頻率。55由DCO控制位選擇的DCOCLK頻率大約可以在時(shí)鐘周期的10%范圍內(nèi)調(diào)整。在MSP430x1xx系列中DCO的控制由3個(gè)寄存器完成:DCOCTL、BCSCTL1、BCSCTL2。(BasicClockSystemControlRegister)56(1)DCOCTL地址為056H,PUC后的值為060HMOD.0~MOD.4定義了在32個(gè)DCO周期中插入的f(DCO+1)周期,而在余下的DCO周期中為f(DCO)周期。如果DCO常數(shù)為7,由于已經(jīng)選擇了最高頻率將不進(jìn)行調(diào)整。DCO.0~DCO.2定義了8種頻率之一,而頻率由注入直流發(fā)生器的電流定義。57(2)BCSTCL1地址為057H,PUC后的值為084H58Rsel.0~Rsel.2三位選擇某個(gè)內(nèi)部電阻以決定標(biāo)稱頻率。Rsel=0,選擇最低的標(biāo)稱頻率;……Rsel=7,選擇最高的標(biāo)稱頻率。XT5V此位必須為0。DIVA.0~DIVA.1選擇ACLK的分頻系數(shù)。DIVA=0,ACLK的分頻系數(shù)為1;DIVA=1,ACLK的分頻系數(shù)為2;DIVA=2,ACLK的分頻系數(shù)為4;DIVA=3,ACLK的分頻系數(shù)為8。XTS選擇LFXT1工作在低頻晶振模式還是高頻晶振模式,選擇須同實(shí)際晶體。XTS=0,LFXT1工作在低頻模式;XTS=1,LFXT1工作在高頻模式。XT2OFF控制XT2振蕩器的開啟與關(guān)閉。XT2OFF=0,XT2振蕩器開啟;XT2OFF=1,XT2振蕩器關(guān)閉。5960(3)BCSTCL2地址為058H,PUC后值為00HDCOR選擇內(nèi)部還是外部電阻。DCOR=0,選擇內(nèi)部電阻;DCOR=1,選擇外部電阻。DIVS.0~DIVS.1選擇SMCLK的分頻因子。DIVS=0,分頻因子為1;DIVS=1,分頻因子為2;DIVS=2,分頻因子為4;DIVS=3,分頻因子為8。61SELS選擇SMCLK的時(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í)鐘源。SELM=0,MCLK的時(shí)鐘源為DCOCLK;SELM=1,MCLK的時(shí)鐘源為DCOCLK;SELM=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)之后,DCOCLK被自動(dòng)選做MCLK時(shí)鐘信號(hào),根據(jù)需要,MCLK的時(shí)鐘源可以另外設(shè)置為L(zhǎng)FXT1或者XT2.設(shè)置順序如下:1.復(fù)位OscOff;2.清除OFIFG;3.延時(shí)等待至少50us;4.再次檢查OFIFG,如果仍然置位,則重復(fù)3,4步驟,直到OFIFG=0為止。63舉例:;SelectLFXT1(HFmode)forMCLKBIC#OscOff,SRBIS.B#XTS,BCSSTL1L1BIC.B#OFIFG,&IFG1MOV#0FFH,R15L2DECR15JNZL2BIT.B#OFIFG,&IFGJNZL1BIS.B#SELM1+SELM0,&BCSCTL264MSP430x14x與時(shí)鐘模塊有關(guān)的幾個(gè)引腳引腳名稱引腳序號(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信號(hào)輸出XIN8晶體振蕩器XT1的輸入口XOUT/TCLK9晶體振蕩器XT1的輸出口或測(cè)試時(shí)鐘輸入口XT2IN53晶體振蕩器XT2的輸入口XT2OUT52晶體振蕩器XT2的輸出口P2.5/Rosc25外界一電阻以確定DCO的工作頻率653.5.5振蕩器失效檢測(cè)MSP430單片機(jī)由模擬電路監(jiān)視LFXT1CLK(工作于高頻模式)和XT2CLK。當(dāng)其失效大約50μs時(shí)被認(rèn)定為振蕩器失效。當(dāng)振蕩器失效信號(hào)被檢測(cè)到,如果MCLK源為高速模式下的LFXT1或XT2,則MCLK源自動(dòng)切換到DCO。由于DCO被選為MCLK,所以代碼會(huì)繼續(xù)執(zhí)行。振蕩器失效會(huì)設(shè)置振蕩器失效標(biāo)志位OFIFG,如果此時(shí)振蕩器失效中斷允許位(OFIE)置位,則產(chǎn)生非屏蔽中斷請(qǐng)求。OFIFG必須由用戶軟件清除。6667XT2振蕩器的失效信號(hào)和LFXT1振蕩器的失效信號(hào)都能引起OFIFG中斷標(biāo)志。對(duì)于只有2個(gè)振蕩器的芯片(MSP430x11x、MSP430x11x1),振蕩器失效標(biāo)志OFIFG可以在LFXT1的失效信號(hào)為“0”時(shí)用軟件復(fù)位。對(duì)于有3個(gè)振蕩器的芯片(MSP430x13x、MSP430x14x),振蕩器失效標(biāo)志OFIFG必須在LFXT1和XT2的失效信號(hào)都為“0”時(shí)才能被軟件復(fù)位。當(dāng)系統(tǒng)上電、,LFXT1在高速模式時(shí)失效或XT2失效時(shí),振蕩器失效信號(hào)XT_OscFault有效,OFIFG被置位。當(dāng)XT2或高速模式的LFXT1被軟件停止,XT_OscFault立即有效,并一直保持到振蕩器重起之后約50μs。68如果MCLK信號(hào)來(lái)自高速模式的LFXT1或XT2,則當(dāng)XT振蕩器失效時(shí)DCO振蕩器會(huì)自動(dòng)被選作MCLK的源。由于DCO振蕩器被選作MCLK,XT振蕩器失效而引起的NMI中斷請(qǐng)求也可以得到響應(yīng)。這個(gè)NMI中斷的請(qǐng)求甚至在CPU被關(guān)閉的情況下也能被處理。6970選DCO為MCLKSELM.1=0NMI中斷處理,由硬件復(fù)位:OFIE,NMIE,ACCIEOFIFG=1ACCIFG=1NMIIFG=1復(fù)位ACCVIFG復(fù)位NMIIFG用戶軟件振蕩器失效處理用戶軟件FLASH訪問(wèn)出錯(cuò)處理用戶軟件外部NMI處理OFIFG=0OFIFG=1重新選擇失效的XT振蕩器RETINONONOYesYesYes燈閃爍#include<msp430x14x.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//StopwatchdogtimerP3DIR|=BIT2;//SetP3.2tooutputdirectionfor(;;){volatileunsignedinti;P3OUT^=BIT2;//ToggleP3.2usingexclusive-ORi=50000;//Delaydo(i--);while(i!=0);}}3.5.6基礎(chǔ)時(shí)鐘模塊應(yīng)用舉例例1設(shè)MCLK=XT2,SMCLK=DCOCLK,將MCLK由5.4輸出程序如下:#include<msp430x14x.h>voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;//停止看門狗P5DIR|=0X10;//設(shè)置P5.4為輸出P5SEL|=0X10;//設(shè)置P5.4為MCLK輸出BCSCTL1&=~XT2OFF;//設(shè)置XT2為有效do{IFG1&=~OFIFG;//清除振蕩器失效標(biāo)志for(i=0xFF;i>0;i--);//穩(wěn)定時(shí)間}while((IFG1&OFIFG)!=0);//如果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán)。BCSCTL2|=SELM1;//設(shè)置MCLK=XT2for(;;);}72例2設(shè)置ACLK=MCLK=LFXT1=LF,將MCLK通過(guò)P5.4輸出。#include<msp430x14x.h>voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;//停止看門狗

//P5DIR|=0X10;//設(shè)置P5.4為輸出P5SEL|=0X10;//設(shè)置P5.4為MCLK輸出BCSCTL1&=~XTS;//設(shè)置LFXT1為低速模式do{IFG1&=~OFIFG;//清除振蕩器失效標(biāo)志for(i=0xFF;i>0;i--);//穩(wěn)定時(shí)間}while((IFG1&OFIFG)!=0);//如果振蕩器失效標(biāo)志存在則繼續(xù)循環(huán)BCSCTL2|=SELM1+SELM0;//設(shè)置MCLK=LFXT1for(;;);}733.5.7低功耗結(jié)構(gòu)74MSP430系列單片機(jī)是通過(guò)CPU中狀態(tài)寄存器SR中的SCG1、SCG2、OscOff和CPUOff四個(gè)位來(lái)實(shí)現(xiàn)工作模式控制的。各控制位作用如下:7515~9876543210保留SCG1SCG0OscOffCPUOffSCG1:當(dāng)SCG1復(fù)位時(shí),使能SMCLK;SCG1置位則禁止SMCLK。SCG0:當(dāng)SCG0復(fù)位時(shí),直流發(fā)生器被激活,只有在SCG0置位且DCOCLK信號(hào)沒(méi)有用于MCLK或SMCLK,直流發(fā)生器才能被禁止。OscOff:當(dāng)OscOff復(fù)位時(shí),LFXT晶體振蕩器激活,只有當(dāng)OscOff被置位且不用于MCLK或SMCLK時(shí),LFXT晶體振蕩器才能被禁止,當(dāng)使用振蕩器關(guān)閉選項(xiàng)OscOff時(shí),需要考慮晶體振蕩器的啟動(dòng)設(shè)置時(shí)間。CPUOff:當(dāng)CPUOff復(fù)位,用于CPU的時(shí)鐘信號(hào)MCLK被激活,當(dāng)CPU置位時(shí),MCLK停止。76只要任意中斷被響應(yīng),上述控制位就被壓入堆棧保存,中斷處理之后,又可以恢復(fù)以前的工作方式。在中斷處理子程序執(zhí)行期間,通過(guò)間接訪問(wèn)堆棧數(shù)據(jù),可以操作這些位,這樣在中斷返回后,MSP430單片機(jī)會(huì)以另外一種功耗方式繼續(xù)運(yùn)行。7778下表是各種低功耗工作模式的控制位一覽表。工作模式SCG1SCG0OSCOffCPUOffLPM00001LPM10101LPM21001LPM31101LPM41111MSP430系列單片機(jī)各個(gè)模塊運(yùn)行是完全獨(dú)立的,定時(shí)器、輸入\輸出端口、A/D轉(zhuǎn)換、看門狗、液晶顯示器等都可以在主CPU休眠的狀態(tài)下獨(dú)立運(yùn)行。當(dāng)需要主CPU工作時(shí),任何一個(gè)模塊都可以通過(guò)中斷喚醒CPU,從而使系統(tǒng)已最低功耗運(yùn)行。為了充分利用CPU低功耗性能,可以讓CPU工作于突發(fā)狀態(tài)。在通常情況下,根據(jù)需要使用軟件將CPU設(shè)定到某一低功耗工作模式下,在需要時(shí)使用中斷將CPU從休眠狀態(tài)中喚醒,完成工作之后又可以進(jìn)入相應(yīng)的休眠狀態(tài)。#include<msp430x14x.h>voidmain(void){BCSCTL1|=DIVA_2;//ACLK/4WDTCTL=WDT_ADLY_1000;//WDT1s/4intervaltimerIE1|=WDTIE;//EnableWDTinterruptP3DIR|=BIT1;//SetP3.1tooutputdirectionP3OUT&=~BIT1;//SetP3.1to0while(1){inti;_BIS_SR(LPM3_bits+GIE);//EnterLPM3P3OUT|=BIT1;//SetP3.1LEDonfor(i=5000;i>0;i--);//DelayP3OUT&=~BIT1;//ClearP3.1LEDoff}}#pragmavector=WDT_VECTOR__interruptvoidwatchdog_timer(void){_BIC_SR_IRQ(LPM3_bits)//ClearLPM3bitsfrom0(SR)}當(dāng)電流消耗是系統(tǒng)應(yīng)用的重要指標(biāo)時(shí),應(yīng)考慮以下的一些基本的設(shè)計(jì)原則:最大化LPM3的時(shí)間,用32KHz晶振作為ACLK時(shí)鐘,DCO用于CPU激活后的突發(fā)短暫運(yùn)行。用接口模塊代替軟件驅(qū)動(dòng)功能。用中斷控制程序運(yùn)行。用可計(jì)算的分支代替標(biāo)志位測(cè)試產(chǎn)生的分支。用快速查表代替軟件的軟件計(jì)算。在冗長(zhǎng)的軟件計(jì)算中使用單周期的CPU寄存器。避免頻繁的子程序和函數(shù)調(diào)用。盡可能直接用電池供電不論對(duì)于內(nèi)核還是對(duì)于外圍模塊,選擇盡可能低的運(yùn)行頻率,如果不影響功能應(yīng)設(shè)計(jì)自動(dòng)關(guān)機(jī)。3.6系統(tǒng)復(fù)位和初始化85POR來(lái)自于硬件復(fù)位,只有以下兩種情況才能產(chǎn)生POR信號(hào)(1)芯片上電;(2)RST/NMI設(shè)置成復(fù)位模式,在RST/NMI引腳上出現(xiàn)低電平信號(hào)。POR信號(hào)的產(chǎn)生總會(huì)產(chǎn)生PUC信號(hào),但PUC信號(hào)的發(fā)生不一定會(huì)產(chǎn)生POR信號(hào)。PUC信號(hào)是上電清除信號(hào),產(chǎn)生它的事件為:(1)發(fā)生POR信號(hào);(2)處于看門狗模式下,看門狗定時(shí)時(shí)間到;(3)看門狗定時(shí)器寫入錯(cuò)誤的安全鍵值;(4)FLASH存儲(chǔ)器寫入錯(cuò)誤的安全鍵值。863.6.1系統(tǒng)上電復(fù)位當(dāng)Vcc上電比較慢的時(shí)候,POR檢測(cè)器保持POR信號(hào)為高電平直到Vcc已經(jīng)上升到大于啟動(dòng)門限,如圖所示。當(dāng)Vcc快速上升時(shí),POR信號(hào)產(chǎn)生一個(gè)延遲再產(chǎn)生POR信號(hào)以便讓MSP430正確初始化。873.6.2系統(tǒng)復(fù)位后器件的初始狀態(tài)(1)引腳被配置成復(fù)位模式;(2)I/O引腳被切換成輸入模式;(3)其他的模塊和寄存器被初始化成默認(rèn)狀態(tài),如數(shù)據(jù)手冊(cè)所述;(4)狀態(tài)寄存器復(fù)位;(5)看門狗定時(shí)器以看門狗模式激活;(6)PC裝入0FFFEH處的地址值,CPU從這一地址開始執(zhí)行。88軟件初始化,用戶軟件必須根據(jù)應(yīng)用的需求對(duì)MSP430進(jìn)行初始化,必須包括以下幾個(gè)部分:(1)初始化SP,通常是RAM的頂部;(2)初始化看門狗定時(shí)器;(3)配置外圍模塊。893.7中斷系統(tǒng)有三種中斷:(1)系統(tǒng)復(fù)位(2)NMI中斷(3)可屏蔽中斷9091中斷優(yōu)先級(jí)順序排列圖(參考P51表)3.7.1不可屏蔽中斷NMINMI中斷的使能位不是由通用中斷使能GIE來(lái)控制,而是由特殊的標(biāo)志位來(lái)控制(NMIIE,ACCVIE,OFIE),當(dāng)一個(gè)NMI中斷發(fā)生,所有的NMI中斷使能都自動(dòng)復(fù)位。程序從儲(chǔ)存在NMI中斷向量(0FFFCH)開始執(zhí)行,用戶軟件必須在NMI中斷中對(duì)允許的NMI中斷重新使能。NMI中斷可以由以下三種

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論