0、引言
現(xiàn)在,人們生活中的每個角落都有嵌入式設(shè)備的存在,比如數(shù)碼相機、移動電話、TV機頂盒及掌上電腦等等。這些嵌入式設(shè)備多采用32位RISC嵌入式處理器作為核心部件。其中基于ARM核的嵌入式處理器獨占鰲頭,在32位RISC處理器中占據(jù)超過75%的市場份額。ARM核嵌入式處理器通常采用C語言編程,目前ARM公司的開發(fā)工具ADS、RealView以及Keil與ARM核處理器結(jié)合較好,得到了廣大嵌入式學(xué)習(xí)者的一致認(rèn)可。
在傳統(tǒng)的嵌入式系統(tǒng)學(xué)習(xí)中,嵌入式開發(fā)平臺是必不可少的。其中資源少的開發(fā)平臺便宜但功能較少,資源多的開發(fā)平臺又價格不菲,這對廣大的嵌入式愛好者無疑是個障礙。然而,有沒有在不增加甚至降低開發(fā)成本的同時還能進(jìn)行同樣或更好的開發(fā)呢?本文介紹的Proteus軟件就是一個可以完全脫離硬件平臺來學(xué)習(xí)嵌入式系統(tǒng)進(jìn)行虛擬開發(fā)的利器,可以說是嵌入式系統(tǒng)學(xué)習(xí)的一次革命。
1、Proteus簡介
Proteus軟件是英國Labcenter electronics公司的EDA工具軟件,是一個電子設(shè)計的教學(xué)平臺、實驗平臺和創(chuàng)新平臺,涵蓋了電工電子實驗室、電子技術(shù)實驗室、單片機應(yīng)用實驗室等的全部功能。其革命性的功能是將電路仿真和微處理器仿真進(jìn)行協(xié)調(diào),直接在基于原理圖的虛擬原型上進(jìn)行處理器編程調(diào)試,并進(jìn)行功能驗證,通過動態(tài)器件(如電機、LED、LCD、開關(guān)等),配合系統(tǒng)配置的虛擬儀器(如示波器、邏輯分析儀等),可實時看到運行后的輸入輸出的效果,其主要特點如下:
(1)可以仿真、分析各種模擬器件和集成電路,其支持Pillips公司系列的ARM(LPC系列),Proteus的仿真是基于SPICE3F5的,因此它也能像其它的EDA軟件那樣進(jìn)行電路分析,如模擬分析、數(shù)字分析、混合信號分析、頻率分析等等;
(2)提供了虛擬示波器、邏輯分析儀、信號發(fā)生器、計數(shù)器、電表、Virtual Terminal等虛擬儀器儀表供選擇;
(3)能夠進(jìn)行SCH(原理圖)和PCB(印刷板)電路的設(shè)計;
(4)其自身只帶匯編編譯器,不支持C語言。但可以將它與Keil、ADS集成開發(fā)環(huán)境連接,將用匯編和C語言編寫的程序編譯好之后,可以立即進(jìn)行軟、硬件結(jié)合的系統(tǒng)仿真,達(dá)到很好的仿真效果。
2、Proteus環(huán)境下的系統(tǒng)設(shè)計與仿真
Proteus和PROTEL、EWB等軟件相似,繪制原理圖都要先從器件庫里取出所需的元器件符號并在繪圖區(qū)布局好,同時編輯好元件的參數(shù),接著進(jìn)行連線,添加必要的網(wǎng)絡(luò)標(biāo)號等步驟。下面通過一個簡單的實例說明如何使用Proteus軟件實現(xiàn)ARM(以LPC2124為例)系統(tǒng)設(shè)計與仿真。實例以 LPC2124控制器為核心,與L297、L298組成步進(jìn)電機控制器,添加必要的外圍電路,實現(xiàn)對步進(jìn)電機的正、反轉(zhuǎn)控制。
2.1 電路原理圖的設(shè)計
運行Proteus VSM的ISIS后出現(xiàn)如圖1所示的主窗口界面,點擊“File”—“New Design”新建一個設(shè)計項目。接下來就是在其中所需的添加元器件了,點擊元器件添加按鈕會彈出“Pick Devices”對話框,在其中選擇需要添加的元器件,添加到器件列表區(qū)中。然后再依次點擊列表區(qū)里的元器件,把它們放到繪圖區(qū)并編輯其屬性,接著進(jìn)行合理的布局之后,就可以進(jìn)行連線了。與PROTEL類似,Proteus也具有自動捕捉節(jié)點和自動布線功能,連線時當(dāng)鼠標(biāo)的指針靠近一個對象的引腳時,跟著鼠標(biāo)的指針就會出現(xiàn)一個“×”提示符號,點擊鼠標(biāo)左鍵即可畫線,在終點再點擊確認(rèn)一下就完成一段導(dǎo)線,所有導(dǎo)線畫完后,點擊電源按鈕,添加必要的電源和接地符號,并編輯其屬性后,原理圖的繪制就完成了,如圖2所示。
圖1 Proteus主窗口
[align=center]
圖2 電路原理圖[/align]
2.2 程序代碼的編寫
程序代碼的編寫主要分四個部分進(jìn)行:
(1) LPC2124的初始化代碼;
(2) LPC2124異常向量入口及異常向量與C語言代碼的接口,包括初始化堆棧的代碼;
(3) LPC2124目標(biāo)板特殊的代碼,包括異常處理程序和目標(biāo)板初始化程序;
(4) 根據(jù)我們實例要求,結(jié)合原理圖,編寫實現(xiàn)預(yù)期功能的代碼,即通常的執(zhí)行代碼,代碼文件保存為“main.c”。
通常,為了節(jié)省開發(fā)者的時間,通常把這些文件保存在一個文件夾里,暫且把文件夾命名為“l(fā)pc2124模塊”,這樣在以后的程序代碼編寫時就可以直接調(diào)用這個模塊,再根據(jù)不同的要求改寫“main.c”就行了,而不必要又重新編寫這些程序,節(jié)省了大量時間,大大提高了工作效率。
這里主要說明“main.c”的編寫,要實現(xiàn)的功能是用LPC2124控制器、LP297、L298組成的步進(jìn)電機控制 器,控制步進(jìn)電機的運轉(zhuǎn),原理圖中可以看到各元器件引腳的連接,圖中還設(shè)置了七個電壓探針,用數(shù)字圖表顯示各電壓節(jié)點的電平隨時間變化的曲線。KEY鍵控制電機的正反轉(zhuǎn)(KEY鍵按下則電機反轉(zhuǎn))。程序流程圖如圖3所示。根據(jù)程序流程圖編寫好執(zhí)行代碼文件“main.c”。
圖3 程序流程圖
[align=center]
圖4 ADS編譯環(huán)境窗口 [/align]
2.3 仿真
文中采用ADS集成開發(fā)環(huán)境進(jìn)行程序的編譯連接設(shè)置,ADS集成開發(fā)環(huán)境是ARM公司推出的ARM核微控制器集成開發(fā)工具,英文全稱為ARM Developer Suite,成熟版本為ADS1.2。ADS1.2支持ARM10以前的所有ARM系列微控制器,支持軟件調(diào)試,支持匯編、C和C++源程序,具有編譯效率高、系統(tǒng)庫功能強等特點。
打開ADS1.2集成開發(fā)環(huán)境CodeWarrior IDE,點擊Project→New Project建立一個新的工程lcd.mcp,把以上編好的代碼文件全部添加進(jìn)工程,如圖4所示。進(jìn)行相關(guān)設(shè)置后,選擇Project→Make命令,編譯并連接工程,生成stepper.hex文件。
在原理圖中右擊微控制器LPC2124,再單擊,出現(xiàn)一屬性設(shè)置窗口Edit Component,如圖5。在其中的Program File中添加上面生成的stepper.hex文件的路徑,單擊OK完成設(shè)置。點擊原理圖左下角
中的運行按鈕
,即開始仿真運行。仿真結(jié)果如圖6所示。數(shù)字圖表顯示各電壓節(jié)點的電平值隨時間變化的曲線,步進(jìn)電機按要求運行,按下KEY鍵電機反轉(zhuǎn)。仿真結(jié)果完全符合設(shè)計要求。
[align=center]
圖5 器件編輯窗口[/align]
[align=center]
圖6 仿真結(jié)果圖[/align]
3 結(jié)語
通過以上簡單的步進(jìn)電機控制系統(tǒng)設(shè)計過程可以看出,用Proteus軟件進(jìn)行ARM虛擬開發(fā)的優(yōu)勢所在。使用Proteus進(jìn)行ARM的虛擬開發(fā),不僅可以減少實驗硬件資本的投入,還突破了實際開發(fā)板中實驗內(nèi)容的局限性,使開發(fā)者能夠充分發(fā)揮自身的主動性。使用Proteus仿真,大大降低了開發(fā)成本,提高了開發(fā)效率。筆者相信隨著電子技術(shù)的不斷發(fā)展、完善,基于軟件的硬件虛擬開發(fā)的應(yīng)用將會發(fā)揮越來越重要的作用。
參考文獻(xiàn)
[1]基于L297/L298芯片步進(jìn)電機的單片機控制[J].微計算機信息,200,12-2:134-135.
[2] PHILIPS公司.LPC2214/2124/2212/2214 User Manual. PHILIPS公司,2004.
[3]周潤景等.基于PROTEUS的電路及單片機系統(tǒng)設(shè)計與仿真[M].北京:北京航空航天大學(xué)出版社,2006.
[4]周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M]. 北京:北京航空航天大學(xué)出版社,2005.
[5]趙星寒等.ARM開發(fā)工具ADS原理與應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2006