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