找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3867|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MSP430單片機(jī)理論知識點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:806027 發(fā)表于 2020-7-20 21:12 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
縱觀微處理器的發(fā)展,一是朝著具有復(fù)雜數(shù)據(jù)運(yùn)算、高速通信、信息處理等功能的高性能計算機(jī)系統(tǒng)方向發(fā)展;二是產(chǎn)生了一種將中央處理器,存儲器,I/O接口電路以及連接他們的總線都集成一塊芯片上的計算機(jī)。單片機(jī)在設(shè)計上主要突出了控制功能,調(diào)整了接口配置,在單一芯片上制成了結(jié)構(gòu)完整的計算機(jī)。
目前最常用的3中可編程處理器:微控制器(MCU)、微處理器(MPU)、數(shù)字信號處理器(DSP);
單片機(jī)可應(yīng)用的領(lǐng)域:工業(yè)控制(工業(yè)機(jī)器人)、智能化儀器儀表(溫度濕度的測量)、日常生活鐘的電器產(chǎn)品(MP3)、計算機(jī)網(wǎng)絡(luò)與通信(以太網(wǎng))、計算機(jī)外部設(shè)備(微型打印機(jī));
單片機(jī)的結(jié)構(gòu)特點(diǎn):時鐘頻率比通用MPU和DSP低;功耗低;字長一般為8-32位;內(nèi)存有限,通常小于1mb;具有幾個到上百個輸入/輸出引腳;
單片機(jī)應(yīng)用特點(diǎn):小巧靈活、成本低、易于產(chǎn)品化(組裝成智能式控制設(shè)備以及各種智能儀器儀表)、面向控制、抗干擾能力強(qiáng)、可以方便地實現(xiàn)多機(jī)和分布式控制,提高效率和可靠性;
MSP430是16位超低功耗、具有精簡指令集的混合信號處理器(因其針對實際應(yīng)用需求,將多個不同功能的模擬電路、數(shù)字電路模塊和微處理器集成在一個芯片上,以提供“單片”解決方案(豐富的片內(nèi)外設(shè)));
MSP430的特點(diǎn):1.最顯著:超低功耗(電源電壓為1.8-3.6V,最高工作頻率25MHz)2.強(qiáng)大的處理能力(16位,采用精簡指令集結(jié)構(gòu),一個時鐘周期可執(zhí)行一條指令)3.高性能模擬技術(shù)以及豐富的片內(nèi)外圍模塊4.系統(tǒng)工作穩(wěn)定5.方便高效的開發(fā)環(huán)境
MSP430發(fā)展和應(yīng)用:推出X1XX--X6XX系列,其中X3xx、X4xx、X6xx具有LCD驅(qū)動模塊,對提高系統(tǒng)的集成度較有利
MSP430微控制器架構(gòu):CPU具有16位數(shù)據(jù)總線、7種尋址模式,采用精簡指令集(代碼更短、更緊湊、執(zhí)行速度更快),微控制器采用馮諾依曼架構(gòu)(程序指令存儲器和數(shù)據(jù)存儲器共用一個存儲空間,地址線和數(shù)據(jù)線共用一組;哈佛結(jié)構(gòu)是程序存儲器和數(shù)據(jù)存儲器分開的,地址和數(shù)據(jù)是兩組獨(dú)立的總線),CPU、多種外設(shè)和時鐘系統(tǒng)通過存儲器地址總線和存儲器數(shù)據(jù)總線相連。
MSP430主要功能部件:CPU、存儲器、外圍模塊;存儲器分為程序存儲器(以字方式訪問)和數(shù)據(jù)存儲器(以字(16位)或字節(jié)(8位)方式訪問),字通常編址在偶數(shù)單元,這個地址存放字的低字節(jié),后面緊鄰的奇數(shù)地址包含字的高字節(jié),8位運(yùn)算數(shù)據(jù)訪問可以從偶數(shù)或奇數(shù)地址開始,16運(yùn)算數(shù)據(jù)訪問只能從偶數(shù)地址開始。
MSP430所有內(nèi)存包括RAM、ROM、Flash、信息內(nèi)存、特殊功能寄存器、外設(shè)寄存器;
Flash:字母F標(biāo)識,可擦除以及重新變成代碼空間;ROM字母C,價格低廉、適用于大容量;FRam字母FR,具備動態(tài)區(qū)功能統(tǒng)一存儲器,訪問速度快,實現(xiàn)零功率狀態(tài)保持;存儲器的每個儲存單元由一個字節(jié)構(gòu)成。
中斷向量表位于存儲空間的最后一段區(qū)域,從0FFE0h到)0FFFEh,中斷向量優(yōu)先級隨字地址的增加而遞增。
所有的代碼、表、編碼常量都存儲在FLash/ROM內(nèi),其起始地址取決于Flash/ROM的容量。軟件能從Flash/ROM中存儲并讀出字或字節(jié)表。MSP430的Flash中含有信息內(nèi)存地址空間(只存數(shù)據(jù)),還含有引導(dǎo)內(nèi)存地址空間,引導(dǎo)程序在此,是一個能對Flash編程的外部接口之一(還有一個JTAG),此區(qū)域不會被其他應(yīng)用程序訪問,也不會被意外覆蓋。
RAM結(jié)尾地址取決于設(shè)備中的RAM的容量,RAM可以用來存儲代碼或數(shù)據(jù);
外設(shè)模塊包含了所有映射到地址空間的片上外設(shè)寄存器,這些模塊可以通過字或字節(jié)指令訪問。
一些外設(shè)功能被映射到帶有特殊功能的內(nèi)存中,特殊功能寄存器有:中斷使能寄存器,中斷標(biāo)志寄存器,使能標(biāo)志寄存器;特殊功能寄存器僅能通過字節(jié)指令訪問。
MSP430 CPU適用于高性能、低功耗應(yīng)用,RISC(精簡指令集)類型CPU體系結(jié)構(gòu)基于正交的短指令集(27條指令),采用3級指令流水線進(jìn)行譯碼,包含ALU、4個專用寄存器,12個通用寄存器。將常用的值和變量存到通用寄存器中,節(jié)省CPU周期。
ALU(算術(shù)邏輯單元)處理加法、減法、比較和邏輯運(yùn)算(AND、OR、XOR)。ALU運(yùn)算會影響狀態(tài)寄存器中的溢出、零標(biāo)志、負(fù)標(biāo)志和進(jìn)位標(biāo)志位。
4個專用寄存器(R0--R3)12個通用寄存器(R4--R15):R0:程序計數(shù)器(PC):16位的程序計數(shù)器存放著下一條將要從程序存儲器中取出的指令的地址,程序計數(shù)器的實現(xiàn)依賴于指令使用的字節(jié)數(shù)(2、4、6總是偶數(shù)),由于指令是16位的,故PC一定是在偶數(shù)地址對齊。
R1可用于保存堆棧指針(SP/R1)用戶可以使用堆棧存儲數(shù)據(jù)(PUSH指令來存數(shù)據(jù)、POP指令來取數(shù)據(jù))。用戶和編譯器均可使用堆棧為子函數(shù)傳遞參數(shù)(PUSH、POP用于調(diào)用函數(shù),被調(diào)用的函數(shù)使用SP來計算偏移);系統(tǒng)進(jìn)入子函數(shù)之前,把PC值存儲到堆棧中,從子函數(shù)返回時,再取出堆棧中的值,重新賦值給PC。系統(tǒng)堆棧在系統(tǒng)進(jìn)入中斷服務(wù)程序時,首先保護(hù)程序計數(shù)器(PC),然后將中斷矢量地址送入程序計數(shù)器,再執(zhí)行中斷服務(wù)程序,中斷服務(wù)程序執(zhí)行完畢,遇到返回指令時,將堆棧的內(nèi)容送到程序計數(shù)器中,程序又回到原來的地方繼續(xù)執(zhí)行,在函數(shù)調(diào)用之前保存的寄存器變量、局部變量和參數(shù)都不會變。
R2狀態(tài)寄存器(SR):用來存儲狀態(tài)位和控制位,CPU根據(jù)運(yùn)算結(jié)果,自動改變系統(tǒng)標(biāo)志,SR的預(yù)留位用來支持常量發(fā)生器�!�8位 V”是溢出位,v=1 表示算術(shù)結(jié)果溢出有符號變量的范圍;“7位SCG1”系統(tǒng)時鐘生成器0,SCG1=1 表示DCO生成器被關(guān)閉;“6位SCG0”系統(tǒng)時鐘生成器1,SCG0=1 代表FLL+循環(huán)控制被關(guān)閉;“5位OSOFF 振蕩器關(guān)閉 OSOFF=1關(guān)閉LFXT1”;“4位CPUOFF CPU關(guān)閉 CPUOFF=1禁用CPU內(nèi)核”;“3位GIE一般中斷使能 GIE=1使能可屏蔽中斷”“2--0位”是狀態(tài)位,N——求反標(biāo)識“N=1字節(jié)或字運(yùn)算結(jié)果為負(fù)”Z——零標(biāo)識“Z=1字節(jié)或字運(yùn)算結(jié)果為0” C——進(jìn)位標(biāo)識 “C=1字節(jié)或字運(yùn)算結(jié)果產(chǎn)生進(jìn)位”。
R2/R3(常量發(fā)生寄存器(CG1/CG2))根據(jù)源寄存器尋址模式(AS)的值,常量發(fā)生寄存器可以不需要通過代碼字或代碼內(nèi)存訪問即可生成6個常用的常量�?梢詫崿F(xiàn)仿真指令。
R4-R15通用寄存器可以用來保存數(shù)據(jù)值、地址指針或者索引值,可以通過字節(jié)或字指令訪問它們。
寄存器尋址模式可以直接操作通用寄存器或特殊功能及寄存器。
RISC和CISC體系結(jié)構(gòu)主要特征:RISC結(jié)構(gòu)簡單,易于設(shè)計,程序執(zhí)行效率高;CISC:功能豐富,指令執(zhí)行更加靈活;
系統(tǒng)復(fù)位:3種復(fù)位信號:掉電復(fù)位(BOR)、上電復(fù)位(POR)、上電清零(PUC);POR為高電平時,狀態(tài)寄存器復(fù)位,程序計數(shù)器指向0FFFEh,外設(shè)寄存器全部恢復(fù)到上電狀態(tài);PUC將PC和SR復(fù)位,僅復(fù)位某些外設(shè)寄存器。
3種時鐘:輔助時鐘(ACLK一般用于低速外設(shè)模塊)、主系統(tǒng)時鐘(MCLK主要用于CPU和系統(tǒng))、子系統(tǒng)時鐘(SMCLK高速外設(shè)模塊);
XT1振蕩器(在PUC后開始工作):工作在低頻(LF)模式(XTS=0)時,提供支持32768Hz的超低功耗模式,晶振只需經(jīng)過XIN和XOUT兩個引腳連接;工作在高頻(HF)模式時(XTS=1),支持高頻晶振或諧振器。XT1在LF時通過XT1DRIVE提高驅(qū)動,在HF時,通過XT1DRIVE適應(yīng)不同的晶振或振蕩器。在XT1BYPASS下輸入到XT1的外部時鐘信號(4MHz-32MHz),XT1自動關(guān)閉電源;
XT2振蕩器(高速振蕩器):產(chǎn)生XT2CLK時鐘信號,當(dāng)XT2CLK信號沒有用作ACLK、MCLK、SMCLK,可用控制位XT2OFF關(guān)閉XT2。系統(tǒng)頻率和系統(tǒng)的工作電壓密切相關(guān);
片內(nèi)數(shù)字控制振蕩器(DCO):是數(shù)字可控的RC振蕩器,其頻率隨供電電壓、環(huán)境溫度變化而具有一定的不穩(wěn)定性;可以用控制位SCG0關(guān)閉;
MPS430的中斷源有內(nèi)部中斷和外部中斷,分為復(fù)位中斷、不可屏蔽中斷(NMI不能被狀態(tài)寄存器中的通用中斷使能(GIE)位禁用)、可屏蔽中斷;所有可屏蔽中斷均能被CPU的中斷控制識別,所以GIE必須置位;系統(tǒng)復(fù)位中斷(振蕩器/閃存和硬復(fù)位)是不可能屏蔽中斷,具有最高的中斷向量和處理優(yōu)先級;
不可屏蔽中斷(NMI)有兩個等級:系統(tǒng)NMI(SNMI)和用戶(UNMI)。
可屏蔽中斷:每個都在外設(shè)寄存器或獨(dú)立模塊中有獨(dú)立的使能或禁用標(biāo)志,可屏蔽中斷都能被狀態(tài)寄存器(SR)中的通用中斷使能位(GIE)禁用。當(dāng)發(fā)生可屏蔽中斷事件時,必須是GIE和中斷事件有關(guān)的模塊都中斷允許時,該中斷才能有可能被響應(yīng);
中斷向量:最多可有64個中斷源,指向響應(yīng)中斷服務(wù)程序的起始位置
中斷是應(yīng)用程序的外部事件,外設(shè)中斷使能位和gie均置位中斷請求發(fā)出后就會調(diào)用ISR,中斷延遲時間為中斷事件開始到中斷服務(wù)程序執(zhí)行之間的時間間隔,CPU識別并調(diào)用ISR6個時鐘周期:中斷發(fā)生時,程序計數(shù)器(PC)和狀態(tài)寄存器(SR)被壓入到棧中,SCG0異常,將SR清零,設(shè)置GIE禁止中斷,此時其他ISR將不會被調(diào)用,中斷服務(wù)程序結(jié)尾的reti指令會將程序流重定位,且自動彈出棧中SR和PC值。ISR處理時間必須小于中斷請求的時間間隔,否則棧會溢出。
端口能直接用于輸入/輸出,輸入/輸出操作都是通過傳送指令完成的,端口P1——P11和PJ都可以按位尋址,每一位可獨(dú)立用于輸入/輸出;相鄰兩個端口組合成端口對(分別命名為:PA、PB、PC、PD等),通過字節(jié)形式訪問單獨(dú)端口,通過字形式訪問端口對;MSP430只有數(shù)據(jù)端口,可用端口的某一位或幾位來傳送狀態(tài)信息,來確定外設(shè)狀態(tài)。
端口特點(diǎn):1.類型豐富:有P1——P11、PJ、S、COM端口;2.功能豐富:P1、P2口有中斷能力;3.寄存器豐富:P1和P2具有9個(或7個)寄存器,其他有6個(或4個)寄存器,通過設(shè)置寄存器,(1每個I/O口可以獨(dú)立編程,2輸入或輸出可任意組合,3P1、P2所有I/O口都具有邊沿可選的輸入中斷功能,4能使用所有指令對寄存器操作,5可設(shè)置I/O口的上拉或下拉功能,6可配置I/O驅(qū)動能力);端口的數(shù)據(jù)輸出特性:MSP430輸入端口的最大漏電流為50na,輸入端口的漏電流對系統(tǒng)的耗電影響很大;每個端口的輸出晶體管都能夠限制輸出電流(最大約為25mA);
端口P1和P2具有輸入/輸出、中斷和外部模塊功能;可以通過9個(或7個)控制寄存器的設(shè)置來實現(xiàn):1.PxDIR輸入/輸出方向寄存器:相互獨(dú)立的8為分別定義了8個引腳的輸入/輸出方向,8位在PUC(上電清零)后都被復(fù)位。使用輸入/輸出功能時,應(yīng)該先定義端口的方向,作為輸入時,只能讀,作為輸出時,可讀可寫,對某位置位時,表示對應(yīng)引腳設(shè)置為輸出方向,否則為輸入方向,“|=”按位或運(yùn)算;2.PxIN輸入寄存器:是只讀寄存器,用戶不能對其寫入,對這種只讀寄存器寫入,會在寫操作有效期間增加電流消耗;3.PxOUT輸出寄存器:可讀可寫,讀寄存器時,讀的值為上一次寫入的值,若某引腳設(shè)置為輸入方向,則對該寄存器寫操作不會改變引腳之前的狀態(tài);4.PxREN上拉或下拉電阻使能寄存器(提高信號的驅(qū)動能力):該寄存器的每一位可以使能或禁用I/O引腳的上拉/下拉電阻,通過設(shè)置PxOUT相應(yīng)位來選擇引腳上拉或下拉功能:"0為禁止,1為使能”;5.PxSEL功能選擇寄存器:P1和P2端口還具有其他片內(nèi)外設(shè)功能,為減少引腳,將這些功能與芯片外的聯(lián)系通過復(fù)用P1和P2引腳的方式來實現(xiàn),P1SEL和P2SEL用來選擇引腳的I/O端口功能與外圍模塊功能,”0:選擇引腳為I/O端口,1:選擇引腳為外圍模塊功能“;6.PxDS輸出驅(qū)動強(qiáng)度寄存器:每位設(shè)置引腳的輸出強(qiáng)度為高驅(qū)動強(qiáng)度(“1”)或低驅(qū)動強(qiáng)度(“0”),默認(rèn)值為低驅(qū)動強(qiáng)度;7.PxIE中斷使能寄存器:該寄存器的8位與該端口的8個引腳一一對應(yīng),某一位置位表示允許對應(yīng)的引腳在電平變化(上升沿或下降沿)時產(chǎn)生中斷;8.PxIES中斷觸發(fā)沿選擇寄存器:如果允許Px口某個引腳中斷,還需定義該引腳的中斷觸發(fā)方式,該寄存器8位對應(yīng)Px口的8個引腳(”0:上升沿使相應(yīng)標(biāo)志置位,1:下降沿使相應(yīng)標(biāo)志置位“);9.PxIFG(”0:沒有中斷請求;1:有中斷請求“)中斷標(biāo)志寄存器:用來表示對應(yīng)引腳是否產(chǎn)生了有PxIES設(shè)定的電平跳變,如果GIE置位,引腳對應(yīng)的中斷使能寄存器PxIE位置位,則會向CPU請求中斷處理;中斷標(biāo)志共用一個中斷向量,屬于多源中斷,須用軟件來判定是對哪一個事件服務(wù),并將相應(yīng)的標(biāo)志復(fù)位,外部中斷事件的時間必須保持不低于1.5倍的MCLK的時間,以保證中斷請求被接受,且使相應(yīng)的中斷標(biāo)志位置位。
端口COM和S實現(xiàn)與液晶片的直接接口,COM端口為液晶片的公共端,S端口為液晶片的段碼端;
定時功能模塊是MSP430應(yīng)用系統(tǒng)中經(jīng)常用到的重要部分,可用來實現(xiàn)定時控制、延遲、頻率測量、脈寬測量和信號產(chǎn)生、信號檢測等等。定時信號可以用軟件和硬件兩種方法來獲得。
看門狗定時器(WDT):特性:8種軟件可選的定時時間,看門狗工作模式,定時器工作模式,帶密碼保護(hù)的WDT控制寄存器,適中源可選擇,為降低功耗,可停止,時鐘失效保護(hù);看門狗寄存器:1.計數(shù)單元(WDTCNT)是不能通過軟件直接訪問的32位增計數(shù)器,是由所選定的時鐘電路產(chǎn)生的固定周期脈沖信號對計數(shù)器進(jìn)行加法計數(shù)。2.控制寄存器(WDTCTL)是一個16位寄存器,高8位用于存放訪問密碼,低8位6位(WDT時鐘源有SMCLK和ACLK,時鐘源的選擇由控制位WDTSSEL確定;WDTHOLD(1是禁用)看門狗定時器停止位;WDTTMSEL:工作模式選擇(0看門狗模式1間隔定時器模式))用于WDT控制,其余兩位用于NMI(不可屏蔽中斷)的控制;
看門狗的工作模式:關(guān)閉狀態(tài)、定時模式、看門狗模式;處于定時模式下的 WDT 中斷屬于可屏蔽中斷。其中斷優(yōu)先級介于定時器 A 與定時器 B 之間;
看門狗模式下: 用戶軟件一都需要進(jìn)行如下操作:     進(jìn)行WDT的初始化:設(shè)置合適的時間。           周期性地對WDTCNT清零:防止WDT溢出。
WDT為什么能抗干擾:將WDT定時時間稍大于程序執(zhí)行一遍所用的時間,而且程序執(zhí)行過程中都有對看門狗定時器清零指令,不會產(chǎn)生溢出,使計數(shù)器清零(喂狗)重新計數(shù),如果干擾使程序跑飛,不會在WDT定時時間到之前執(zhí)行WDT清零指令,WDT溢出,從而產(chǎn)生系統(tǒng)復(fù)位,CPU需要重新運(yùn)行用戶程序,這樣程序就可以回到正常狀態(tài);
定時器 A (MSP430Flash型單片機(jī)都含有定時器A)由一個16位定時器和多路捕獲/比較通道(提高I/O 端口處理事務(wù)的能力和速度)組成,4種計數(shù)模式:00停止模式、01增計數(shù)模式、10連續(xù)計數(shù)模式、11增/減計數(shù)模式;停止模式:用于定時器暫停,不發(fā)生復(fù)位,寄存器所有現(xiàn)行內(nèi)容在該模式結(jié)束后仍可用; 增計數(shù)模式:(增到TAxCCR0降到0)捕獲/比較寄存器TAxCCR0為Timer_A增計數(shù)模式的周期寄存器,適用于周期小于65536的連續(xù)計數(shù)情況;連續(xù)計數(shù)模式:定時器從當(dāng)前值計數(shù)到0FFFFH后,又從0開始重新計數(shù),TAxCCR0工作方式和其他捕獲/比較寄存器相同,不再作為周期寄存器;需要對稱波形通常需要用到增/減計數(shù)模式,該模式計數(shù)方向鎖定,先增計數(shù)到TAxCCR0然后反向減計數(shù)到0;
增計數(shù)模式和連續(xù)計數(shù)模式區(qū)別:在連續(xù)計數(shù)模式中,很多時候會用到CCR0、CCR1等信號,鬧鐘的例子最形象了,在周期循環(huán)定時中,CCR0、CCR1對應(yīng)不同時刻的事件
模數(shù)轉(zhuǎn)換器(ADC)從信號系統(tǒng)中采集信號電壓,經(jīng)過信號處理后,將其轉(zhuǎn)換為等效的數(shù)字量。A/D轉(zhuǎn)換,通常按取樣、保持、量化、編碼四個步驟進(jìn)行(基本過程);
取樣:是對模擬信號周期性抽取樣值;保持:在下一個取樣脈沖到來前,暫時保持取得的樣值脈沖幅度;量化:將樣值電壓變換為量化單位電壓整數(shù)倍的過程;編碼:量化后的離散量用相應(yīng)的二進(jìn)制碼表示;數(shù)字量計算方法:ADC內(nèi)核一般要使用兩個參考電壓VR+和VR-,一般這兩個電壓可以是用戶接入或者是使用內(nèi)部參考電壓。VR+是定義的轉(zhuǎn)換最大值,VR-則是轉(zhuǎn)換的最小值;公式:N = 4095*(Vin-Vr-)/(Vr+ - Vr-);


程序:
//ADC中斷程序:
#pragma vector=ADC_VECTOR
_interrupt void ADC12ISR(void)
{
uchar j;
while(ADC12CTL1&0x01)==1);//如果ADC忙,則等待,否則讀取ADC轉(zhuǎn)換數(shù)值
Flag=1;
TEMP=ADC12MEM0;//讀取ADC轉(zhuǎn)換值
Data_do(TEMP);//處理ADC值,用于顯示,數(shù)字量
Voltage_do(TEMP);//處理ADC值,用于顯示,模擬電壓值
for(j=0;j<15;j++)
{
LCD_DisplayADC();//顯示ADC數(shù)據(jù),ADC數(shù)字量;
LCD_DisplayVoltage();//顯示ADC的電壓值;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表