找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4535|回復(fù): 0
收起左側(cè)

MSP430F5529學(xué)習(xí)資料

[復(fù)制鏈接]
ID:595376 發(fā)表于 2019-8-6 15:05 | 顯示全部樓層 |閱讀模式
  為想學(xué)MSP430單片機的初學(xué)者,或者,你是剛轉(zhuǎn)到電子硬件嵌入式開發(fā),如果你的電子基礎(chǔ)課程已經(jīng)完成,想盡快掌握MSP430單片機,又糾結(jié)于怎樣盡快闖入MSP430學(xué)習(xí)過程的問題,現(xiàn)總結(jié)整理出新手開始學(xué)習(xí)MSP430的一些問題,和學(xué)習(xí)中有關(guān)注意事項和方法。 供有心學(xué)習(xí)MSP430單片機的童鞋參考吧。
  當(dāng)然,闖入MSP430學(xué)習(xí),你需要有一些單片機的理論基礎(chǔ),和比較強的C語言功底,學(xué)習(xí)MSP430單片機最好的方法是文武并進(jìn):指學(xué)好片內(nèi)模塊的資源知識;則指動手能能力。基礎(chǔ)知識+動手實操,是一個非常有效的學(xué)習(xí)方法。文武并進(jìn)必能學(xué)有所成。
  進(jìn)入各個電子產(chǎn)品公司的網(wǎng)站,招聘里面嵌入式占據(jù)了大半工程師職位。 廣義的嵌入式無非幾種:傳統(tǒng)的什么51單片機、 MSP430稱做嵌入式微控制器;ARM是嵌入式微處理器;當(dāng)然還有DSP;FPGA。我們現(xiàn)在就不說別的,就說MSP430單片機,多數(shù)想學(xué)MSP430的童鞋,對89C51內(nèi)核系列的單片機是很熟悉的,為了加深對MSP430 系列單片機的認(rèn)識嗎,迅速闖入MSP430學(xué)習(xí)過程,就必須徹底了解MSP430單片機,我們不妨將51單片機和MSP430兩者進(jìn)行一下比較。
  第一點, 51內(nèi)核單片機是8 位單片機。其指令是采用的被稱為“ CISC ”的復(fù)雜指令集,共具有111 指令。而MSP430 單片機是16 位的單片機,采用了精簡指令集( RISC)結(jié)構(gòu),只有簡潔的27 指令,大量的指令則是模擬指令,眾多的寄存器以及片內(nèi)數(shù)據(jù)存儲器都可參加多種運算。這些內(nèi)核指令均為單周期指令,功能強,運行的速度快。
  第二點,MCU主要分為兩種工作模式:待機與執(zhí)行。51內(nèi)核單片機正常情況下消耗的電流為mA級 ,在掉電狀態(tài)下,其耗電電流仍約為3mA左右 ;即使在掉電方式下,電源電壓可以下降到2V ,但是為了保存內(nèi)部RAM 中的數(shù)據(jù),還需要提供約50uA的電流。
  而430單片機功耗是在uA級的工作電流極小,并且超低功耗,關(guān)斷狀態(tài)下的電流僅為0.1μA,待機電流為0.8μA,常規(guī)模式下的(250μA1MIPS@3V),端口漏電流不足50 nA,并可零功耗掉電復(fù)位(BOR)。另外,該芯片屬低電器件,僅需1.8~3.6V電壓供電,因而可有效降低系統(tǒng)功耗。MSP430將低功耗模式擴展為7,分別對應(yīng)不同應(yīng)用場合及任務(wù)的低功耗方式。以睡眠模式為例,包括深度睡眠模式RTC:只有時鐘在跑而其他都不動,目前,TI宣布其MSP430在RTC模式下最低功耗僅為360nA。同時也包括諸如液晶顯示驅(qū)動等需要幾十毫秒刷新一次的間歇性睡眠模式。所以,MSP430 的超低功耗更適合應(yīng)用于使用電池供電的儀器、儀表類產(chǎn)品中。
  第三點, 51內(nèi)核單片機由于其內(nèi)部總線是8 位的,受其結(jié)構(gòu)本身的限制很大,模擬功能控制功能受限制。MSP430 系列其基本架構(gòu)是16 位的,同時在其內(nèi)部的數(shù)據(jù)總線經(jīng)過轉(zhuǎn)換還存在8 位的總線,在加上本身就是混合型的結(jié)構(gòu),因而對它這樣的開放型的架構(gòu)來說,無論擴展8 位的功能模塊,還是16 位的功能模塊,即使擴展模/ 數(shù)轉(zhuǎn)換或數(shù)/ 模轉(zhuǎn)換這類的功能模塊也是很方便的。
  第四點,典型MCU的存儲結(jié)構(gòu)有兩種。諾依曼結(jié)構(gòu)——程序存儲器和數(shù)據(jù)存儲器統(tǒng)一編碼;哈佛結(jié)構(gòu)——程序存儲器和數(shù)據(jù)存儲器;MSP430系列單片機屬于前者,而常用的51內(nèi)核單片機系列屬于后者。
       第五點,就是在開發(fā)工具上面。對51內(nèi)核單片機來說,不少適合我們使用的開發(fā)工具。但是如何實現(xiàn)在線編程還是一個很大的問題。對于MSP430 系列而言,由于引進(jìn)了Flash 型程序存儲器和JTAG 技術(shù),不僅使開發(fā)工具變得簡便,而且價格也相對低廉,并且還可以實現(xiàn)在線編程。
      那么說了以上這些,作為新手,到底怎么學(xué)習(xí)430這種16位低功耗的單片機呢?或者說有什么有什么效果比較好的方法嗎,答案是肯定。
  網(wǎng)上有很多介紹MSP430單片機學(xué)習(xí)的方法,一定要結(jié)合自己的學(xué)習(xí)特點,集百家之長,善于總結(jié)別人的、自己的學(xué)習(xí)方法和效果,積極實踐。當(dāng)然學(xué)習(xí)的方法都是相通的。大概對這些方法簡單總結(jié),也就是下面幾點:
