當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]通常進(jìn)行單片機(jī)實(shí)驗(yàn)和開發(fā),編程器是必不可少的。仿真、調(diào)試完的程序要借助編程器寫入單片機(jī)的存儲(chǔ)器中,隨著單片機(jī)技術(shù)的發(fā)展出現(xiàn)了MTP(可多次編程)存儲(chǔ)器技術(shù)和ISP(在系統(tǒng)可編程)技術(shù),這樣就可以省去昂貴的仿

通常進(jìn)行單片機(jī)實(shí)驗(yàn)和開發(fā),編程器是必不可少的。仿真、調(diào)試完的程序要借助編程器寫入單片機(jī)的存儲(chǔ)器中,隨著單片機(jī)技術(shù)的發(fā)展出現(xiàn)了MTP(可多次編程)存儲(chǔ)器技術(shù)和ISP(在系統(tǒng)可編程)技術(shù),這樣就可以省去昂貴的仿真器,只要通過計(jì)算機(jī)接口和一條串行下載線就可直接在目標(biāo)芯片上編程。ATmega8就是一種具有MTP與ISP功能的單片機(jī),他也是AVR單片機(jī)中價(jià)格性能比最高的單片機(jī),因此研究他的串行編程特性對(duì)利用他的上述功能來開發(fā)應(yīng)用單片機(jī)有很高的實(shí)用價(jià)值。

1 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)在可編程特性,使得無需購(gòu)買昂貴的仿真器,只需要一條具有編程器功能的串行下載線就可以進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開發(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í)訪問(讀寫)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ì)和開發(fā)提供了極大的方便,工程人員可以編譯完程序后直接通過編程器將程序?qū)懭隖lash存儲(chǔ)器(而無需昂貴的仿真器)。并且可以自己來設(shè)計(jì)編程器,下面就以ATmega8作為處理芯片來設(shè)計(jì)一個(gè)串行編程器,也通過這個(gè)應(yīng)用的例子來介紹一下ATmega8的具體應(yīng)用。

(1)硬件電路,串行編程器的電路原理圖如圖1所示。

從PC機(jī)的串行口通過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)程序的燒寫過程。數(shù)據(jù)由主機(jī)發(fā)送從機(jī)接收。向主機(jī)的SPI數(shù)據(jù)寄存器 SPDR裝入待發(fā)送數(shù)據(jù)的寫操作,自動(dòng)啟動(dòng)SPI時(shí)鐘發(fā)生器,于是該數(shù)據(jù)便在時(shí)鐘脈沖的控制下開始逐位左移或右移。若設(shè)定最高位MSB先傳送,主機(jī)的 MSB將自MOSI(PB3)引腳輸出,經(jīng)從機(jī)的MOSI引腳進(jìn)入其8 b移位寄存器中,占據(jù)最低位LSB的位置。同時(shí),從機(jī)的MSB由MISO(PB4)引腳移出,通過主機(jī)的MISO引腳進(jìn)入到主機(jī)移位寄存器中,作為他的 LSB位。這樣8個(gè)時(shí)鐘脈沖后,主機(jī)SPI移位寄存器中的內(nèi)容就完全送給了從機(jī)。圖2為主從機(jī)通信流程圖?! ?/p>

(3)具體的工作過程

把圖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的低電平,這可以通過軟件來實(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中所給出的串行編程命令表。

(4)軟件設(shè)計(jì)

編程器的軟件分為兩部分,即上層程序和下層程序。上層程序在PC機(jī)上運(yùn)行,用VB編寫,來完成HEX文件的發(fā)送。下層程序用C語言編寫,可通過下載線下載到ATmega8(主機(jī))中;完成接收HEX文件和寫入、讀及擦除功能。

寫芯片下層程序?qū)EX文件傳送給ATmega8。HEX文件的文件結(jié)構(gòu)是由匯編程序的指令并用ASCII碼表示的文本文件,他由若干數(shù)據(jù)幀組成,每幀的結(jié)構(gòu)順序?yàn)椋簲?shù)據(jù)長(zhǎng)度、高位地址、低位地址、數(shù)據(jù)屬性、數(shù)據(jù)及校驗(yàn)和。因?yàn)锳SCII碼是一個(gè)4位的二進(jìn)制數(shù),每2個(gè)ASCII碼合起來才能用1 B表示,所以要先把HEX文件轉(zhuǎn)換后,再發(fā)送。發(fā)送過程中對(duì)數(shù)據(jù)的校驗(yàn)和是由每一幀的校驗(yàn)和與該幀的最后兩位相比較完成的。下層程序完成接收HEX文件和寫目標(biāo)芯片,其過程為先接收HEX文件存儲(chǔ)于數(shù)據(jù)緩沖區(qū),根據(jù)地址將數(shù)據(jù)寫入目標(biāo)芯片的存儲(chǔ)器中,數(shù)據(jù)存放以高位地址、低位地址和數(shù)據(jù)為順序存放,所以在讀取時(shí)要嚴(yán)格按順序讀取。寫程序的流程圖如圖3所示。

