基於單片機ISP技術原理及在線編程器的實現


以ATMEL公司的AT89S51/AT89S52單片機為例,介紹ISP技術原理,及ISP在線編程器的實現方法。
  
  AT89S51/AT89S52單片機的ISP引腳共有4個:RST、MOSI、MISO和SCK。
  
  各引腳的功能如下:RST為在線編程輸入控制端,僅在ISP下載過程中保持高電平,在系統正常工作時該引腳為系統復位端,保持低電平狀態。MOSI為主機輸出/從機輸入的數據端,系統正常工作時,該引腳為通用I/OP1.5口線。MISO為主機輸入/從機輸出的數據端。系統正常工作時,該引腳為通用1/0P1.6口線。SCK為串行編程的時鍾端,可實現主、從機時序的同步,該時鍾頻率不得超過系統時鍾的1/16。
  
  系統正常工作時,該引腳為通用I/OPl.7口線。AT89S51/AT89S52單片機的ISP引腳功能如下圖所示。


  
  ISP下載是基於串行傳輸方式,並且符合SPI協議。在SPI協議中,數據的發送和接收是同步進行的,即在同步時鍾的作用下,在發送數據的同時也接收數據。
  
  ISP的時序如下圖所示。每一字節的數據都是低位在先,高位在后,在串行時鍾的作用下逐位傳輸。在傳輸過程中,數據是在時鍾輸入端為高電平時有效,在時鍾輸入端低電平時更新數據,在編寫ISP下載程序時務必注意這一點。


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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM