《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于MTV412微控制器1對(duì)8的ISP系統(tǒng)
基于MTV412微控制器1對(duì)8的ISP系統(tǒng)
單片機(jī)及嵌入式系統(tǒng)應(yīng)用
左瑞娟 武永華
摘要: 隨著微控制器應(yīng)用領(lǐng)域的不斷擴(kuò)展和深入,越來越多種類的微控制器具有ISP(In System Programming,在系統(tǒng)編程)功能。使用ISP可以使工廠在產(chǎn)品設(shè)計(jì)、制造過程中不必把微控制器從目標(biāo)板中拔出,,通過I2C實(shí)現(xiàn)在線體上程序升級(jí),。目前,,在國(guó)內(nèi)一線工廠,,主設(shè)備(上位機(jī))一般都用PC,,這樣不僅浪費(fèi)資源,而且靈活性較差,;同時(shí)由于在線體上只能對(duì)單個(gè)從設(shè)備進(jìn)行程序更新,,嚴(yán)重影響了工廠的生產(chǎn)效率。為此,,本文設(shè)計(jì)了一種基于MTV412微控制器的1對(duì)8的ISP系統(tǒng),,主設(shè)備采用Myson公司的MTV412,可以同時(shí)對(duì)8臺(tái)從設(shè)備進(jìn)行在線程序更新,。
Abstract:
Key words :

引 言

隨著微控制器應(yīng)用領(lǐng)域的不斷擴(kuò)展和深入,,越來越多種類的微控制器具有ISP(In System Programming,在系統(tǒng)編程)功能,。使用ISP可以使工廠在產(chǎn)品設(shè)計(jì),、制造過程中不必把微控制器從目標(biāo)板中拔出,通過I2C實(shí)現(xiàn)在線體上程序升級(jí),。目前,,在國(guó)內(nèi)一線工廠,主設(shè)備(上位機(jī))一般都用PC,,這樣不僅浪費(fèi)資源,,而且靈活性較差;同時(shí)由于在線體上只能對(duì)單個(gè)從設(shè)備進(jìn)行程序更新,,嚴(yán)重影響了工廠的生產(chǎn)效率,。為此,本文設(shè)計(jì)了一種基于MTV412微控制器的1對(duì)8的ISP系統(tǒng),,主設(shè)備采用Myson公司的MTV412,,可以同時(shí)對(duì)8臺(tái)從設(shè)備進(jìn)行在線程序更新。

目前,,51內(nèi)核的微控制器ISP模式一般分為兩大類:一類是使用JTAG協(xié)議的ISP模式,;另一類:ISP模式是使用一條特殊的指令,使單片機(jī)進(jìn)入ISP,。在進(jìn)入ISP模式后,,要自己控制對(duì)單片機(jī)的擦除寫入邏輯。這一類模式又可細(xì)分為2種不同的模式:①進(jìn)入ISP模式后,,單片機(jī)只提供一個(gè)接口,,不再運(yùn)行從設(shè)備的程序,擦寫邏輯全由主設(shè)備提供,,本系統(tǒng)中MTV412和MTV312就屬于這種模式,;②進(jìn)入ISP模式以后,,從設(shè)備會(huì)運(yùn)行在某一區(qū)域已經(jīng)編寫的程序,芯片的編程邏輯都由芯片中這段程序控制,,主設(shè)備只是作為單片機(jī)的一個(gè)數(shù)據(jù)源,,向單片機(jī)傳輸要擦寫的數(shù)據(jù),如Winbond公司的W79E632,。

1 背景介紹

1.1 MTV412和MTV312

MTV412和MTV312是臺(tái)灣Myson公司的產(chǎn)品,,主要是面向LCD Monitor和LCD TV的視頻控制IC。該款芯片可以滿足視頻應(yīng)用中的控制需求,,因而被廣泛應(yīng)用于視頻類產(chǎn)品中,,在本系統(tǒng)中,主設(shè)備采用的是128 KBMTV412微控制器,。從設(shè)備采用MTV312,,是64 KB的帶有ISP功能的51系列8位微控制器,。

1.2 編譯環(huán)境Keil C51

Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),。它是一種專門為805l單片機(jī)設(shè)計(jì)的高效率的C語言編譯器,符合ANSI標(biāo)準(zhǔn),,生產(chǎn)的程序代碼運(yùn)行速度極高,,所需要的存儲(chǔ)空間極小,完全可以和匯編語言相媲美,。Cx51已被完全集成到一個(gè)功能強(qiáng)大的全新集成開發(fā)環(huán)境uVision2中,。uVision2提供了強(qiáng)大的項(xiàng)目管理功能,可以十分方便地進(jìn)行結(jié)構(gòu)化多模塊程序設(shè)計(jì),。本系統(tǒng)主設(shè)備的源代碼通過Keil C51編譯獲得燒寫所需的HEX或者BIN文檔,。

1.3 切換Bank原理

