本節(jié)將詳細介紹AVR單片機的流行編程方式,并略述其工作原理,旨在讓AVR愛好者根據(jù)自己的需要選擇或制作恰當?shù)木幊坦ぞ摺O旅嫖覀円黄饋砜纯碼vr單片機編程方式講解。
1、avr單片機用什么編程?
AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機??梢詮V泛應用于計算機外部設備、工業(yè)實時控制、儀器儀表、通訊設備、家用電器等各個領域。AVR單片機是 Atmel 公司 1997 年推出的 RISC 單片機。RISC(精簡指令系統(tǒng)計算機)是相對于CISC(復雜指令系統(tǒng)計算機)而言的。RISC 并非只是簡單地去減少指令,而是通過使計算機的結(jié)構更加簡單合理而提高運算速度的。
對于初學者,建議使用ICC AVR.用ICC編輯了工程文件,然后在下載并在線仿真調(diào)試時,要用AVR studio。JTAG仿真器,作為AVR最小系統(tǒng)版和電腦的串口的鏈接點,能做到在線仿真和下載程序。這是常用的組合。
2、AVR編程方式介紹
本節(jié)將詳細介紹AVR單片機的流行編程方式,并略述其工作原理,分析其優(yōu)缺點,旨在讓AVR愛好者根據(jù)自己的需要選擇或制作恰當?shù)木幊坦ぞ摺?/p>
2.1 STK200/300并口ISP編程方式
這是比較常用的編程方式,目前大多臺式機都有打印口(并口),如圖2-1所示:
圖2.1 PC機的打印口
一般來說,PC機并口電路由74LS373(數(shù)據(jù)鎖存器)和74LS240(狀態(tài)緩沖器)組成。對于LPT1來說,數(shù)據(jù)鎖存器74LS373的I/O地址為378H,該端口稱為數(shù)據(jù)端口,而狀態(tài)緩沖器74LS240的地址為379H,該端口成為狀態(tài)端口。其中,數(shù)據(jù)端口可讀可寫,而狀態(tài)端口只可讀。根據(jù)并行接口的特點制作的AVR下載工具硬件電路簡單,配合PC端的下載軟件即可完成對AVR單片機的編程。
既然是通過串行方式編程,則需要使用AVR的SPI串行外設接口。有興趣的朋友可以學習一下通過SPI接口下載編程的時序圖(如圖2.2所示)。在這里就不贅述了。
圖2.2 SPI下載編程時序圖
了解了下載編程的時序,我們就可以在PC端編寫相應的上位機,通過并口模擬這個時序,利用AVR單片機的SPI接口對其進行編程,當下比較流行的上位機軟件是雙龍公司http://www.sl.com.cn),目前的版本為1.7.0.16,除了支持利用并口進行ISP編程(AVRISP)外,還支持USBISP,JTAGMKII等方式。如圖2.3所示。
圖2.3 雙龍ISP編程軟件
從其界面可以看出,SLISP實現(xiàn)了完整的下載功能:配置熔絲位,燒錄Flash,燒錄EEPROM等。在配置熔絲位的時候要尤其注意與AVR時鐘相關的熔絲設置,避免因選擇了錯誤的時鐘源而鎖死MCU。
有了現(xiàn)成的上位機軟件,那么這個工具的硬件是如何設計的呢?千萬不要想得太復雜,既然上位機已經(jīng)替我們完成了SPI下載時序的模擬和數(shù)據(jù)的讀寫,我們只要搭好并口和AVR 硬件SPI接口之間的“橋梁”就可以了。
目前常見的并口下載線都有一塊74HC244(如圖2.4所示),該芯片為八緩沖器,三態(tài)輸出,由目標機電源供電。該芯片有兩個輸出使能(OE)引腳(低電平有效),這樣,我們可以做到在下載時使能輸出,而下載完成后,拉高兩個OE引腳,使74HC244各緩沖器處于高阻態(tài),相當于拔除了下載線,從而真正實現(xiàn)了在線編程;除此之外,74HC244還有增大并口驅(qū)動能力的作用,如果沒有74HC244,若AVR的SPI硬件接口上接有負載元件,很有可能導致下載失敗,而有了緩沖器,驅(qū)動能力變大,就能成功下載程序。并口的引腳定義如圖2.4所示。
圖2.4 74HC244和并口DB25引腳定義
并口和AVR SPI接口的連接方式要符合PC端所使用的上位機對硬件連接的定義。雙龍SLISP要求的硬件連接方式如圖2.5所示。
圖2.5 并口ISP硬件接口連接
圖2.6 并口ISP編程器硬件原理圖
注意,硬件圖中使用并口的PIN4和PIN5作為74HC244的使能信號,以達到編程完成后隔離AVR和下載器的目的。
STK200/STK300是ATMEL公司早期推出的一種燒寫程序的方式,故而支持的AVR型號比較少,燒錄速度也比較低,且不支持AVR Studio;此外,隨著筆記本的普及和USB技術的發(fā)展,PC并口的使用頻率越來越低,所以,此類燒錄方法將會最終退出歷史舞臺。不過,由于其硬件電路簡單,編程方式實現(xiàn)容易,至今仍有很多AVR愛好者使用該方式。
2.2 STK500/AVRISP編程方式
STK500是ATMEL最推薦的編程方式,由于采用了ATMEL官方的STK500固件,該類編程工具可以燒寫全系列的AVR,燒寫速度相對并口ISP方式來說要快不少,并且,基于STK500燒錄方式的編程工具支持AVR Studio。在這里,我們介紹國外AVR發(fā)燒友制作的一款基于ATmega8和STK500燒寫方式的編程工具。
在Our AVR論壇上,馬潮老師有一篇帖子詳細說明了該工具的制作,并提供了全部資料,有興趣的朋友可以訪問AVRISP制作完整資料以獲得更多信息。該工具不支持BaseCOM AVR,ICCAVR,CodeVisionAVR直接下載,而并口ISP則可以,這不能不說是一個遺憾?;赟TK500的這款編程工具只支持AVR Studio,并且編程下載速度無法自動調(diào)節(jié),但是,時下的大多筆記本都沒有并口,所以這還是一個比較好的方案。此外,該工具需要在系統(tǒng)中安裝上層驅(qū)動,有XP和VISTA的驅(qū)動。經(jīng)測試,能夠完美支持。注意,大家要安裝微軟原版的,未經(jīng)閹割的操作系統(tǒng),否則可能造成安裝了驅(qū)動文件,但編程工具無法使用。
該編程工具的硬件電路圖如圖2.7所示。
圖2.7 AVRISP硬件電路原理圖
從硬件電路可以看出,該工具需要的外設較少:電源芯片HT7536一片,Mega8一片,晶振一枚,電阻電容若干,完全可以自制,在AVRISP制作完整資料一文中,馬潮老師也給出了固件和上層驅(qū)動,把固件燒錄入Mega8,安裝好上層驅(qū)動以后即可使用。制作完成的實物如圖2.8所示。
圖2.8 AVRISP實物圖
硬件電路制作完成后,將JP短接,使用其他的編程器(如并口ISP),將10PIN的編程接口插入AVRISP的編程口。編程前注意配置熔絲位:掉電檢測電壓為2.7V,開啟BOD,系統(tǒng)時鐘選為高頻外部晶體,滿幅振蕩。如圖2.9所示
圖2.9 AVRISP熔絲位設置
設置好熔絲位,將程序燒錄入ATmega8后,將AVRISP的USB口和PC相連,系統(tǒng)會提示發(fā)現(xiàn)新硬件,這里以Windows XP SP3為例說明驅(qū)動安裝方法,如圖2.10,圖2.11,圖2.12所示。注意選擇“從列表或指定位置安裝”
圖2.10 AVRISP驅(qū)動安裝步驟一
圖2.11 AVRISP驅(qū)動安裝步驟二
圖2.12 AVRISP驅(qū)動安裝步驟三
安裝好驅(qū)動好以后,我們可以在設備管理器中看到名為“USBASP-ISP”這個設備,也就是AVRISP編程器,該設備在“端口(COM和LPT)”分支下,上層驅(qū)動將編程器虛擬為一個串口,使用時注意將其串口號的范圍更改至“COM1~COM9”中的任意一個,如圖2.13所示。因為AVR Studio僅支持這9個串口編程設備。注意不要使用USB HUB(USB集線器)連接AVRISP,否則會造成安裝好驅(qū)動后,編程器卻無法使用的后果。
圖2.13 設備管理器中的USBASP-ISP
雙擊這個設備,可以在“端口設置”選項卡中的“高級”選項中修改其串口號。安好驅(qū)動,設置好串口以后,我們就可以使用AVR Studio來下載程序了。打開AVR Studio,選擇STK500編程方式,選擇串口號,如圖2.14所示(或點擊Tools→Program AVR→Auto Connect)。
圖2.14 使用AVR Studio下載程序
成功連接后,將彈出如圖2.15所示的對話框,注意,上文提到,該工具不能自動調(diào)節(jié)下載速度,因此,我們要手動修改下載速率,注意下載速度不能超過被編程的AVR芯片的時鐘速率的1/4,否則AVR Studio會彈出錯誤對話框提示你降低編程速度。在下拉菜單中修改好下載速度后,注意點擊Write按鈕保存設置,然后單擊Close退出。
圖2.15 AVRISP下載速率的設置
設置完成后,單擊“Program”選項卡,在“Flash”一欄,瀏覽到需要下載的*.hex文件,單擊Program,即可完成編程操作,速度還是比較快的。
評論