|
以ATMEL公司的AT89S51/AT89S52單片機為例,介紹ISP技術(shù)原理,及ISP在線編程器的實現(xiàn)方法。 AT89S51/AT89S52單片機的ISP引腳共有4個:RST、MOSI、MISO和SCK。 各引腳的功能如下:RST為在線編程輸入控制端,僅在ISP下載過程中保持高電平,在系統(tǒng)正常工作時該引腳為系統(tǒng)復(fù)位端,保持低電平狀態(tài)。MOSI為主機輸出/從機輸入的數(shù)據(jù)端,系統(tǒng)正常工作時,該引腳為通用I/OP1.5口線。MISO為主機輸入/從機輸出的數(shù)據(jù)端。系統(tǒng)正常工作時,該引腳為通用1/0P1.6口線。SCK為串行編程的時鐘端,可實現(xiàn)主、從機時序的同步,該時鐘頻率不得超過系統(tǒng)時鐘的1/16。 系統(tǒng)正常工作時,該引腳為通用I/OPl.7口線。AT89S51/AT89S52單片機的ISP引腳功能如下圖所示。 
ISP下載是基于串行傳輸方式,并且符合SPI協(xié)議。在SPI協(xié)議中,數(shù)據(jù)的發(fā)送和接收是同步進行的,即在同步時鐘的作用下,在發(fā)送數(shù)據(jù)的同時也接收數(shù)據(jù)。 ISP的時序如下圖所示。每一字節(jié)的數(shù)據(jù)都是低位在先,高位在后,在串行時鐘的作用下逐位傳輸。在傳輸過程中,數(shù)據(jù)是在時鐘輸入端為高電平時有效,在時鐘輸入端低電平時更新數(shù)據(jù),在編寫ISP下載程序時務(wù)必注意這一點。

ISP下載功能的指令集如下表所示。

使用上述指令時,需注意以下事項: 1.要進行ISP編程,首先要確保RST引腳為高電平,且該高電平一直持續(xù)到整個編程過程結(jié)束。 2.ISP編程操作是通過不同的指令實現(xiàn)的,以編程使能命令作為其他命令的前導(dǎo)命令,必須首先執(zhí)行編程使能命令,再執(zhí)行其他命令。例如要擦除芯片,首先執(zhí)行編程使能命令,然后執(zhí)行芯片擦除命令,這樣才能完成操作擦除。 3.各個命令有自己的格式,使用不同命令時,必須嚴(yán)格按照命令的格式進行,例如在芯片擦除命令中,雖然有2個多字節(jié)可為任意數(shù)據(jù),但也要發(fā)送。 4.ISP數(shù)據(jù)傳輸符合SPI協(xié)議,雖然在發(fā)送數(shù)據(jù)的同時也接收數(shù)據(jù),但接收數(shù)據(jù)的取舍是由用戶決定。 5.在ISP編程中尤其是寫Flash的過程中,最好不要被意外情況中斷,比如斷電,或者RST引腳電壓變低,這樣容易造成芯片內(nèi)部的Flash永久性損壞。
AT89S51/AT89S52單片機的在線編程(ISP)電路設(shè)計如下:計算機并行接口共有25個口線,豐要包括數(shù)據(jù)端口DOD7(端口發(fā)地址為378H,用于數(shù)據(jù)輸出);狀態(tài)端口Busy、nAck.PE、Select、nError(端口地址為379H,用于數(shù)據(jù)輸入);控制端口nSelin、nlnit、AnrtoFeed、nStrobe(端口地址為37AH,用于輸出控制)。從中選出4個口線來模擬ISP所需的引腳,非常靈活,只需考慮數(shù)據(jù)的輸入、輸出方向及操作方便,但要注意同一端口的數(shù)據(jù)方向必須一致,例如數(shù)據(jù)端口是8位同時操作的,只能全部作為輸入或輸出,而不能將一部分作輸入,另一端分作輸出。電路下圖可實現(xiàn)ISP(在系統(tǒng)編程)的功能。 該電路在計算機并行接口部分,用第⑥腳模擬SCK、第⑦腳模擬MOSI,第⑨腳模擬RST、第⑩腳模擬MISO。用第④腳來控制驅(qū)動隔離電路SN74AS244的使能端。注意不同端口操作地址不同,這涉及程序的編寫。下圖中UIB的引腳A2、A3、A4并接是為了增大驅(qū)動能力,上拉電阻是為了確保空閑時的電平狀態(tài)。該電路制作出的實物如右圖所示。 不同的在線編程電路對應(yīng)于不同的硬件電路,在程序?qū)崿F(xiàn)上也有區(qū)別。本文的硬件電路設(shè)計完全依照共享軟件Easy51Pro來完成設(shè)計的,故可上網(wǎng)下載此共享軟件來實現(xiàn)在線編程,并目,下載后無須安裝即可直接運行該程序以實現(xiàn)ISP(在線編程)的功能。 
|