傳統(tǒng)的51系列單片機(jī)是8位的,因此它最多可以訪問64 KB地址空間,,如果要用51系列的單片機(jī)訪問128KB的空間,,那么就必須用切換Bank的方法。一個(gè)Bank是64 KB,,通過外部的硬件來選擇對(duì)應(yīng)的Bank,。本系統(tǒng)中,MTV412就是通過切換Bank的方法來在線升級(jí)ISP從設(shè)備程序的,。MTV412切換Bank是通過P3.5完成的,。通過設(shè)置P3.5不同的電平,切換到不同的Bank區(qū)域,,如果要進(jìn)行4個(gè)Bank的切換,,必須要由2個(gè)端口來控制。圖1為MTV412的128 KB的存儲(chǔ)空間分配,。其中:Common區(qū)域用于存放上電復(fù)位程序,、中斷向量,、全局變量、中斷函數(shù),、切換Bank程序和庫函數(shù)等,;Bank區(qū)域用于存放一些不同的應(yīng)用函數(shù)。

如圖2所示,,本系統(tǒng)把MTV412的128 KB Falsh分為Bank0和Bankl,,大小各40 KB。在Keil C51編輯器中,,必須加入L51_BANK.A51匯編文件,,它包含系統(tǒng)的Bank數(shù)目和切換Bank調(diào)用的函數(shù)和端口。

 

2 系統(tǒng)構(gòu)架

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



通過PC或者燒錄器直接把程序燒錄到MTV412上,。這樣MTV412就可以脫離PC,,通過I2C直接對(duì)從設(shè)備在生產(chǎn)線體上進(jìn)行ISP。

2.1 硬件實(shí)現(xiàn)

主設(shè)備MTV412的硬件電路如圖5所示,。P6口作為SCL,,P1作為SDA。因?yàn)镻6是單向口,,P1是雙向口,,SDA不僅要輸出數(shù)據(jù),還要接收ACK,。P1對(duì)應(yīng)8個(gè)從設(shè)備的SDA,,P6對(duì)應(yīng)8個(gè)從設(shè)備的SCL。MTV412的多功能口P3.0和P3.1既可以作為普通的I/O口,,也可以作為I2C的SCL和SDA,,或者串口RXD和TXD。本系統(tǒng)設(shè)為I2C端口,,可以通過PC直接更新MTV412上的程序,。

2.2 軟件實(shí)現(xiàn)

主設(shè)備MTV412有128 KB的Flash空間。其中,,Bank0(32 KB)和Bankl(32 KB)存儲(chǔ)對(duì)應(yīng)的從設(shè)備MTV312的程序數(shù)據(jù)和調(diào)用函數(shù)func0和funcl,。Com- mon區(qū)域放置與從設(shè)備通信的程序,,模擬ISP過程。在main函數(shù)中通過調(diào)用func0和func1,,把對(duì)應(yīng)的Bank0和Bank1從8000H開始的內(nèi)容放入緩存區(qū),,每次讀取256字節(jié),然后在Common區(qū)中進(jìn)行ISP,。

ISP時(shí),,從設(shè)備64 KB程序數(shù)據(jù)分成256個(gè)block,每個(gè)block為256字節(jié),。

ISP過程如圖6所示,。

 

①進(jìn)入ISP:發(fā)送I2C start→發(fā)送0x4C→發(fā)送0x77→發(fā)送I2C stop。

②清除Flash(硬件清除Flash):發(fā)送I2C start→發(fā)送0x7C→發(fā)送0x68和0x00→發(fā)送0x7C→發(fā)送0x00,,0x00→delay 1 s→發(fā)送I2C stop,。

③清除CRC寄存器:發(fā)送I2Cstart→發(fā)送0x7c→發(fā)送0xD0→發(fā)送I2C stop。

④Flash編程:發(fā)送I2C start→發(fā)送0x7C→發(fā)送0xA0,,block起始地址(0x00~0xff)→發(fā)送I2C stop→循環(huán)256次(發(fā)送I2C start→發(fā)送地址0x00→發(fā)送256字節(jié)數(shù)據(jù)→發(fā)送I2C stop),。

⑤校驗(yàn)CRC:發(fā)送I2C start→發(fā)送0x7C→接收4字節(jié)CRC校驗(yàn)值→與軟計(jì)算的CRC值比較。若相等,,則發(fā)送I2C stop,;否則,重新Flash編程,。

⑥復(fù)位:發(fā)送I2C start→發(fā)送0x7C→發(fā)送0x48和0x00→發(fā)送I2C stop。

要使從設(shè)備MTV312具有ISP的功能,,須添加一段程序在從設(shè)備的主應(yīng)用程序中,。該程序用來響應(yīng)多功能口SCL和SDA(RXD,TXD)的電平變化,。在執(zhí)行以下程序后,,MTV312進(jìn)入ISP模式:

void Intlsp(void)interrupt 2{//從設(shè)備MTV312外部中斷1

結(jié) 語

該系統(tǒng)的實(shí)現(xiàn)方法比較簡(jiǎn)單,可以脫離PC獨(dú)立運(yùn)行,,同時(shí)給工廠提供更為簡(jiǎn)單,、方便的在線ISP。主設(shè)備可以在線體上對(duì)從設(shè)備進(jìn)行批量編程,,值得在一線工廠推廣使用,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。