用ATmega8單片機(jī)設(shè)計(jì)串行編程器
通常進(jìn)行單片機(jī)實(shí)驗(yàn)和開(kāi)發(fā),編程器是必不可少的。仿真、調(diào)試完的程序要借助編程器寫入單片機(jī)的存儲(chǔ)器中,隨著單片機(jī)技術(shù)的發(fā)展出現(xiàn)了MTP(可多次編程)存儲(chǔ)器技術(shù)和ISP(在系統(tǒng)可編程)技術(shù),這樣就可以省去昂貴的仿真器,只要通過(guò)計(jì)算機(jī)接口和一條串行下載線就可直接在目標(biāo)芯片上編程。ATmega8就是一種具有MTP與ISP功能的單片機(jī),他也是AVR單片機(jī)中價(jià)格性能比最高的單片機(jī),因此研究他的串行編程特性對(duì)利用他的上述功能來(lái)開(kāi)發(fā)應(yīng)用單片機(jī)有很高的實(shí)用價(jià)值。
本文引用地址:http://m.butianyuan.cn/article/172124.htm1 ATmega8的體系結(jié)構(gòu)與主要性能特點(diǎn)
ATmega8是ATMEL公司在2002年推出的一款新型的AVR高檔單片機(jī),他的芯片內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路,具備 AVR高檔單片機(jī)MEGE系列的全部性能和特點(diǎn)。但由于采用了小引腳封裝(為 DIP28和TQFP/MLF32),所以價(jià)格僅和低檔單片機(jī)相當(dāng),再加上AVR單片機(jī)的系統(tǒng)內(nèi)在可編程特性,使得無(wú)需購(gòu)買昂貴的仿真器,只需要一條具有編程器功能的串行下載線就可以進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)。
ATmega8是一款采用低功耗CMOS工藝生產(chǎn)的基于AVR RISC(精簡(jiǎn)指令集)結(jié)構(gòu)的8 b單片機(jī)。AVR單片機(jī)的核心是將32個(gè)工作寄存器和豐富的指令集連接在一起,所有的工作寄存器都與ALU(算術(shù)邏輯單元)直接相連,實(shí)現(xiàn)了在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行的一條指令同時(shí)訪問(wèn)(讀寫)2個(gè)獨(dú)立寄存器的操作。這種結(jié)構(gòu)提高了代碼效率,使得大部分指令的執(zhí)行時(shí)間僅為一個(gè)時(shí)鐘周期。因此,ATmega8可以達(dá)到將近1 MIPS/MHz的性能,運(yùn)行速度比普通的單片機(jī)高出10倍。
ATmega8的主要性能特點(diǎn)如下:
(1)高性能、低功耗的8 b AVR微控制器,先進(jìn)的RISC精簡(jiǎn)指令集結(jié)構(gòu),130條功能強(qiáng)大的指令,大多數(shù)為單周期指令,32個(gè)8 b的通用工作寄存器,工作在16 MHz時(shí)具有16 MIPS的性能。
(2)片內(nèi)集成了較大容量的非易失性程序和數(shù)據(jù)存儲(chǔ)器
8 kB的Flash程序存儲(chǔ)器,可擦寫次數(shù)大于10 000次;512 B的E2RROM,擦寫次數(shù)至少100 000次;支持可在線編程(ISP)和可應(yīng)用自編程(IAP);可編程的程序加密位。
(3)豐富強(qiáng)大的外部接口性能
3個(gè)PWM通道,可實(shí)現(xiàn)任意16 b以內(nèi)的、相位和頻率可調(diào)的PWM脈寬調(diào)制輸出;6通道A/D轉(zhuǎn)換;一個(gè)I2C的串行接口,一個(gè)可編程的USART接口;一個(gè)支持主/從、收/發(fā)的SPI同步串行接口;2個(gè)帶預(yù)分頻的8 b定時(shí)/計(jì)數(shù)器,1個(gè)帶預(yù)分頻的16 b定時(shí)/計(jì)數(shù)
(4)特殊的微控制器性能
可控制的上電復(fù)位延時(shí)電路和可編程的欠電壓檢測(cè)電路;內(nèi)部和外部共18個(gè)中斷源;5種休眠模式(空閑,ADC噪聲抑制,省電,掉電,待命)。
2 串行編程器的設(shè)計(jì)
從上面的描述我們就對(duì)ATmega8有了一個(gè)總體的認(rèn)識(shí),ATmega8的在線可編程功能為單片機(jī)的設(shè)計(jì)和開(kāi)發(fā)提供了極大的方便,工程人員可以編譯完程序后直接通過(guò)編程器將程序?qū)懭隖lash存儲(chǔ)器(而無(wú)需昂貴的仿真器)。并且可以自己來(lái)設(shè)計(jì)編程器,下面就以ATmega8作為處理芯片來(lái)設(shè)計(jì)一個(gè)串行編程器,也通過(guò)這個(gè)應(yīng)用的例子來(lái)介紹一下ATmega8的具體應(yīng)用。
(1)硬件電路,串行編程器的電路原理圖如圖1所示。
從PC機(jī)的串行口通過(guò)RS232引出3條線:RXD,TXD,GND用于PC機(jī)與ATmega8的通信。最右端的5條線分別與要寫入程序的芯片相連。
(2)串行編程器的工作原理
ATmega8的同步串行接口SPI允許在幾個(gè)AVR單片機(jī)之間,以與SPI接口協(xié)議兼容的方式進(jìn)行高速的同步數(shù)據(jù)傳輸。因此可以把串行編程器的處理芯片設(shè)計(jì)為主機(jī),目標(biāo)芯片就作為從機(jī),這樣就可以實(shí)現(xiàn)2個(gè)單片機(jī)的數(shù)據(jù)傳輸,從而實(shí)現(xiàn)程序的燒寫過(guò)程。數(shù)據(jù)由主機(jī)發(fā)送從機(jī)接收。向主機(jī)的SPI數(shù)據(jù)寄存器 SPDR裝入待發(fā)送數(shù)據(jù)的寫操作,自動(dòng)啟動(dòng)SPI時(shí)鐘發(fā)生器,于是該數(shù)據(jù)便在時(shí)鐘脈沖的控制下開(kāi)始逐位左移或右移。若設(shè)定最高位MSB先傳送,主機(jī)的 MSB將自MOSI(PB3)引腳輸出,經(jīng)從機(jī)的MOSI引腳進(jìn)入其8 b移位寄存器中,占據(jù)最低位LSB的位置。同時(shí),從機(jī)的MSB由MISO(PB4)引腳移出,通過(guò)主機(jī)的MISO引腳進(jìn)入到主機(jī)移位寄存器中,作為他的 LSB位。這樣8個(gè)時(shí)鐘脈沖后,主機(jī)SPI移位寄存器中的內(nèi)容就完全送給了從機(jī)。圖2為主從機(jī)通信流程圖?! ?/p>
(3)具體的工作過(guò)程
把圖2的ATmega8設(shè)為主機(jī),PB3(MOSI),PB4(MISO),PB6(SCK),PB1管腳用于控制對(duì)目標(biāo)芯片的寫入。PB1引腳控制單片機(jī)的Reset,只有當(dāng) Reset被拉為低時(shí)單片機(jī)才進(jìn)入串行編程模式。從機(jī)的所有I/O引腳都處于輸入狀態(tài)且上拉電阻被禁止。PB6(SCK)引腳用于提供串行編程的時(shí)鐘,他在上電期間必須為低電平,這樣才能保證主機(jī)芯片和從機(jī)芯片的87時(shí)鐘同步,因此上電期間給Reset一個(gè)正脈沖(至少2個(gè) XTAL1時(shí)鐘周期)以保證SCK的低電平,這可以通過(guò)軟件來(lái)實(shí)現(xiàn)。PB3(MOSI)引腳用于將程序送入從機(jī)中。數(shù)據(jù)在SCK的上升沿被輸入,從機(jī)的 Reset被拉低后,總是將他的MOSI設(shè)為上拉禁止的輸入狀態(tài),用于從主機(jī)接收數(shù)據(jù)。當(dāng)從從機(jī)中讀取數(shù)據(jù)時(shí),數(shù)據(jù)在SCK的下降沿輸出。設(shè)計(jì)硬件時(shí)要保證從機(jī)的Reset,SCK,MOSI,MISO這4根線能被編程器自由地置高置低,否則不可能進(jìn)行在片編程。具體的命令字格格式可參照ATmega8 manual中所給出的串行編程命令表。
評(píng)論