msp430f5529教程
當(dāng)然,闖入MSP430學(xué)習(xí),你需要有一些單片機(jī)的理論基礎(chǔ),和比較強(qiáng)的C語(yǔ)言功底,學(xué)習(xí)MSP430單片機(jī)最好的方法是文武并進(jìn):“文”指學(xué)好片內(nèi)模塊的資源知識(shí);“武”則指動(dòng)手能能力?;A(chǔ)知識(shí)+動(dòng)手實(shí)操,是一個(gè)非常有效的學(xué)習(xí)方法。文武并進(jìn)必能學(xué)有所成。
進(jìn)入各個(gè)電子產(chǎn)品公司的網(wǎng)站,招聘里面嵌入式占據(jù)了大半工程師職位。 廣義的嵌入式無(wú)非幾種:傳統(tǒng)的什么51單片機(jī)、 MSP430稱做嵌入式微控制器;ARM是嵌入式微處理器;當(dāng)然還有DSP;FPGA。我們現(xiàn)在就不說(shuō)別的,就說(shuō)MSP430單片機(jī),多數(shù)想學(xué)MSP430的童鞋,對(duì)89C51內(nèi)核系列的單片機(jī)是很熟悉的,為了加深對(duì)MSP430 系列單片機(jī)的認(rèn)識(shí)嗎,迅速闖入MSP430學(xué)習(xí)過(guò)程,就必須徹底了解MSP430單片機(jī),我們不妨將51單片機(jī)和MSP430兩者進(jìn)行一下比較。
第一點(diǎn), 51內(nèi)核單片機(jī)是8 位單片機(jī)。其指令是采用的被稱為“ CISC ”的復(fù)雜指令集,共具有111 條指令。而MSP430 單片機(jī)是16 位的單片機(jī),采用了精簡(jiǎn)指令集( RISC )結(jié)構(gòu),只有簡(jiǎn)潔的27 條指令,大量的指令則是模擬指令,眾多的寄存器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器都可參加多種運(yùn)算。這些內(nèi)核指令均為單周期指令,功能強(qiáng),運(yùn)行的速度快。
第二點(diǎn),MCU主要分為兩種工作模式:待機(jī)與執(zhí)行。51內(nèi)核單片機(jī)正常情況下消耗的電流為mA級(jí) ,在掉電狀態(tài)下,其耗電電流仍約為3mA左右 ;即使在掉電方式下,電源電壓可以下降到2V ,但是為了保存內(nèi)部RAM 中的數(shù)據(jù),還需要提供約50uA的電流。
而430單片機(jī)功耗是在uA級(jí)的,工作電流極小,并且超低功耗,關(guān)斷狀態(tài)下的電流僅為0.1μA,待機(jī)電流為0.8μA,常規(guī)模式下的(250μA/1MIPS@3V),端口漏電流不足50 nA,并可零功耗掉電復(fù)位(BOR)。另外,該芯片屬低電器件,僅需1.8~3.6V電壓供電,因而可有效降低系統(tǒng)功耗。MSP430將低功耗模式擴(kuò)展為7種,分別對(duì)應(yīng)不同應(yīng)用場(chǎng)合及任務(wù)的低功耗方式。以睡眠模式為例,包括深度睡眠模式RTC:只有時(shí)鐘在跑而其他都不動(dòng),目前,TI宣布其MSP430在RTC模式下最低功耗僅為360nA。同時(shí)也包括諸如液晶顯示驅(qū)動(dòng)等需要幾十毫秒刷新一次的間歇性睡眠模式。所以,MSP430 的超低功耗更適合應(yīng)用于使用電池供電的儀器、儀表類產(chǎn)品中。
第三點(diǎn), 51內(nèi)核單片機(jī)由于其內(nèi)部總線是8 位的,受其結(jié)構(gòu)本身的限制很大,模擬功能控制功能受限制。MSP430 系列其基本架構(gòu)是16 位的,同時(shí)在其內(nèi)部的數(shù)據(jù)總線經(jīng)過(guò)轉(zhuǎn)換還存在8 位的總線,在加上本身就是混合型的結(jié)構(gòu),因而對(duì)它這樣的開放型的架構(gòu)來(lái)說(shuō),無(wú)論擴(kuò)展8 位的功能模塊,還是16 位的功能模塊,即使擴(kuò)展模/ 數(shù)轉(zhuǎn)換或數(shù)/ 模轉(zhuǎn)換這類的功能模塊也是很方便的。
第四點(diǎn),典型MCU的存儲(chǔ)結(jié)構(gòu)有兩種。諾依曼結(jié)構(gòu)——程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器統(tǒng)一編碼;哈佛結(jié)構(gòu)——程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;MSP430系列單片機(jī)屬于前者,而常用的51內(nèi)核單片機(jī)系列屬于后者。
第五點(diǎn),就是在開發(fā)工具上面。對(duì)51內(nèi)核單片機(jī)來(lái)說(shuō),不少適合我們使用的開發(fā)工具。但是如何實(shí)現(xiàn)在線編程還是一個(gè)很大的問(wèn)題。對(duì)于MSP430 系列而言,由于引進(jìn)了Flash 型程序存儲(chǔ)器和JTAG 技術(shù),不僅使開發(fā)工具變得簡(jiǎn)便,而且價(jià)格也相對(duì)低廉,并且還可以實(shí)現(xiàn)在線編程。
那么說(shuō)了以上這些,作為新手,到底怎么學(xué)習(xí)430這種16位低功耗的單片機(jī)呢?或者說(shuō)有什么有什么效果比較好的方法嗎,答案是肯定。
網(wǎng)上有很多介紹MSP430單片機(jī)學(xué)習(xí)的方法,一定要結(jié)合自己的學(xué)習(xí)特點(diǎn),集百家之長(zhǎng),善于總結(jié)別人的、自己的學(xué)習(xí)方法和效果,積極實(shí)踐。當(dāng)然學(xué)習(xí)的方法都是相通的。大概對(duì)這些方法簡(jiǎn)單總結(jié),也就是下面幾點(diǎn):
作為430新手,首先看我們是否準(zhǔn)備好以下幾樣硬件:電腦(帶有并口)1臺(tái),MSP430FET仿真器1套,MSP430開發(fā)實(shí)驗(yàn)板1套,和一些MSP430教程或電子教程資料等。
選用MSP430仿真器。購(gòu)買現(xiàn)成的MSP430JTAG仿真器如TI-MSP430JTAG
選用MSP430開發(fā)板或目標(biāo)板是學(xué)習(xí)一個(gè)重要的工具,建議購(gòu)買一個(gè)開發(fā)板或目標(biāo)板,同時(shí)也會(huì)得到很好的技術(shù)支持。如果自己制作的話也行,也未尚不可,那就看個(gè)人水平了。
軟件工具,因?yàn)楝F(xiàn)在都有學(xué)習(xí)板的工具軟件,如IAR的EW430學(xué)習(xí)版,430GCC軟件還是免費(fèi)的。建議還是使用IAR軟件較方便,因?yàn)槭褂玫娜巳狠^多,有問(wèn)題還可請(qǐng)教,容易解決。
MSP430學(xué)習(xí)資料及教程,<
MSP430系列中硬件源資是非常豐富的。有看門狗(WDT)、定時(shí)器A (Timer_A)、定時(shí)器B(Timer_B)、比較器、串口0(USARTO)、串口1(USART1)、硬件乘法器、液晶驅(qū)動(dòng)器、10位/12位ADC, 14位ADC,數(shù)十個(gè)可實(shí)現(xiàn)方向設(shè)置及中斷功能的并行輸入輸出端口、基本定時(shí)器(Basic Timer)。
以下幾部分模塊硬件資源是作為初學(xué)者必須要了解學(xué)習(xí)的。
①WDT看門狗定時(shí)器: 新手們會(huì)看到很多編程實(shí)例中,開頭都有“WDTCTL = WDTPW + WDTHOLD;”語(yǔ)句。這是CUP執(zhí)行關(guān)閉定時(shí)器的意思。在剛開始,我們沒(méi)必要關(guān)心這個(gè),可以跳過(guò)這章節(jié),只要大概地知道他的作用就好了??撮T狗定時(shí)器一般是用于防止程序失效而存在的,一般是用于完整的程序中使用。主程序中可不斷地清除看門狗定時(shí)器的計(jì)數(shù)值,以防定時(shí)器的值自動(dòng)計(jì)滿后使CPU復(fù)位而重新開始工作。當(dāng)程序發(fā)生錯(cuò)誤時(shí),無(wú)法正常清除看門狗的定時(shí)值時(shí),則看門狗定時(shí)器計(jì)數(shù)溢出而產(chǎn)生CPU復(fù)位。
②IO模塊:對(duì)于IO模塊可分為初級(jí)與提高兩階段,可以不必同一時(shí)段內(nèi)進(jìn)行理解。
a初學(xué)者必需了解幾個(gè)常用寄存器使用如P1OUT,P1IN,P1DIR,P1SEL寄存器。
b理解MSP430 IO口常用編程語(yǔ)法,這些都可以查看參考例程。
c結(jié)合書本介紹和個(gè)人理解,然后在開發(fā)板上進(jìn)行實(shí)驗(yàn)。例如比如LED、響聲之類的初級(jí)實(shí)驗(yàn)。
d對(duì)于IO模塊:了解如何使用IO中斷,和IO中斷相關(guān)寄存器的使用。如果不太必要,可以跳過(guò)IO中斷的使用,而是去學(xué)習(xí)其他章節(jié)的基礎(chǔ)部分;當(dāng)其他章節(jié)基礎(chǔ)學(xué)習(xí)到一定程序時(shí)回過(guò)頭再來(lái)學(xué)習(xí)這部分。另外,我們需要搞清楚IO模塊在什么時(shí)候?yàn)楦咦锠顟B(tài)?高阻狀態(tài)時(shí)的漏電流為多少?IO驅(qū)動(dòng)電流能力如何?等等一些常關(guān)注的參數(shù)時(shí),我們都需要養(yǎng)成主動(dòng)查看器件手冊(cè)的習(xí)慣。
中斷是430處理器的一大特色,因?yàn)閹缀趺總€(gè)外圍模塊都能產(chǎn)生,430可以在沒(méi)有任務(wù)時(shí)進(jìn)入低功耗狀態(tài),有事件時(shí)中斷喚醒cpu,處理完畢再次進(jìn)入低功耗狀態(tài)。整個(gè)中斷的響應(yīng)過(guò)程是這樣的,當(dāng)有中斷請(qǐng)求時(shí),如果cpu處于活動(dòng)狀態(tài),先完成當(dāng)前命令;如果處于低功耗,先退出,將下一條指令的pc值壓入堆棧;如果有多個(gè)中斷請(qǐng)求,先響應(yīng)優(yōu)先級(jí)高的;執(zhí)行完后,等待中斷請(qǐng)求標(biāo)志位復(fù)位,要注意,單中斷源的中斷請(qǐng)求標(biāo)志位自動(dòng)復(fù)位,而多中斷的標(biāo)志位需要軟件復(fù)位;然后系統(tǒng)總中斷允許位SR.GIE復(fù)位,相應(yīng)的中斷向量值裝入pc,程序從這個(gè)地址繼續(xù)執(zhí)行。這里要注意,中斷允許位SR.GIE和中斷嵌套問(wèn)題。如果當(dāng)你執(zhí)行中斷程序過(guò)程中,希望可以響應(yīng)更高級(jí)別的中斷請(qǐng)求時(shí),必須在進(jìn)入第一個(gè)中斷時(shí)把SR.GIE置位?!∑鋵?shí),其他的外圍模塊時(shí)鐘沿著時(shí)鐘和中斷這個(gè)核心來(lái)執(zhí)行的。具體的結(jié)構(gòu)我也不羅索了,可以參考430系列手冊(cè)。
③時(shí)鐘模塊:系統(tǒng)時(shí)鐘是一個(gè)程序運(yùn)行的指揮官,時(shí)序和中斷也是整個(gè)程序的核心和中軸線。430最多有三個(gè)振蕩器,DCO內(nèi)部振蕩器;LFXT1外接低頻振蕩器,常見的32768HZ,不用外接負(fù)載電容;也可接高頻450KHZ-8M,需接負(fù)載電容;XT2接高頻450KHZ-8M,加外接電容。初學(xué)者若要使用到片中某模塊時(shí)幾乎都要使用不同的時(shí)鐘。時(shí)鐘模塊是提供整個(gè)單片機(jī)中各模塊的時(shí)鐘發(fā)生源,所以這章節(jié)是非常強(qiáng)調(diào)地要去認(rèn)真理解的。
⑴.必須理解430有幾種時(shí)鐘信號(hào):MCLK系統(tǒng)主時(shí)鐘,可分頻1 2 4 8,供cpu使用,其他外圍模塊在有選擇情況下也可使用;SMCLK系統(tǒng)子時(shí)鐘,供外圍模塊使用,可選則不同振蕩器產(chǎn)生的時(shí)鐘信號(hào);ACLK輔助時(shí)鐘,只能由LFXT1產(chǎn)生,供外圍模塊。
⑵.DCO,SMCLK,MCLK,ACLK各個(gè)時(shí)鐘有什么優(yōu)點(diǎn)和缺點(diǎn)。
⑶.4個(gè)時(shí)鐘信號(hào)中,每個(gè)時(shí)鐘的通常頻率范圍是多少。
⑷.常規(guī)的時(shí)基控制寄存器設(shè)置和時(shí)鐘如何從引腳輸出等等。
④TimaA模塊:⑴.初學(xué)者需要搞清TimerA的三個(gè)不同工作模式中TA、CCR1、CCR2與CCR0之間的關(guān)系。⑵.搞清楚TA、CCR1、CCR2與CCR0之間的中斷向量關(guān)系。⑶.綜合上面的理解,我們可以結(jié)合TimerA的例程來(lái)進(jìn)行相關(guān)驗(yàn)證,只有通過(guò)親自的操作才能有效地記住。⑷.利用TimerA實(shí)現(xiàn)PWM信號(hào)輸出、利用捕獲/比較功能實(shí)現(xiàn)捕獲信號(hào)等等。
另外多大學(xué)習(xí)430學(xué)習(xí)單片機(jī)論壇上, 和網(wǎng)友交流,咨詢,多看別人出現(xiàn)的問(wèn)題的解決方法。
可以說(shuō),只要經(jīng)過(guò)上述方面認(rèn)真折騰學(xué)習(xí)的話,其實(shí)MSP430單片機(jī)編程應(yīng)用就有了基本入門階段,可以說(shuō)已經(jīng)闖入MSP430單片機(jī)有效學(xué)習(xí)過(guò)程,接下要繼續(xù)學(xué)習(xí)其他相關(guān)的模塊應(yīng)用也不難了。那么剩下的一些模塊可以按需而用,按需而學(xué)。 但前提的就是需要熟悉幾個(gè)常用模塊基礎(chǔ)應(yīng)用,以使用量最多的14x系列為例,初學(xué)者入門必學(xué)有IO模塊、時(shí)基模塊、定時(shí)器模塊等,以后可繼續(xù)強(qiáng)化學(xué)習(xí)如ADC12模數(shù)轉(zhuǎn)換、UART串行異步通訊模塊、比較器A模塊等等