摘要:Intel公司的8051系列單片機進入國內(nèi)市場較早,至今許多學校單片機教學都是采用8051系列。文章通過對比Cortex-M0 ARM和8051系列單片機的性能及使用方法,提出在嵌入式應(yīng)用中,用先進的Cortex-M0 LPCIl00系列ARM代替8051單片機的方法,介紹在具體教學改革中進行的有益探索。
關(guān)鍵詞:單片機實驗;Cortex-M0 ARM;8051單片機;LPCIl00系列ARM
1.背景
Intel公司于1980年推出的8051系列單片機,奠定了嵌入式應(yīng)用的單片微型計算機的經(jīng)典體系結(jié)構(gòu),由于進入國內(nèi)市場較早,學校單片機教學都是采用8051系列;加之Intel公司實施了805l的技術(shù)開放政策,ATMEL公司、PHILIPS公司著名的電子公司,以其在電子應(yīng)用系統(tǒng)的優(yōu)勢,著力發(fā)展8051單片機的控制功能及外圍單元,形成了可滿足大量嵌入式應(yīng)用的單片機系列產(chǎn)品。直到現(xiàn)在,仍然有不少學校在單片機教學中采用8051系列。ARM公司自1990年成立以來,不斷推出各種ARM內(nèi)核,前幾年推出的都定位在高端市場;對于使用者,芯片、開發(fā)工具及開發(fā)平臺較貴,開發(fā)難度也較大;ARM公司在2005年收購8051的最大工具開發(fā)商Keil,就為其進入8/16位市場做準備。2009年后,ARM公司推出了Cortex-M0 ARM,它低功耗、高性能、代碼密度高,價格比其他8位單片機低,而且開發(fā)工具、平臺價格低,開發(fā)難度大大降低。可以說,用Cortex-M0 ARM代替8051單片機的時機已經(jīng)成熟,學校單片機教學內(nèi)容進行改變是實現(xiàn)代替的第一步。我們在使用Cortex-M0 ARMLPCIl00教學過程中,把兩者性能及使用方法進行了對比,在具體應(yīng)用上提出自己的看法,并做了有益的探索。
2.LPCIl00系列ARM功能
ARM Cortex-MO處理器工作頻率50MHz,嵌套向量中斷控制器,可快速確定中斷,喚醒中斷控制器,支持優(yōu)先中斷自動喚醒。具體包括3種節(jié)能模式:睡眠模式、深度睡眠模式和深度掉電模式。內(nèi)存:最高128KB閃存,最高16KBSRAM。串行外設(shè):UART支持分頻波特率產(chǎn)生、內(nèi)部FIFO和RS-485;SPI控制器,支持FIFO和多協(xié)議功能;12C總線接口,支持全速12C總線規(guī)范和增強型快速模式,數(shù)據(jù)速率高達1Mbit/s,支持多地址識別和監(jiān)控模式。模擬外設(shè):8個通道10位模數(shù)轉(zhuǎn)換器,轉(zhuǎn)換速率最高可達每秒250K個采樣。最高42個通用I/O(GPIO)管腳,具有可配置的上拉,下拉電阻和可配置的新型開漏工作模式。4個通用計數(shù)器、計時器,共4個捕獲輸入端和13個匹配輸出端??删幊炭撮T狗定時器(WDT),帶鎖死功能;一個系統(tǒng)計時器;各個外設(shè)均自帶時鐘分頻器,有利于節(jié)能。
從上述性能可以看出,8051單片機具有的所有性能,LPCIl00系列ARM都具有,而且增加了許多8051單片機沒有的功能。
2.1LPCIl00系列ARM與8051的性能對比
(1)指令長度對比。指令的長度和微處理器的位數(shù)無關(guān),經(jīng)過比較發(fā)現(xiàn)LPCI100的指令長度和8051單片機很相似,指令的密度非常大。
(2)處理器運算能力對比。8051單片機雖然支持8位和16位數(shù)據(jù),但是對于16位數(shù)據(jù)需要多次處理,增加了堆棧和中斷延遲;LPC1100處理器對長整形的數(shù)據(jù)處理只需要極少的周期,并具有極佳的浮點處理能力,對于32位數(shù)據(jù)的傳輸也只需要很少的時鐘周期。
(3)處理性能對比。比較微處理器性能的一種常用的方法是使用Dhrystone基準,它在微處理器中只占很小的內(nèi)存。比較的結(jié)果顯示,Cortex-MO性能遠大于8051單片機。
(4)運行模式及指令數(shù)量對比。8051單片機有一種運行模式,Cortex-M0也只有一種運行模式,非常簡單;8051單片機指令集為50條左右,Cortex-M0的指令集也僅有56條。
(5)代碼量對比。根據(jù)業(yè)界的CoreMark基準,在多數(shù)常見微控制器任務(wù)中,基于Cortex-M0微控制器的代碼需求量降低了40%-50%,代碼量已經(jīng)小于同等功能下8051的代碼量。這是因為8051所使用的指令并不全是8位的(8-24位),而Cortex-MO的指令位寬大部分是16位的;8051所要處理的數(shù)據(jù)也不總是8位的,而所有8位、16位和32位數(shù)據(jù)傳輸在Cortex-M0中都是通過單一指令完成的;8051的尋址空間限制在64KB,雖然可以用分段方法擴展,但這會帶來代碼的增長,而Cortex-M0尋址空間可達4GB,完全能滿足編制代碼要求。
(6)內(nèi)存訪問效率對比。Cortex-M0使用32位總線,減少了內(nèi)存訪問所需次數(shù),從而降低了功耗。對于存內(nèi)存中復制同樣數(shù)量的數(shù)據(jù),8位微處理器需要4倍的內(nèi)存訪問次數(shù)和更多的取指,所以8位單片機需要消耗更多的功耗,才能達到同樣的目的。
(7)價格對比。隨著近年來制造工藝的不斷進步,Cortex-M0 ARM的成本也不斷降低,已經(jīng)與8位和16位微處理器處于同等水平。就LPCIl00系列ARM而言,價格比許多8位單片機還低。
2.2使用方式比較
用LPC1100系列ARM代替805l單片機,在使用方式上要相對簡單。
(1)I/O端口。8051單片機I/O端口大多數(shù)沒有復用功能,使用相對簡單。LPCIl00系列ARM絕大部分I/O端口都有復用功能,可以設(shè)置為A/D輸入、總線等,默認狀態(tài)為I/O端口。它共有4個通用I/O端口(如LPCI 114 LQFP48共有42位I/O端口),通過GPIO配置寄存器設(shè)置不同功能;對于信號傳輸方向,通過寄存器設(shè)置,但一旦設(shè)置完成,正常使用就不煩瑣了。
(2)中斷。就中斷控制過程而言,8051單片機和LPCIl00系列ARM類似,都是當外設(shè)符合中斷條件時,中斷源會向處理器提出中斷請求,處理器開始響應(yīng)一個中斷,中斷控制器會自動定位一張中斷向量表,根據(jù)中斷號從表中找到中斷服務(wù)程序(ISR)的入口地址并跳轉(zhuǎn)過去執(zhí)行。當中斷服務(wù)程序執(zhí)行完成后,從堆棧中取出中斷前斷點的程序指針及數(shù)據(jù),在斷點處繼續(xù)執(zhí)行。LPCIl00系列ARM支持的中斷源多,且具有4個中斷優(yōu)先級,8051單片機只有2個中斷優(yōu)先級。
(3)定時器/計數(shù)器。805l單片機具有2個16位定時器/計數(shù)器,LPCIl00系列ARM具有2個16位和2個32位定時器/計數(shù)器,每個定時器/計數(shù)器都有一個相應(yīng)的輸入信號引腳和2-4個相應(yīng)的輸出信號引腳,具有定時、計數(shù)、輸入捕捉功能,并可以設(shè)置為脈沖寬度調(diào)制(PWM)模式,用于電機控制。此外,LPCI 100系列ARM還有兩個非常有用而805l單片機不具備的功能,就是系統(tǒng)節(jié)拍定時器,其擁有專門的內(nèi)部時鐘與異常中斷向量,可為實時操作系統(tǒng)提供固定的時間間隔中斷;還有就是看門狗定時器(WDT)模塊用于對微處理器的運行狀態(tài)進行實時監(jiān)測。
(4)通信部件。8051單片機的串行接口只有一個UART,而LPCIl00系列ARM具有豐富的串行接口,一個UART還支持RS-485的9位模式和輸出使能,給一些分布式控制系統(tǒng)應(yīng)用帶來了方便。除此之外,還具備SSP接口、12C接口,方便應(yīng)用時選擇。
(5)開發(fā)軟件。KEIL軟件是最普及的一種8051單片機編程環(huán)境,大多數(shù)8051單片機學習、開發(fā)人員都是采用KEIL進行編程。在ARM公司收購KEIL公司后,ARM公司結(jié)合自己的優(yōu)勢和KEIL的特點推出了新一代的ARM編譯平臺——RealView MDK。RealView MDK集成了許多先進的技術(shù),包括uVision4集成開發(fā)環(huán)境與RealView編譯器,支持所有的ARM芯片,并且自動配置啟動代碼、集成Flash燒寫模塊、強大的Simulation設(shè)備模擬、性能分析、邏輯分析等,大大降低了初學者的門檻,而且所使用的uVision集成開發(fā)環(huán)境(IDE)和開發(fā)使用ARM非常相似,在開發(fā)使用上都有著可以借鑒的地方。
3.教學案例
為了配合課堂教學需要,我們設(shè)計了Cortex-M0 LPCIl00系列ARM實驗平臺,主要模塊有:ARM核心模塊(包括LPCIll4,復位控制芯片,SWD調(diào)試電路);鍵盤、顯示模塊(一個4×4矩陣鍵盤,LCDl602液晶顯示器);通訊接口模塊(包括RS232、RS485、12C和SPI等),8路AiD轉(zhuǎn)換輸入,配接8個電位器,實現(xiàn)AID采集;一路PWM輸出,可以通過示波器觀察波形;帶光耦的4路開關(guān)量(輸入和輸出),4路繼電器控制(帶指示LED)。除了可以完成所有8051單片機傳統(tǒng)的實驗外,還增加了AID轉(zhuǎn)換、PWM控制、12C、SPI、WDT及功耗控制等實驗。
根據(jù)Cortex-M0 LPCIl00系列ARM的特點,結(jié)合教學需要,我們設(shè)計了下述分布式智能溫室采集控制系統(tǒng)實驗方案。在嵌入式應(yīng)用中,有一種形式比較普遍,就是數(shù)據(jù)采集(通過A/D轉(zhuǎn)換實現(xiàn)),配以若干開關(guān)量輸入/輸出,并以上、下位機通過RS-485組成的分布式控制系統(tǒng)。這就是我們這個實驗方案的原型。
分布式智能溫室采集控制系統(tǒng)由5個部分組成,如圖1所示。
(1)信號采集輸入部分:包括溫度、濕度、光照、風速、風向、雨量等環(huán)境因子的檢測。
(2)輸出及控制部分:控制風機濕簾、遮陽網(wǎng)、窗的開關(guān)等系統(tǒng)。
(3)LPCIll4部分:包括信號轉(zhuǎn)換與處理部分,將采集的信號轉(zhuǎn)換為計算機和操作人員可識別的量,由LPCIll4進行處理。灌溉控制,包括定時灌溉,時間由控制室調(diào)整制定,并可根據(jù)實際情況,在溫室內(nèi)進行手動控制灌溉。
(4)RS-485通訊部分:用于和上位機通訊,完成數(shù)據(jù)通訊、控制命令下達和遠程參數(shù)設(shè)置。
(5)LCD顯示和鍵盤部分:用于部分數(shù)據(jù)監(jiān)視、溫度、濕度等上限和下限的參數(shù)設(shè)置。
我們用實驗平臺對上述各部分硬件進行對應(yīng)設(shè)置,用5個電位器代替溫度、濕度等模擬量,接到LPCIll4A/D輸入,用3個繼電器代替風機濕簾等的控制。
LPC1100系列ARM實驗平臺編制的程序主要是:定時采集溫度、濕度等數(shù)據(jù)值,通過RS485傳到上位機(PC機);通過采集到的各個數(shù)據(jù)和設(shè)定的上限和下限值進行比較,控制對應(yīng)繼電器工作(可以通過配套LED觀察結(jié)果);編制鍵盤、LCD程序;編制上位機(Pc機)通訊、顯示程序。
4.結(jié)語
雖然LPC1100系列ARM使用上比8051系列單片機煩瑣一些,這主要是因為LPCIl00功能多,需要配置,但一旦配置完成,后面的使用中就不用再改動了;還有就是各個功能部件(中斷、定時器/計數(shù)器、串行接口等),控制寄存器的數(shù)量多于8051單片機,但也是一旦設(shè)置完成后,在后面的使用中,就和普通單片機差不多了。另外LPCIl00系列ARM的設(shè)計考慮了在應(yīng)用中的基本功能要求,對最常用的功能,如FO輸入輸出功能采用了默認的形式,即不配置成其他功能,默認成普通I/0口,這樣連開始的配置或設(shè)置都不需要了。
我們通過課堂教學和在自己開發(fā)的LPCIl00系列ARM實驗平臺進行相關(guān)實驗,除了基礎(chǔ)的I/0接口、定時器/計數(shù)器、中斷、PWM、A/D及各種通訊接口實驗外,還提出若干較為復雜的綜合的嵌入式應(yīng)用實驗,如上述的“分布式智能溫室采集控制系統(tǒng)”,并且還在不斷豐富這些實驗。例如作為擴展要求,希望通過上位機直接發(fā)送控制命令,實現(xiàn)遠程監(jiān)控;也可以考慮平時是由上位機監(jiān)控,一旦上位機出現(xiàn)故障或通訊失敗,下位機及時接管所有功能,這樣就需要用一些技術(shù)(如“心跳檢測’’技術(shù))檢測上、下位機之間通訊是否暢通。
總之,通過這些教學和實驗,要讓學生學會在一些嵌入式實際應(yīng)用中,如何利用LPCIl00系列ARM完成檢測、控制等任務(wù)。