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