隨著微控制器應用領域的不斷擴展和深入,越來越多種類的微控制器具有ISP(In System Programming,在系統編程)功能。使用ISP可以使工廠在產品設計、制造過程中不必把微控制器從目標板中拔出,通過I2C實現在線體上程序升級。目前,在國內一線工廠,主設備(上位機)一般都用PC,這樣不僅浪費資源,而且靈活性較差;同時由于在線體上只能對單個從設備進行程序更新,嚴重影響了工廠的生產效率。為此,本文設計了一種基于MTV412微控制器的1對8的ISP系統,主設備采用Myson公司的MTV412,可以同時對8臺從設備進行在線程序更新。
目前,51內核的微控制器ISP模式一般分為兩大類:一類是使用JTAG協議的ISP模式;另一類:ISP模式是使用一條特殊的指令,使單片機進入ISP。在進入ISP模式后,要自己控制對單片機的擦除寫入邏輯。這一類模式又可細分為2種不同的模式:①進入ISP模式后,單片機只提供一個接口,不再運行從設備的程序,擦寫邏輯全由主設備提供,本系統中MTV412和MTV312就屬于這種模式;②進入ISP模式以后,從設備會運行在某一區域已經編寫的程序,芯片的編程邏輯都由芯片中這段程序控制,主設備只是作為單片機的一個數據源,向單片機傳輸要擦寫的數據,如Winbond公司的W79E632。
1 背景介紹
1.1 MTV412和MTV312
MTV412和MTV312是臺灣Myson公司的產品,主要是面向LCD Monitor和LCD TV的視頻控制IC。該款芯片可以滿足視頻應用中的控制需求,因而被廣泛應用于視頻類產品中,在本系統中,主設備采用的是128 KBMTV412微控制器。從設備采用MTV312,是64 KB的帶有ISP功能的51系列8位微控制器。
1.2 編譯環境Keil C51
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統。它是一種專門為805l單片機設計的高效率的C語言編譯器,符合ANSI標準,生產的程序代碼運行速度極高,所需要的存儲空間極小,完全可以和匯編語言相媲美。Cx51已被完全集成到一個功能強大的全新集成開發環境uVision2中。uVision2提供了強大的項目管理功能,可以十分方便地進行結構化多模塊程序設計。本系統主設備的源代碼通過Keil C51編譯獲得燒寫所需的HEX或者BIN文檔。
1.3 切換Bank原理
傳統的51系列單片機是8位的,因此它最多可以訪問64 KB地址空間,如果要用51系列的單片機訪問128KB的空間,那么就必須用切換Bank的方法。一個Bank是64 KB,通過外部的硬件來選擇對應的Bank。本系統中,MTV412就是通過切換Bank的方法來在線升級ISP從設備程序的。MTV412切換Bank是通過P3.5完成的。通過設置P3.5不同的電平,切換到不同的Bank區域,如果要進行4個Bank的切換,必須要由2個端口來控制。圖1為MTV412的128 KB的存儲空間分配。其中:Common區域用于存放上電復位程序、中斷向量、全局變量、中斷函數、切換Bank程序和庫函數等;Bank區域用于存放一些不同的應用函數。


系統架構如圖3所示。首先,將從設備MTV312的文件通過Keil C51生成64 KB的HEX或者BIN文檔;然后,再把主設備MTV412的文件通過Keil C5l生成128 KB的HEX或者BIN文檔;最后,把從設備MTV312的BIN或者HEX分成兩個32 KB,分別放在主設備MTV412 128 KB的8000H和18000H開始的位置。文件的地址空間分配如圖4所示。


2.1 硬件實現
主設備MTV412的硬件電路如圖5所示。P6口作為SCL,P1作為SDA。因為P6是單向口,P1是雙向口,SDA不僅要輸出數據,還要接收ACK。P1對應8個從設備的SDA,P6對應8個從設備的SCL。MTV412的多功能口P3.0和P3.1既可以作為普通的I/O口,也可以作為I2C的SCL和SDA,或者串口RXD和TXD。本系統設為I2C端口,可以通過PC直接更新MTV412上的程序。

主設備MTV412有128 KB的Flash空間。其中,Bank0(32 KB)和Bankl(32 KB)存儲對應的從設備MTV312的程序數據和調用函數func0和funcl。Com- mon區域放置與從設備通信的程序,模擬ISP過程。在main函數中通過調用func0和func1,把對應的Bank0和Bank1從8000H開始的內容放入緩存區,每次讀取256字節,然后在Common區中進行ISP。
ISP時,從設備64 KB程序數據分成256個block,每個block為256字節。
ISP過程如圖6所示。