1.   作為430新手,首先看我們是否準(zhǔn)備好以下幾樣硬件:電腦(帶有并口)1臺,MSP430FET仿真器1套,MSP430開發(fā)實驗板1套,和一些MSP430教程或電子教程資料等。
2.   選用MSP430仿真器。購買現(xiàn)成的MSP430JTAG仿真器如TI-MSP430JTAG
3.   選用MSP430開發(fā)板或目標(biāo)板是學(xué)習(xí)一個重要的工具,建議購買一個開發(fā)板或目標(biāo)板,同時也會得到很好的技術(shù)支持。如果自己制作的話也行,也未尚不可,那就看個人水平了。
4.   軟件工具,因為現(xiàn)在都有學(xué)習(xí)板的工具軟件,如IAR的EW430學(xué)習(xí)版,430GCC軟件還是免費的。建議還是使用IAR軟件較方便,因為使用的人群較多,有問題還可請教,容易解決。
5.   MSP430學(xué)習(xí)資料及教程,<<MSP430系列16位超低功耗單片機原理與應(yīng)用>> 清華大學(xué)出版社和一本關(guān)于430C語言編程應(yīng)用的書本<<MSP430系列單片機實用C語言程序設(shè)計>>。
6.   MSP430系列中硬件源資是非常豐富的。有看門狗(WDT)、定時器A (Timer_A)、定時器B(Timer_B)、比較器、串口0(USARTO)、串口1(USART1)、硬件乘法器、液晶驅(qū)動器、10/12ADC, 14ADC,數(shù)十個可實現(xiàn)方向設(shè)置及中斷功能的并行輸入輸出端口、基本定時器(Basic Timer
7.   以下幾部分模塊硬件資源是作為初學(xué)者必須要了解學(xué)習(xí)的。
①WDT看門狗定時器: 新手們會看到很多編程實例中,開頭都有“WDTCTL = WDTPW +WDTHOLD;”語句。這是CUP執(zhí)行關(guān)閉定時器的意思。在剛開始,我們沒必要關(guān)心這個,可以跳過這章節(jié),只要大概地知道他的作用就好了?撮T狗定時器一般是用于防止程序失效而存在的,一般是用于完整的程序中使用。主程序中可不斷地清除看門狗定時器的計數(shù)值,以防定時器的值自動計滿后使CPU復(fù)位而重新開始工作。當(dāng)程序發(fā)生錯誤時,無法正常清除看門狗的定時值時,則看門狗定時器計數(shù)溢出而產(chǎn)生CPU復(fù)位。
    ②IO模塊:對于IO模塊可分為初級與提高兩階段,可以不必同一時段內(nèi)進(jìn)行理解。
     a初學(xué)者必需了解幾個常用寄存器使用如P1OUT,P1IN,P1DIR,P1SEL寄存器。
     b理解MSP430 IO口常用編程語法,這些都可以查看參考例程。
     c結(jié)合書本介紹和個人理解,然后在開發(fā)板上進(jìn)行實驗。例如比如LED、響聲之類的初級實驗。
     d對于IO模塊:了解如何使用IO中斷,和IO中斷相關(guān)寄存器的使用。如果不太必要,可以跳過IO中斷的使用,而是去學(xué)習(xí)其他章節(jié)的基礎(chǔ)部分;當(dāng)其他章節(jié)基礎(chǔ)學(xué)習(xí)到一定程序時回過頭再來學(xué)習(xí)這部分。另外,我們需要搞清楚IO模塊在什么時候為高阻狀態(tài)?高阻狀態(tài)時的漏電流為多少?IO驅(qū)動電流能力如何?等等一些常關(guān)注的參數(shù)時,我們都需要養(yǎng)成主動查看器件手冊的習(xí)慣。
   中斷是430處理器的一大特色,因為幾乎每個外圍模塊都能產(chǎn)生,430可以在沒有任務(wù)時進(jìn)入低功耗狀態(tài),有事件時中斷喚醒cpu,處理完畢再次進(jìn)入低功耗狀態(tài)。整個中斷的響應(yīng)過程是這樣的,當(dāng)有中斷請求時,如果cpu處于活動狀態(tài),先完成當(dāng)前命令;如果處于低功耗,先退出,將下一條指令的pc值壓入堆棧;如果有多個中斷請求,先響應(yīng)優(yōu)先級高的;執(zhí)行完后,等待中斷請求標(biāo)志位復(fù)位,要注意,單中斷源的中斷請求標(biāo)志位自動復(fù)位,而多中斷的標(biāo)志位需要軟件復(fù)位;然后系統(tǒng)總中斷允許位SR.GIE復(fù)位,相應(yīng)的中斷向量值裝入pc,程序從這個地址繼續(xù)執(zhí)行。這里要注意,中斷允許位SR.GIE和中斷嵌套問題。如果當(dāng)你執(zhí)行中斷程序過程中,希望可以響應(yīng)更高級別的中斷請求時,必須在進(jìn)入第一個中斷時把SR.GIE置位。 其實,其他的外圍模塊時鐘沿著時鐘和中斷這個核心來執(zhí)行的。具體的結(jié)構(gòu)我也不羅索了,可以參考430系列手冊。
 、蹠r鐘模塊:系統(tǒng)時鐘是一個程序運行的指揮官,時序和中斷也是整個程序的核心和中軸線。430最多有三個振蕩器,DCO內(nèi)部振蕩器;LFXT1外接低頻振蕩器,常見的32768HZ,不用外接負(fù)載電容;也可接高頻450KHZ-8M,需接負(fù)載電容;XT2接高頻450KHZ-8M,加外接電容。初學(xué)者若要使用到片中某模塊時幾乎都要使用不同的時鐘。時鐘模塊是提供整個單片機中各模塊的時鐘發(fā)生源,所以這章節(jié)是非常強調(diào)地要去認(rèn)真理解的。
 、.必須理解430有幾種時鐘信號:MCLK系統(tǒng)主時鐘,可分頻1 2 4 8,供cpu使用,其他外圍模塊在有選擇情況下也可使用;SMCLK系統(tǒng)子時鐘,供外圍模塊使用,可選則不同振蕩器產(chǎn)生的時鐘信號;ACLK輔助時鐘,只能由LFXT1產(chǎn)生,供外圍模塊。
  ⑵.DCO,SMCLK,MCLK,ACLK各個時鐘有什么優(yōu)點和缺點。
 、.4個時鐘信號中,每個時鐘的通常頻率范圍是多少。
 、.常規(guī)的時基控制寄存器設(shè)置和時鐘如何從引腳輸出等等。
 、躎imaA模塊:⑴.初學(xué)者需要搞清TimerA的三個不同工作模式TA、CCR1CCR2CCR0之間的關(guān)系。⑵.搞清楚TA、CCR1、CCR2CCR0之間的中斷向量關(guān)系。⑶.綜合上面的理解,我們可以結(jié)合TimerA的例程來進(jìn)行相關(guān)驗證,只有通過親自的操作才能有效地記住。⑷.利用TimerA實現(xiàn)PWM信號輸出、利用捕獲/比較功能實現(xiàn)捕獲信號等等。
8.   另外多大學(xué)習(xí)430學(xué)習(xí)單片機論壇上, 和網(wǎng)友交流,咨詢,多看別人出現(xiàn)的問題的解決方法。
      可以說,只要經(jīng)過上述方面認(rèn)真折騰學(xué)習(xí)的話,其實MSP430單片機編程應(yīng)用就有了基本入門階段,可以說已經(jīng)闖入MSP430單片機有效學(xué)習(xí)過程,接下要繼續(xù)學(xué)習(xí)其他相關(guān)的模塊應(yīng)用也不難了。那么剩下的一些模塊可以按需而用,按需而學(xué)。 但前提的就是需要熟悉幾個常用模塊基礎(chǔ)應(yīng)用,以使用量最多的14x系列為例,初學(xué)者入門必學(xué)有IO模塊、時基模塊、定時器模塊等,以后可繼續(xù)強化學(xué)習(xí)如ADC12模數(shù)轉(zhuǎn)換、UART串行異步通訊模塊、比較器A模塊等等。
(2)MSP430F5529 通用I/O口的設(shè)置
  初學(xué),有什么錯誤或者不恰當(dāng)?shù)牡胤蕉喽嘀刚蠹乙黄鸾涣鲗W(xué)習(xí)。
  推薦一個好去處:TI官方MSP430交流社區(qū)http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55.aspx需要注冊。在這里面提問題,都會有TI的在職工程師為你解答。
  第一章,先學(xué)習(xí)I/O。I/O的操作是最基本的,而且這些寄存器也都要牢牢掌握。MSP430難就難在它有大量的寄存器需要設(shè)置,雖然不是每個都必須掌握,但I(xiàn)/O控制寄存器我覺得肯定還要記住的。這個太基礎(chǔ)了啊啊-_'
  大家手里要常備一份原理圖(PCB圖),方便查線和配置引腳
一、通用I/O的簡單操作(設(shè)置)
1.1  I/O的簡介
        特點:多種復(fù)用和設(shè)置(即可控制是否輸入、是否輸出、是否接上拉電阻、是否接下拉電阻、是否可接受中斷);
                      一般情況下,P1P2都是具有中斷能力的。從P1P2接口的各個I/O管腳引入的中斷可以獨立的被使能并且設(shè)置為上升沿或者下降沿觸發(fā)。對應(yīng)的中斷向量表分別為P1IV和P2IV,它們只能進(jìn)行字操作,并且PAIV這個寄存器根本不存在。
                      P1、P2可合為PA,P3、P4可合為PB,…PC、PD。所以P18BCD 0x00,PA16BCD 0x0000。當(dāng)進(jìn)行字操作寫入PA口時,所有的16位都被寫入這個端口;當(dāng)利用字節(jié)操作寫入PA口的低字節(jié)時,高字節(jié)保持不變;
                      由于430很多I/O和外圍電路接線,所以這里常用位操作。如事先定義(接下來也會用到,先在此聲明)BIT0=0X01、BIT1=0X02、BIT3=0X04…BIT7=0X80,那么將P1.1、P1.3的輸出設(shè)為1的時候,就可以這樣操作:P1OUT|=(BIT1+BIT3)。這樣顯得很清楚。
                     沒有用到的I/O,要統(tǒng)一拉低為好。此外,當(dāng)讀入的數(shù)據(jù)長短小于端口最大長度時,那些沒有用到的位會被視零。
