怎樣學習MSP430單片機
使用官方資料
學習使用任何一款芯片,我們要明確最根本最權(quán)威的參考資料是官方給出的資料。對于MSP430單片機,也不例外。市面上有各種各樣介紹MSP430單片機的書,水平參差不齊。而其中有一大部分基本上就是翻譯芯片手冊,更大的問題是,很多書上還有大量的印刷錯誤等(像寄存器寫錯、程序有問題等的現(xiàn)象很常見)。這樣的情況下,很難好好學習。
本文引用地址:http://m.butianyuan.cn/article/201611/318292.htm在學習430單片機的過程中,尤其是對于接觸過51單片機的人來說,我們最好不要還是像學習51單片機一樣,到處找視頻教程,指望著完全中文的資料,而應該學會如何去使用官方給出的資料?;蛟S你沒有體會到這樣有什么好處,但是將來如果要研究一些比較深入的東西,或者你要用一些最新的芯片,這時你唯一能獲取的資料,不是各種中文書籍和翻譯來的資料,更不是各種視頻教程,而往往只是官方給出的一些全英文的手冊。
所有的芯片官方都會給出對應的Data Sheet(數(shù)據(jù)手冊,芯片手冊),有些會有Application Note(應用筆記),對于一些復雜的芯片,有一些強大的公司可能也會推出一些中文資料,但還是以英文資料為主。因為英語是國際通用的語言,何況很多高科技產(chǎn)業(yè)往往又在國外。過分依賴中文資料,就很難學好這些東西。另外,官方給出的資料,就像是說明書一樣,經(jīng)過了很多次的核對修正,還會及時的勘誤,比如430的Errata Sheet會專門指出官方各種手冊資料中的紕漏和錯誤。官方手冊的權(quán)威性,是任何根據(jù)官方手冊編寫的資料視頻所不及的。
不要懼怕英文
在技術性的手冊中,除了一些專有名詞外,都會避免使用復雜的句式,避免復雜的語法,以及一些難以理解的詞匯。看不懂的專有名詞,我們完全可以通過查詞典來克服。久而久之,就會習慣,英文水平長進了,也不再懼怕英文了。這里引用一位同學的話:“TI的文檔寫的相當好,通俗易懂,而中文翻譯水平層次不一,必要的術語也不知道什么意思。而且中文翻譯的文檔制作的真心太差。我想你們也不甘心學十年英語就為了一個六級吧?”
基本認識
學習MSP430,首先我們應該了解MSP430的特點,分為哪幾個系列,這些在官方介紹文檔中都有。
大致了解430內(nèi)部都集成了哪些外設模塊,分別有什么作用,比如AD、串口、硬件I2C等。根據(jù)實際應用需要,查看官方選型手冊,選擇合適的430型號,看RAM、ROM大小、定時器數(shù)目、最高運行速度、IO管腳數(shù)目、封裝等就可以。也可以直接在TI官網(wǎng)選擇型號(如下圖)。
如果不知道選什么型號,或者是想先學學,可以選一些常用型號,如MSP430F149,MSP430G2553(LaunchPad上用的,有DIP直插的封裝,比較好用),MSP430F5438(比較高端的一個型號,價格也比較貴)。
參考資料
選好型號后,就可以上TI官網(wǎng),下載該型號對應的DataSheet,Users Guide,以及Code Examples。
DataSheet介紹了具體某個型號的各種參數(shù),封裝格式,管腳分布,性能特點等。
Users Guide是分為幾個系列分別去講各種模塊的結(jié)構(gòu)和寄存器,同一個系列的不同型號,含有的同一個模塊操作通常都一樣,主要是管腳分配不一樣,或者一些型號只含有模塊中的一部分功能,比如定時器的比較捕獲模塊數(shù)目不同。
而Code Examples則是官方給出的可直接編譯執(zhí)行的程序代碼。比如MSP430G2553內(nèi)部有10位精度的AD,即ADC10模塊,而在MSP430x2xx Family Users Guide上就有對ADC10模塊的介紹。同樣是2xx系列,有些芯片沒有ADC10,但是有ADC12,這個模塊同樣會在Users Guide上介紹。
開發(fā)板
我們可能需要一塊開發(fā)板,官方推出的LaunchPad是一個不錯的選擇。LaunchPad上使用的是ValueLine超值系列(2xx系列)的430芯片G2553和G2452,對于簡單的項目開發(fā)綽綽有余,比51單片機常用的型號89C52RC要強大不少,而且是430單片機中有DIP直插封裝的很少的幾種型號之一,對于我們手工焊接很方便。
LaunchPad更大的優(yōu)勢在于,在幾十塊錢的開發(fā)板上,集成了JTAG調(diào)試芯片,可以連接計算機直接進行程序的調(diào)試。LaunchPad使用的是兩線JTAG,而不少430型號不支持兩線JTAG,則需要購買比較昂貴的430標準JTAG仿真器。JTAG仿真器同時可以進行程序的燒寫。430也支持價格低廉的BSL方式燒寫程序,但BSL就沒有JTAG強大的調(diào)試功能了。
關于LaunchPad的使用,官方給出了十分詳細的介紹文檔《Getting Started with the MSP430 LaunchPad》,包括怎么新建工程都有具體到每一步的截圖(使用的是CCS軟件)。關于具體電路實現(xiàn),則可以參考官方的《MSP430 Hardware Tools Users Guide》。如果動手能力強,也可以嘗試自己焊接簡易開發(fā)板。
開發(fā)環(huán)境
然后要安裝開發(fā)環(huán)境。最常用的是官方推出的CCS和IAR公司推出的IAR Embedded Workbench For MSP430。兩種軟件各有優(yōu)缺點,CCS的優(yōu)點是集成Eclipse,還有官方推出的430Ware、Grace插件,用起來比較方便,軟件比較穩(wěn)定,但是由于Eclipse基于Java開發(fā),反應比較遲鈍,IAR的優(yōu)勢則是編譯效率非常高,能產(chǎn)生高效的代碼,缺點是運行不太穩(wěn)定,有時會死機。總體來說,目前建議用IAR EW430。
程序編寫
然后就要開始寫程序了。首先我們應該了解最基本的一些東西,時鐘、看門狗定時器、以及IO操作。我們并不一定要對它們都掌握透徹,但是應該知道怎么初始化時鐘開啟外部高速晶振,看門狗是什么,怎么關閉看門狗以免系統(tǒng)復位等。
然后根據(jù)我們的實際需求,再進一步去了解定時器、串口、硬件SPI、硬件I2C、Flash讀寫、AD、DA等的操作。如果是為了做一個項目,我們只要學習要用的模塊就足夠了,如果是想提前學習以備以后使用,了解常用的模塊就可以了。
學習每個模塊時,我們應該先看芯片手冊,確認自己使用的型號有這個模塊,以及相應IO口的分配情況,然后認真詳細的看Users Guide中內(nèi)部結(jié)構(gòu)框圖和寄存器的介紹,參考Code Examples去寫程序,并進行測試。在學習每個模塊時,我們可以把這些模塊的程序?qū)懗瑟毩⒌奈募匾牡胤阶约鹤鲆恍┳⑨屨f明,保留好這些程序,方便以后使用。下次再用的時候,即使忘了怎么操作,只要自己之前寫好的模塊文件,然后根據(jù)自己注釋的調(diào)用規(guī)則去調(diào)用函數(shù),就可以很輕松的使用,代碼得到了重復利用,非常節(jié)省時間精力。
學過51或其他單片機的人,就沒必要特地花時間在學430的時候又特地把數(shù)碼管、1602什么的外設重新再學一遍了,因為程序都是一樣的寫法,只是IO口的操作有點不同而已。
在這里,強烈建議大家學會模塊化編程,代碼分層。
前面說的把每個模塊寫成單獨的文件,通過調(diào)用函數(shù)去重復使用,就是模塊化編程的思想。
另一方面,學會代碼分層,比如同樣是驅(qū)動數(shù)碼管,對于不同的單片機,只是IO操作語句寫法不同,而IO的高低電平控制是一樣的。我們把具體IO操作語句用宏定義寫出來(如#define LED_OFF P1OUT&=~BIT0),更換單片機只需要修改宏定義,這樣就可以實現(xiàn)代碼復用,節(jié)省了精力。
在這里,宏定義根據(jù)不同的單片機,寫法不一樣,屬于硬件接口層;而數(shù)碼管掃描函數(shù)始終是調(diào)用宏定義過的語句控制IO口電平,不同單片機寫法一樣,則屬于驅(qū)動層;這樣的做法就叫做代碼分層,也是模塊化編程很大的一個特點。
這里再說一點,可能有人之前學習51單片機時寫過軟件模擬I2C程序讀寫AT24C01等芯片,現(xiàn)在改用430了,我們?nèi)匀豢梢杂煤甓x操作IO,軟件模擬I2C時序,另一方面,430內(nèi)部集成了硬件I2C,我們也可以學習硬件I2C,通過設置相關寄存器去控制相同的芯片。一般情況下,硬件接口比軟件接口會更有優(yōu)勢,因為不需要占用CPU時間去模擬時序。這個時候,可能就需要重新去了解一下了,因為有些接口用硬件實現(xiàn)和用軟件模擬還是有一定區(qū)別的。
單片機不是用來學的,而是要去用的
用什么學什么,這樣能更好的掌握所學知識,也不至于感覺無從下手。MSP430有幾百個型號,我們沒必要把每種型號每個模塊都拿來學一遍,也不可能有那樣的精力,即使你打算全部學,還沒學完,TI又會推出一款新的產(chǎn)品。對于其它的各種芯片等的使用也是類似的。所以我們要做的,是掌握學習的方法,以不變應萬變。
評論