1.1?MSP430單片機(jī)的架構(gòu)
? ? ? ?單片機(jī)是一個(gè)綜合的模擬和數(shù)字系統(tǒng),根據(jù)其豐富的片上資源,再添加一些外圍電路,通過軟件編程后就可以完成檢測(cè)、控制等任務(wù),形成一個(gè)實(shí)用的電子裝置或設(shè)備。MSP430是美國德州儀器公司(TI,Texas Instruments)推出的系列單片機(jī),因其超低功耗和豐富的片上資源而受到業(yè)界的廣泛推崇和應(yīng)用。MSP430單片機(jī)是一個(gè)混合信號(hào)處理器(MSP的英文意思是Mixed Signal Processor),它的內(nèi)部有一個(gè)16位的RISC(精簡(jiǎn)指令集,Reduced Instruction Set Computer)CPU、許多外圍模塊、和一個(gè)靈活的時(shí)鐘系統(tǒng),通過一個(gè)共用的馮·諾依曼存儲(chǔ)地址總線(MAB)和一個(gè)存儲(chǔ)數(shù)據(jù)總線(MDB)相互連接。
1.1.1 MSP430單片機(jī)的特點(diǎn)和框圖
MSP430單片機(jī)的特點(diǎn) (以MSP430G2x53系列為例)
·低供電電壓范圍:1.8V至3.6V
·超低功耗
活躍模式(Active Mode):在1MHz和2.2V供電下,230uA
備用模式(Standby Mode):0.5uA
關(guān)閉模式(Off Mode):0.1uA
·五個(gè)節(jié)能模式
·從備用狀態(tài)超快速喚醒,喚醒時(shí)間少于1uS
·16位精簡(jiǎn)指令結(jié)構(gòu),指令周期時(shí)間62.5nS
·基礎(chǔ)時(shí)鐘模塊設(shè)置
? ? -內(nèi)部頻率可達(dá)16MHz,并有4個(gè)校準(zhǔn)的頻率
? ? -內(nèi)部非常低耗低頻(LF)振蕩器
? ? -32 kHz 晶振
? ? -外部數(shù)字時(shí)鐘源
·兩個(gè)16位定時(shí)器,每個(gè)定時(shí)器有3個(gè)捕獲/比較寄存器
·可達(dá)24個(gè)電容觸摸使能的I/O管腳
·通用串行通信接口(USCI)
? ? -增強(qiáng)的UART,支持自動(dòng)波特率檢測(cè)(LIN)
? ? -IrDA編碼器和解碼器
? ? -同步SPI
? ? -I2C
·片上比較器,用于模擬信號(hào)比較功能或者斜坡(Slope)模數(shù)轉(zhuǎn)換
·10位200-ksps(每秒20萬采樣率)的模數(shù)轉(zhuǎn)換器,有內(nèi)部參考電壓,采樣和保持以及自動(dòng)掃描(Autoscan)
·欠壓檢測(cè)器(Brownout Detector)
·串行板上(Onboard)編程,無需外部編程電壓,通過安全熔絲可編程的代碼保護(hù)
·有Spy-Bi-Wire接口的片上仿真邏輯
·封裝選擇
-TSSOP:20腳,28腳
-PDIP:20腳
-QFN:32腳
? ? ? ?MSP430G2x53系列的方框圖如圖1.1所示,對(duì)于不同的封裝其內(nèi)部的模塊有所變化。
圖1.1 ?MSP430G2x53系列的方框圖
? ? ? ?圖1.1中,左上角為時(shí)鐘系統(tǒng),可以產(chǎn)生ACLK、SMCLK、MCLK三個(gè)時(shí)鐘,其中ACLK、SMCLK可用于外圍模塊,MCLK用于CPU和系統(tǒng)。然后自左向右為Flash和RAM存儲(chǔ)區(qū)、十位ADC、端口P1、P2和P3,其中P1和P2具有中斷能力。另外,P1、P2和P3這三個(gè)端口都有內(nèi)置的上/下拉電阻。最左側(cè)中間為16位的CPU,最高頻率為16MHz,CPU內(nèi)部包含16個(gè)寄存器。左下角為仿真及JTAG接口等。圖1.1的下方自左向右又依次為欠壓保護(hù)、比較器A+、看門狗WDT+、定時(shí)器0_A3、定時(shí)器1_A3和USCI A0 及USCI B0。CPU和各個(gè)外圍模塊間通過存儲(chǔ)器地址總線(MAB)和存儲(chǔ)器數(shù)據(jù)總線(MDB)進(jìn)行連接。
1.1.2 ?CPU簡(jiǎn)介
? ? ? ?由圖1.2可見,CPU的主要部件是一個(gè)16位的算術(shù)邏輯單元(16-bit ALU,ALU—Arithmetic Logic Unit),這個(gè)ALU就完成了所有的數(shù)學(xué)運(yùn)算和邏輯運(yùn)算,類似于我們的大腦,能進(jìn)行運(yùn)算和對(duì)事物的判斷等。注意圖中ALU的運(yùn)算結(jié)果會(huì)產(chǎn)生一些零(Z)、進(jìn)借位(C)、溢出(V)、負(fù)(N)的標(biāo)志位,這些信息是程序中需要判斷并以此決定程序進(jìn)程的一些條件,特別是用匯編語言時(shí),經(jīng)常要跟這些標(biāo)志位打交道。
? ? ? ?CPU中除了ALU,自上而下是16個(gè)寄存器R0~R15。這些寄存器中,R4~R15是一般的寄存器(General Purpose),R0~R3是比較特殊的。其中R0稱為PC(Program Counter),即程序計(jì)數(shù)器,這個(gè)部件很關(guān)鍵,它就是一個(gè)指揮棒,引導(dǎo)著CPU的運(yùn)行,而且CPU每執(zhí)行完一條指令,PC就自動(dòng)加2(或加4、加6),并指向下一條指令(地址),CPU再執(zhí)行完這條指令,PC又自動(dòng)增加,再指向下一條指令,使整個(gè)程序被逐條的執(zhí)行下去。
圖1.2 ?CPU的方框圖
? ? ? ?R1稱為SP(Stack Pointer),即堆棧指針。什么是堆棧呢?看一下倉庫或車站、碼頭里的貨物,都是一層一層疊放的,那就是堆棧。計(jì)算機(jī)(單片機(jī))處理數(shù)據(jù)時(shí)需要把數(shù)據(jù)臨時(shí)存放在一些存儲(chǔ)區(qū)域中,就像疊放貨物一樣,一個(gè)一個(gè)地放進(jìn)去,再一個(gè)一個(gè)地取出來,叫做壓棧和出棧。這個(gè)堆棧指針就指向棧頂,并隨著棧頂?shù)母淖兌詣?dòng)變化,它永遠(yuǎn)指向棧頂。這樣,程序中就可以通過堆棧指針來找到需要操作和處理的數(shù)據(jù)。這一般是匯編語言編程的事情了,我們用C語言時(shí)是不用管這些事情的,CCS或IAR這些開發(fā)環(huán)境已經(jīng)在后臺(tái)為我們處理好這些事情了,這也是C語言編程的好處之一(你不用管太多的事情,專注于你的程序就行了)。
? ? ? ?R2稱為SR(Status Register),即狀態(tài)寄存器。狀態(tài)寄存器隨時(shí)記錄著程序運(yùn)行過程中所產(chǎn)生的各種信息,比如前面提到的計(jì)算結(jié)果為0(Z)、進(jìn)借位(C)、負(fù)(N)、溢出(V)等,還有CPU及晶振的狀態(tài)等。匯編語言中需要通過SR來獲取這些信息,并進(jìn)行相應(yīng)的判斷和處理。
? ? ? ?R2和R3還聯(lián)合在一起產(chǎn)生一些常用的常數(shù)。稱為常數(shù)發(fā)生器CG1,CG2,(CG即Constant Generator),這些常數(shù)配合其它指令可以產(chǎn)生一些高效的模擬指令。
? ? ? ?R4~R15是通用寄存器,如果你用匯編的話,這十二個(gè)寄存器就是你天天要打交道的對(duì)象了,數(shù)據(jù)的傳遞和獲取經(jīng)常要在這些寄存器中進(jìn)行。
1.1.3 ?存儲(chǔ)器地址空間
? ? ? ?MSP430采用馮-諾依曼的存儲(chǔ)器結(jié)構(gòu)(另一種叫哈佛結(jié)構(gòu)),其寄存器、代碼和數(shù)據(jù)存儲(chǔ)的地址都統(tǒng)一安排在同一個(gè)大的存儲(chǔ)空間,如圖1.3中的0h~1FFFFh,總存儲(chǔ)空間為128KB。其中,代碼的存取總是在偶數(shù)地址,數(shù)據(jù)的存取可為字節(jié)或字。前面提到的R0~R15又叫特殊功能寄存器(SFR,Special Function Registers),分布在0h~0Fh地址,它們的家就在那兒。再往上是8位的外圍模塊區(qū),在010h~0FFh地址;16位的外圍模塊區(qū),在0100h~01FFh地址。然后是RAM區(qū),從0200h地址開始,其結(jié)束的地址取決于RAM區(qū)的大小,不同的器件其結(jié)束地址不同。RAM可用于存儲(chǔ)代碼或數(shù)據(jù)。Flash/ROM區(qū)的起始地址取決于Flash/ROM區(qū)的大小,不同的器件其起始地址不同,對(duì)于Flash/ROM區(qū)小于60KB的器件,其Flash/ROM區(qū)的結(jié)束地址為0FFFFh。Flash可用于存儲(chǔ)代碼和數(shù)據(jù),字或字節(jié)表可存儲(chǔ)于并用于Flash/ROM中,在使用前無需復(fù)制表到RAM中。中斷向量表(Interrupt Vector Table,即各中斷的入口地址)被安排在Flash/ROM地址空間的高端16個(gè)字中,最高優(yōu)先級(jí)的中斷向量在Flash/ROM的最高字地址0FFFEh。每個(gè)字占用2個(gè)字節(jié),最高優(yōu)先級(jí)的中斷向量占用0FFFEh和0FFFFh兩個(gè)字節(jié),因此,其起始地址為0FFFEh。另一片F(xiàn)lash/ROM區(qū)分布在10000h~1FFFFh。
圖1.3? 存儲(chǔ)器圖
1.1.4 ?存儲(chǔ)器組織
? ? ? ?如圖1.4所示,字節(jié)位于奇數(shù)或偶數(shù)地址,字只能位于偶數(shù)地址。一個(gè)字節(jié)由八位二進(jìn)制數(shù)構(gòu)成,就像八個(gè)格子,每個(gè)格子里的數(shù)要么是1,要么是0,只有這兩種狀態(tài)。字是由兩個(gè)字節(jié)組成的,分別稱為低字節(jié)和高字節(jié)。一個(gè)字的低字節(jié)永遠(yuǎn)是一個(gè)偶數(shù)地址,其高字節(jié)為下一個(gè)奇數(shù)地址。例如,如果一個(gè)數(shù)據(jù)字位于xxx4h地址,則這個(gè)數(shù)據(jù)的低字節(jié)位于xxx4h,其高字節(jié)位于xxx5h。位(Bit)、字節(jié)(Byte)、字(Word)之間的關(guān)系請(qǐng)看圖1.4所示。
圖1.4? 用字節(jié)組織的存儲(chǔ)器中的位、字節(jié)和字
1.2?MSP430G2 LaunchPad簡(jiǎn)介
? ? ?為便于初學(xué)者應(yīng)用和開發(fā)MSP430單片機(jī),TI公司推出了許多單片機(jī)的開發(fā)板,MSP430G2 LaunchPad即為其中的一款針對(duì)G2系列的開發(fā)實(shí)驗(yàn)板。圖1.5為該開發(fā)板的實(shí)物圖,圖中虛線的上方為仿真器部分,通過USB接口可直接與電腦相連,調(diào)試好的程序可以通過該仿真器直接下載到開發(fā)板的單片機(jī)中運(yùn)行。虛線下方為單片機(jī)實(shí)驗(yàn)板,單片機(jī)的20個(gè)管腳都通過插排對(duì)外引出,并帶有一個(gè)復(fù)位鍵。P1.3管腳外接了一個(gè)按鍵,P1.0和P1.6通過跳線分別連接了一個(gè)紅色和綠色的LED。
圖1.5 ?MSP430G2 LaunchPad實(shí)物圖
? ? ? ? 圖1.6為該開發(fā)板的原理圖(不包括仿真器部分)。
圖1.6? MSP430G2 LaunchPad原理圖
? ? ? ?MSP430G2開發(fā)板雖小,但我們可以外接按鍵、傳感器、無線模塊、驅(qū)動(dòng)模塊、LCD等,形成一個(gè)完整的檢測(cè)或控制系統(tǒng)。圖1.7為對(duì)開發(fā)板各個(gè)部分的說明。
圖1.7 MSP430G2 LaunchPad各部分說明文章來源:http://www.zghlxwxcb.cn/news/detail-841036.html
? ? ? ?上述對(duì)MSP430單片機(jī)的介紹及對(duì)LaunchPad開發(fā)板的說明,簡(jiǎn)單了解即可。我們?cè)诤罄m(xù)的討論中會(huì)逐步展開、掌握和應(yīng)用的。文章來源地址http://www.zghlxwxcb.cn/news/detail-841036.html
到了這里,關(guān)于MSP430單片機(jī)C語言編程與實(shí)踐(入門篇)之一 ----MSP430單片機(jī)簡(jiǎn)介和LaunchPad開發(fā)板的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!