1樓
wangxinxin 發(fā)表于:2010-12-7 15:27:44
我是一家私企的硬件工程師,因工作需要,我會的嵌入式MCU有51、STC、PIC、WINBOND和ARM7。而且?guī)缀趺恳环N我都成功的開發(fā)過產(chǎn)品。最近同樣也是因工作需要,我需要選用一款超低功耗的MCU,于是我選中了MSP430單片機。下面就我的知識、就我學430單片機的心得對這些嵌入式MCU做一比較。一方面希望對初學者朋友提供一點幫助;另一方面想通過此文章感謝利達公司駐西安辦事處的工作人員。
開發(fā)軟件環(huán)境上,51、STC、WINBOND都使用KEIL C;PIC單片機使用MPLAB;MSP430單片機使用IAR Embedded Workbench;ARM7使用ADS或者Linux。由于功能、性能上ARM和單片機差距較大,所以在這里最主要比較單片機的差異方面。
軟件開發(fā)環(huán)境實現(xiàn)的功能基本都差不多,我就在界面上比較一下吧。我會的第一個就是KEIL C,個人覺得這個軟件各方面都挺好,如果說有不足,就是在做LCD開發(fā)時人些字會是亂碼,不過打上補丁后就很好用了。后來因工作需要也學會了MPLAB,這個軟件在功能上倒沒什么,就是寫程序時那個界面右邊空出一大塊來,一編譯,編譯信息的一個新界面就跳出來,而且是全屏。這個軟件還存在一個問題,就是如果使用C語言寫程序,那么編譯器還得單獨安裝,所以個人感覺這個沒KEIL C和IAR Embedded Workbench做的人性化,它們編譯的提示信息基本都在底部,而且自動向上滾動,還有都集成了匯編和C兩種編譯器。同樣最近我也學了IAR Embedded Workbench,個人感覺這個這個界面給人的第一感覺就是自然,用起來也很快能上手。
軟件名稱 版本 界面友好度 缺點
KEIL C V8.08a 一般 開發(fā)LCD程序時需打補丁
MPLAB V8.00 差 不集成C語言編譯器
IAR Embedded Workbench For MSP430 3.40A 好 (暫未發(fā)現(xiàn))
從硬件結(jié)構(gòu)上比較,51單片機和MSP430單片機都采用馮?諾依曼結(jié)構(gòu),而PIC單片機則采用哈佛結(jié)構(gòu)。這兩種結(jié)構(gòu)各有優(yōu)點,很難說出誰好誰壞。
哈佛結(jié)構(gòu)是一種將程序指令存儲和數(shù)據(jù)存儲分開的存儲器結(jié)構(gòu)。中央處理器首先到程序指令存儲器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應的數(shù)據(jù)存儲器中讀取數(shù)據(jù),并進行下一步的操作(通常是執(zhí)行)。程序指令存儲和數(shù)據(jù)存儲分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數(shù)據(jù)是8位寬度。馮?諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)構(gòu)。程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。
從功能上比較51單片機屬于基本型,功能相對單一,雖然51內(nèi)核的MCU相對比較多,但卻是不同廠家的,所以使用起來局限性很大。這點很難和PIC單片機和MSP430單片機相比。PIC單片機分為低檔、中檔和高檔單片機,而且每一系列可選型號也較多。MSP430單片機同樣也有MSPX1XX、MSPX2XX、MSPX3XX、MSPX4XX等系列,且每一系列可選型號也很多。從低功耗方面比較,51的可選型號幾乎沒有,PIC單片機是低功耗的最低功耗也達個位數(shù)uA級,但MSP430單片機則是超低功耗的,最低功耗可達到0.6uA。需要說明一點的是,在執(zhí)行了休眠指令后,PIC單片機每次喚醒都需要復位一次,所以在超低功耗方面MSP430單片機表現(xiàn)要好點。
單片機類型 功能 系列化程序 低功耗
51 一般 差 差
PIC 好 好 一般
MSP430 好 好 好
當然MSP430單片機也有它的缺點,在我使用過程中,最大的不便就是位操作。下面舉一例子,功能就是判斷一引腳如果是高電平,那么就輸入低電平為例,三種單片機代碼如下:
51單片機
功能:如果P1^0為高則輸出低
代碼:
Sbit DR=P1^0;
If(DR)
DR=0;
PIC單片機
功能:如果RB0為高則輸出低
代碼:
#define DR RB0
TRISB=0X00;
If(DR)
{
TRISB|=0X01
DR=0;
}
MSP430單片機
功能:如果P1^0為高則輸出低
代碼:
P1DIR=0X00;
If(P1IN&=0x01)
{
P1DIR|=0X01;
P1OUT&=0XFE;
}
從上面實現(xiàn)同一功能的三段代碼可以看出:
單片機類型 程序可讀性 位操作
51 好 容易
PIC 一般 一般
MSP430 差 差
下面我說下我在學習這三種單片機過程中的時間長短。學習51單片機時,當時還在上學,為了興趣買了塊學習板后就開始對著上面的例子一個又一個讀它、改它。一年后我用51單片機完成了我的畢業(yè)設計。學習PIC單片機則是為了一個產(chǎn)品的需要,我選取了最小體積的PIC12F508單片機。也是從網(wǎng)上買了個ICD仿真器和開發(fā)板,一個月后我的新產(chǎn)品就調(diào)通了。在這個產(chǎn)品的升級產(chǎn)品中我決定選用超低功耗的MSP430單片機,在網(wǎng)上找了一下就找到了利爾達,聯(lián)系了下沒想到利爾達住西安辦事處的人就來了,并幫我一塊選芯片、搭環(huán)境。從拿到仿真器到調(diào)通程序就用了兩天,算上加業(yè)務功能不到一周時間就完成了。現(xiàn)在我的產(chǎn)品馬上就要評估了,在此我特別感謝利爾達公司駐西安辦事處的工作人員,沒有他們我的新產(chǎn)品不可能這么快出來。
經(jīng)過上面從開發(fā)環(huán)境、結(jié)構(gòu)、功能等方面比較了51、PIC、MSP430三種單片機。總的來說,從學習、上手方面51是最好的選擇。功能、應用方面則優(yōu)先考慮MSP430單片機。