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