1.引言
單片機(jī)開發(fā)與應(yīng)用已滲入我們生活中各個(gè)方面,其中一個(gè)應(yīng)用就是對(duì)內(nèi)存較小的芯片大批量燒錄,就有了性能穩(wěn)定的高速編程器誕生以滿足各大廠商實(shí)現(xiàn)大量芯片燒錄的目標(biāo)。目前市場(chǎng)上運(yùn)用最廣泛的編程器是基于89C51的,但其功能過于單一,不能滿足日益發(fā)展的市場(chǎng)需求。本文提出一種采用MSP430F149單片機(jī)作為CPU控制核心的編程器。與51單片機(jī)編程器相比,MSP430單片機(jī)編程器增加了I2C存儲(chǔ)模塊,可無需電腦利用該編程器對(duì)芯片進(jìn)行燒錄,使燒錄過程更方便、快捷。
2.系統(tǒng)設(shè)計(jì)
基于MSP430的單片機(jī)編程器以MSP430F149為核心,主要由鍵盤、顯示、串口、燒寫、電平轉(zhuǎn)換、電源和存儲(chǔ)模塊構(gòu)成。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1系統(tǒng)結(jié)構(gòu)框圖
3.編程器硬件電路設(shè)計(jì)
3.1、CPU模塊
編程器核心模塊選用超低功耗MSP430F149系列單片機(jī)[1]。圖2是MSP430F149最小系統(tǒng)原理圖。Y1、Y2是晶振模塊,RST接入復(fù)位模塊,P1為數(shù)據(jù)傳輸口,P3.0~P3.4為高4位地址輸出,P4為低8位地址輸出,P5.3、P5.4與鍵盤連接,P2、P5.0~P5.2與液晶顯示器連接,P3.6、P3.7與存儲(chǔ)器相連。
圖2 MSP430F149最小系統(tǒng)原理圖
3.2、串口模塊
MSP430F149提供信號(hào)電平與上位機(jī)工作電平不一致,因此要通過MAX232進(jìn)行電平轉(zhuǎn)換。MAX232芯片是依照RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的接口電路,用+5V單電源供電。MAX232接MSP430F149和上位機(jī)之間進(jìn)行通訊。
3.3、存儲(chǔ)模塊
如圖3基于MSP430編程器的I2C存儲(chǔ)模塊為EEPROM存儲(chǔ)器,選用內(nèi)存為8KB的AT24C16芯片。MSP430F149和AT24C16之間用一根數(shù)據(jù)線SDA、一根時(shí)鐘線SCL連接。存儲(chǔ)器中存放將要燒寫到51單片機(jī)的程序,以滿足脫機(jī)要求。
圖3 ?存儲(chǔ)模塊連接圖
3.4、鍵盤和顯示模塊
鍵盤模塊選用PS2鍵盤,具有通用可靠、使用連線少(僅使用2根信號(hào)線)特點(diǎn)得到廣泛使用。在燒錄中主要起功能選擇作用,圖4是鍵盤模塊連接圖。
圖4 ? 鍵盤模塊電路原理圖
顯示模塊選用1602液晶顯示,顯示被燒寫芯片相關(guān)參數(shù),如芯片型號(hào)、編程電壓及讀、寫、擦除等。圖5是顯示模塊連接圖,MSP430F149根據(jù)鍵盤控制命令將編程器當(dāng)前狀態(tài)和數(shù)據(jù)顯示出來。
圖5 顯示模塊電路原理圖
3.5、電源模塊
電源給MSP430F149芯片提供3.3V工作電壓,也給燒錄的51芯片提供一個(gè)12V編程電壓。如圖6,+5V電源通過ASM1117-3.3V進(jìn)行電壓轉(zhuǎn)換產(chǎn)生3.3V電壓提供給MSP430F149單片機(jī),另外+5V電源直接輸入到51芯片以及產(chǎn)生12V編程電壓。
圖6 電源模塊連接圖
3.6、編程模塊
編程模塊中89C51是被燒寫芯片,P0.0~P0.7為數(shù)據(jù)輸入,P1.0~P1.7為低8位地址輸入,P2.0~P2.3為高4位地址輸入而P3.6、P3.7作為功能控制端口[2]。如圖7在51單片機(jī)外圍鏈接4片74LVC8T245實(shí)現(xiàn)3.3V向5V電壓變換。DIR對(duì)信號(hào)傳輸方向控制,當(dāng)該引腳為高電平時(shí)數(shù)據(jù)總線傳輸方向由A1~A8到B1~B8,為低電平時(shí)則反向傳輸。對(duì)連接地址和控制的3片74LVC8T245而言DIR低電平有效。
圖7 ?89C51單片機(jī)編程連線圖
4.編程器功能及軟件設(shè)計(jì)
基于MSP430單片機(jī)編程器具有讀、寫、校驗(yàn)和擦除的功能。這些功能可以在聯(lián)機(jī)狀態(tài)下通過命令方式操作,也可以在脫機(jī)狀態(tài)下通過鍵盤控制完成,編程數(shù)據(jù)和命令傳送通過上下位機(jī)通訊實(shí)現(xiàn)。
如圖8編程器進(jìn)入中斷狀態(tài)等待接收數(shù)據(jù),一旦接收到數(shù)據(jù)判斷是否為“命令”,若是則判斷否是“檢查”、“擦除”、“讀”或“寫”命令,若是其中命令之一,編程器就執(zhí)行相應(yīng)操作。否則返回串口中斷接收狀態(tài)等待數(shù)據(jù)到來。若接收的不是“命令”則判斷是否為“數(shù)據(jù)”,若是就將數(shù)據(jù)儲(chǔ)存到E2PROM,否則編程器返回中斷接收狀態(tài)。
圖8 ?下位機(jī)串口通訊及聯(lián)機(jī)編程程序流程圖
如圖9編程器讀取鍵盤輸入命令,若輸入“Check#”則對(duì)51單片機(jī)Flash進(jìn)行檢查,全為FFH則LCD會(huì)顯示“OK”,還顯示單片機(jī)ID、編程電壓等信息,否則顯示未擦除單元地址;若輸入“Erase#”編程器會(huì)擦除51單片機(jī)Flash中內(nèi)容并在LCD上顯示“完成”;若輸入“Read#”編程器會(huì)讀51單片機(jī)Flash中內(nèi)容到RAM中并在LCD上顯示;若輸入“Write#”編程器會(huì)把E2PROM存儲(chǔ)內(nèi)容寫入51單片機(jī)Flash,并在LCD上顯示“完成”;若輸入是“Verify#”編程器會(huì)對(duì)寫入Flash中的內(nèi)容進(jìn)行檢查是否與E2PROM內(nèi)容一致,若是在LCD上顯示“OK”,否則顯示錯(cuò)誤FLASH單元地址;若輸入“Auto#”編程器就順序執(zhí)行擦除、檢查、寫和校驗(yàn)操作并返回等待鍵盤輸入命令。
圖9 ?下位機(jī)脫機(jī)編程軟件流程圖
編程器的讀、寫、擦除等功能是由如下主要函數(shù)來實(shí)現(xiàn)?! ?/p>
#include“common.h”
voidInit_Read(void){…}//讀數(shù)據(jù)初始化
charReadByte(intaddr){…}//read數(shù)據(jù)
voidEraseByte(intaddr){…}//erase數(shù)據(jù)
voidCheckByte(intaddr){…}//檢查數(shù)據(jù)是否為空
voidVerifyByte(intaddr,intaddr1){…}//校驗(yàn)數(shù)據(jù)
voidInit_Write(void){…}//寫數(shù)據(jù)初始化
voidWriteByte(intaddr,chardat){…}//write數(shù)據(jù)
charReadID(intaddr){。。。}//讀芯片ID
voidmain(void)
{charUART1_RX_Temp[10];
nRev_UART1=0;
nSend_TX1=0;
write_Flag=0;
dat_Flag=0;
dat_buf=0;
nDAT_BUF_Valid=0;
_DINT();//關(guān)閉中斷
Init_CLK();//初始化時(shí)鐘
Con_Port_Init();//初始化端口
CT_OE_Enable();
Init_UART1();//初始化串口1
_EINT();//打開中斷
ResetSM();
for(;;)//進(jìn)入處理循環(huán)
{…//各種編程命令;讀鍵盤及LCD顯示等
}
5.結(jié)語
通過基于MSP430單片機(jī)的編程器設(shè)計(jì)原理和思路的研究,實(shí)現(xiàn)對(duì)89C51等系列芯片編程操作。實(shí)際測(cè)試,該編程器能夠快速、獨(dú)立進(jìn)行芯片編程工作,大大提高燒錄芯片的速度,使其有更高的工作效率和較好的穩(wěn)定性。
評(píng)論