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