1.2   I/O的簡單配置
                    430I/O的配置是用軟件來實現(xiàn)的,是通過相應(yīng)的配置寄存器來實現(xiàn)的。(用到某個I/O時,一定要先配置好該I/O,否則易出錯)
      1.2.1  I/O方向設(shè)定寄存器PXDIR
                   如設(shè)定P1.1和P1.2為輸出狀態(tài),操作為: P1DIR |=(BIT1+BIT2)等價于PADIR |=(BIT1+BIT2)也等價于PADIR_L|=(BIT1+BIT2。
    拉高設(shè)定為輸出,拉低設(shè)定為輸入(默認(rèn))。
      1.2.2  I/O輸入設(shè)定寄存器PXIN
設(shè)定P1.1P1.2的輸入為低電平,操作為: P1IN&=~BIT1+BIT2)。
      1.2.3      I/O輸出設(shè)定寄存器PXOUT
   、佼(dāng)只用為簡單的輸出時:如設(shè)定P1.1和P1.2輸出高電平,操作為: P1OUT |=(BIT1+BIT2)。
                  ②如果該引腳為正常I/O功能,且當(dāng)前已設(shè)定為輸入方向,且上拉/下拉電阻寄存器是有效地。那么PXOUT可以用來配置上拉和下拉電阻
低電平為下拉電阻;
高電平為上拉電阻;
      1.2.4 上拉/下拉電阻使能寄存器PXREN
                                   低電平該寄存器為無效狀態(tài);
                                   高電平該寄存器為有效狀態(tài);
      1.2.5  輸出驅(qū)動能力設(shè)置寄存器PXDS
                            弱化驅(qū)動可以減弱電磁干擾EMI,全力驅(qū)動會增強電磁干擾。默認(rèn)為減弱驅(qū)動。
                            低電平表示減弱的驅(qū)動(默認(rèn));
                            高電平表示全力的驅(qū)動;
      1.2.6  功能選擇寄存器PXSEL
                            用來聲明該端口是要應(yīng)用于外圍電路的特殊功能(不決定輸入輸出方向),默認(rèn)為低電平。
                             低電平表示普通的I/O(默認(rèn));
                             高電平表示該引腳將有連接外圍電路的特殊用途;
                      如:開發(fā)板初始化函數(shù)HAL_Board.c中有這樣一句程序:
                                   P5SEL |=BIT2+BIT3)(=00001100;
                                   這句話的意思就是聲明P5.2P5.3將有特殊用途,實際上這兩個I/O接的是外部的高頻時鐘晶振(之后還要設(shè)定為輸入狀態(tài)才可以)。
                            此外需要注意的是,一旦某個I/OPXSEL置高了,那么該引腳將不能再被用為中斷引腳。
總結(jié),簡單的程序應(yīng)用:
/*實現(xiàn)LED的閃爍*/LED位于每個觸摸按鍵下方,具體接口請查詢原理圖
#include    <msp430.h>          該頭文件內(nèi)部包含430各個寄存器的配置情況
void main(void)
{
       WDTCTL=WDTPW+WDTHOLD;                   //關(guān)閉看門狗
       P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);             //P1.0-P1.5方向為輸出,BITX的定義在msp430.h
       P1OUT&=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);         //清零
       /*P1SEL=0X00;
PXDS=0X00;默認(rèn)*/
       inti=0,j=0;
       while(1)
       {
              if(i>5)
                     i=0;
              else
              {
                     switch(i)
                     {
                     case0:P1OUT=0x01;break;
                     case1:P1OUT=0x02;break;
                     case2:P1OUT=0x04;break;
                     case3:P1OUT=0x08;break;
                     case4:P1OUT=0x10;break;
                     case5:P1OUT=0x20;break;
                     }
              }
              i++;
              for(j=20000;j>0;j--);                               //延時
       }
}


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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