讀芯片 讀芯片的過程是通過編程器將目標(biāo)芯片中的數(shù)據(jù)送PC機(jī),PC機(jī)收到數(shù)據(jù)后保存在一個(gè)文件里。下層用C編寫控制主機(jī)從從機(jī)讀取數(shù)據(jù),上層用VB實(shí)現(xiàn),調(diào)用MSCOMM和COMMDIAL即可完成對(duì)數(shù)據(jù)的接收及存儲(chǔ)。讀芯片的流程圖如圖4所示。

在數(shù)據(jù)的傳送過程中,要絕對(duì)保證數(shù)據(jù)不丟失。通常采用2種方法:一種是延時(shí),即寫入數(shù)據(jù)后等待一段時(shí)間再寫入下一個(gè)數(shù)據(jù);另一種是采用數(shù)據(jù)校驗(yàn)技術(shù),就是在寫入數(shù)據(jù)后再讀數(shù)據(jù)然后判斷是否正確寫入。但是這兩種方法都存在缺陷,第1種時(shí)間太長(zhǎng)并且不能保證寫入數(shù)據(jù)的完全正確,第2種方法當(dāng)要寫入的數(shù)據(jù)和程序存儲(chǔ)器的原始數(shù)據(jù)相同時(shí)就判斷失效??梢园堰@兩種方法有機(jī)地結(jié)合起來,從而保證數(shù)據(jù)不丟失。具體的過程如下:

當(dāng)向Flash的某一地址寫入數(shù)據(jù)時(shí),當(dāng)一個(gè)數(shù)據(jù)寫入完畢,允許寫下一個(gè)數(shù)據(jù)時(shí),讀取這一地址的數(shù)據(jù),如果讀到的數(shù)據(jù)不是0xFF(程序被擦除后,存儲(chǔ)單元里的數(shù)據(jù)都為0xFF),就再繼續(xù)接著向存儲(chǔ)器里寫數(shù)據(jù),如果讀到的數(shù)據(jù)是0xFF,就再重新寫數(shù)據(jù)再校驗(yàn)。但是當(dāng)要向存儲(chǔ)器里寫的數(shù)據(jù)正好是 0xFF時(shí),用這種方法就出錯(cuò),這時(shí)可以通過程序控制在檢驗(yàn)到讀出數(shù)據(jù)為0xFF時(shí),再連續(xù)實(shí)行2次這樣的操作,如果讀出數(shù)據(jù)還是0xFF,就采取延時(shí)的方法處理后,再接著進(jìn)行對(duì)Flash的操作。

擦除芯片 對(duì)芯片擦除就是對(duì)芯片重新固化??梢酝ㄟ^控制編程引腳高低電平來實(shí)現(xiàn),但是加控制信號(hào)時(shí)間太短的話,無法擦除干凈,如果過長(zhǎng)就容易燒壞芯片。

其實(shí)擦除的結(jié)果是所有地址里的數(shù)據(jù)都為0xFF,這樣也就是說可以通過向存儲(chǔ)器里寫0xFF操作來實(shí)現(xiàn)擦除,本設(shè)計(jì)采取這種方法就避免了因?yàn)檫x擇控制信號(hào)時(shí)間不合適而導(dǎo)致的一些問題。

3 結(jié) 語

本文介紹了ATmega8這款A(yù)VR高檔單片機(jī),并論述了他的串行下載特性和串行編程器的工作原理;同時(shí)提出了新的串行編程數(shù)據(jù)校驗(yàn)方法和程序擦除方法。MTP(可多次編程)和ISP(在系統(tǒng)編程)技術(shù)給單片機(jī)應(yīng)用系統(tǒng)開發(fā)提供了很大的方便和靈活性,利用這兩種技術(shù)可以直接在電路板上反復(fù)進(jìn)行下載調(diào)試,甚至可以實(shí)現(xiàn)遠(yuǎn)程在線升級(jí),因此對(duì)單片機(jī)編程特性的研究有很高的實(shí)用價(jià)值。

參考文獻(xiàn)
[1] 馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應(yīng)用手冊(cè)[M].北京:清華大學(xué)出版社,2003.
[2] 李勛,耿德根.AVR單片機(jī)應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2002.
[3] 石東海.單片機(jī)數(shù)據(jù)通信技術(shù)從入門到精通[M].西安:西安電子科技大學(xué)出版社,2002.
[4] 張俊濤.具有ISP功能的單片AT89S8252[J].現(xiàn)代電子技術(shù),2001,(8).
[5] 馬書雷.AVR單片機(jī)編程特性的應(yīng)用研究[J].微型機(jī)與應(yīng)用,2000,(9).

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