SI-PROG編程器的工作原理及其程序設(shè)計(jì)
根據(jù)文獻(xiàn)[2],長(zhǎng)城0520 PC-XT機(jī)上SN75154的閾值電壓控制端T3接到+5 V。這樣,SI-PROG編程器就不能工作。計(jì)算機(jī)硬件發(fā)展到今天,UART-般均升級(jí)為16550,它與打印機(jī)并口、鍵盤(pán)控制器等電路一起集成于LPC芯片內(nèi),16550仍與8250相兼容。驅(qū)動(dòng)器和接收器也都集成到一個(gè)芯片內(nèi),如75232,75185。這些芯片的接收器不再采用圖4中曲線a那樣的閾值電壓,而改為與曲線b相接近的情況。表1為3臺(tái)PC機(jī)閾值電壓的實(shí)驗(yàn)測(cè)量結(jié)果。表中,典型值為芯片數(shù)據(jù)手冊(cè)中的數(shù)據(jù),實(shí)驗(yàn)值為實(shí)驗(yàn)測(cè)量結(jié)果。顯然,3臺(tái)PC機(jī)上,SI-PROG編程器都能正常工作。
2 下載程序設(shè)計(jì)
根據(jù)式(1),用輸出指令向3FBH端口寫(xiě)入40H,將使RESET端置低電平,寫(xiě)入00H,使RESET端置高電平;根據(jù)式(2),式(3)。向3FCH端口寫(xiě)入數(shù)據(jù),改變其D1位的數(shù)值,就可改變SCK端的電平,改變D0位的數(shù)值,即改變MOSI的電平;根據(jù)式(4),用輸入指令讀取3FEH端口,讀取字節(jié)的D4位為MISO返回的數(shù)據(jù)位。
根據(jù)AVR單片機(jī)的串行下載算法,發(fā)送串行編程指令的操作步驟為:進(jìn)入串行下載模式;發(fā)送編程使能指令;執(zhí)行所需的讀、寫(xiě)等操作指令,可執(zhí)行一條,也可執(zhí)行多條;退出串行編程模式。
(1)進(jìn)入串行下載模式。保持SCK端為低電平,給RESET端發(fā)送一個(gè)大于兩個(gè)時(shí)鐘周期的正脈沖,AVR單片機(jī)便進(jìn)入串行下載模式。
(2)發(fā)送串行編程指令。根據(jù)圖2,一個(gè)SCK時(shí)鐘周期可分4個(gè)步驟:輸出位數(shù)據(jù)到MOSI線,延時(shí);令SCK由0變1,延時(shí);讀取MISO線上的數(shù)據(jù)位;令SCK由1變0,延時(shí)。前兩個(gè)步驟寫(xiě)一位數(shù)據(jù)到AVR,后兩個(gè)步驟則從AVR讀取1位數(shù)據(jù)。8個(gè)SCK時(shí)鐘周期寫(xiě)1個(gè)字節(jié),同時(shí)讀一個(gè)字節(jié)。AVR單片機(jī)每條編程指令均由4個(gè)字節(jié)組成。根據(jù)上述過(guò)程,將4個(gè)字節(jié)的編程指令依次寫(xiě)入到AVR,同時(shí)讀取返回的4個(gè)字節(jié)數(shù)據(jù)。
(3)退出串行編程模式。將RESET端置高電平,AVR單片機(jī)退出編程模式。
3 結(jié) 語(yǔ)
根據(jù)上述分析,采用VC++6.O編程成功地對(duì)ATtinyl3和ATmegal6兩種芯片的FLASH進(jìn)行了芯片擦除、讀、寫(xiě)以及對(duì)熔絲位的讀、寫(xiě)等操作。注意編程時(shí)需要解決Windows NT/2000,/XP操作系統(tǒng)下訪問(wèn)I/O端口的技術(shù)問(wèn)題。
使用SI-PROG編程器,必須滿足兩個(gè)條件:
(1)串口的UART芯片要與8250兼容;
(2)電平轉(zhuǎn)換芯片接收器的閾值電壓要介于TTL高、低兩種電平之間。
多數(shù)PC機(jī)所配置的串口都能滿足上述兩個(gè)條件。某些早期的PC機(jī)有可能與PC/XT機(jī)類(lèi)似,不滿足條件(1)。目前,家用筆記本電腦上一般不再配置串口。這樣,SI-PROG編程器在某些PC機(jī)上不能使用。然而,SI-PROG編程器仍有一定的使用空間。畢竟LISB接口的編程器價(jià)格較高,而一些商用筆記本電腦中取消了并口但保留著串口,并口編程器又不能用。而多數(shù)臺(tái)式機(jī)上一般仍配置有串口。
評(píng)論