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