周婧 孫先松
【摘要】設(shè)計一款基于MSP430單片機(jī)的編程器件。該系統(tǒng)采用低功耗MSP430F149單片機(jī)作為核心部件,硬件部分由鍵盤、存儲器、電源、顯示、電平變換、串口和燒寫模塊組成,軟件采用C語言編程設(shè)計方法,最終實(shí)現(xiàn)編程器對89C51芯片進(jìn)行脫機(jī)燒寫,從而大大提高了燒錄芯片的速度和工作效率。
【關(guān)鍵詞】MSP430單片機(jī);89C51芯片;編程器;C語言編程設(shè)計
1.引言
單片機(jī)開發(fā)與應(yīng)用已滲入我們生活中各個方面,其中一個應(yīng)用就是對內(nèi)存較小的芯片大批量燒錄,就有了性能穩(wěn)定的高速編程器誕生以滿足各大廠商實(shí)現(xiàn)大量芯片燒錄的目標(biāo)。目前市場上運(yùn)用最廣泛的編程器是基于89C51的,但其功能過于單一,不能滿足日益發(fā)展的市場需求。本文提出一種采用MSP430F149單片機(jī)作為CPU控制核心的編程器。與51單片機(jī)編程器相比,MSP430單片機(jī)編程器增加了I2C存儲模塊,可無需電腦利用該編程器對芯片進(jìn)行燒錄,使燒錄過程更方便、快捷。
2.系統(tǒng)設(shè)計
基于MSP430的單片機(jī)編程器以MSP430F149為核心,主要由鍵盤、顯示、串口、燒寫、電平轉(zhuǎn)換、電源和存儲模塊構(gòu)成。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
3.編程器硬件電路設(shè)計
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與存儲器相連。
圖2 MSP430F149最小系統(tǒng)原理圖
3.2 串口模塊
MSP430F149提供信號電平與上位機(jī)工作電平不一致,因此要通過MAX232進(jìn)行電平轉(zhuǎn)換。MAX232芯片是依照RS-232標(biāo)準(zhǔn)串口設(shè)計的接口電路,用+5V單電源供電。MAX232接MSP430F149和上位機(jī)之間進(jìn)行通訊。
3.3 存儲模塊
如圖3基于MSP430編程器的I2C存儲模塊為EEPROM存儲器,選用內(nèi)存為8KB的AT24C16芯片。MSP430F149和AT24C16之間用一根數(shù)據(jù)線SDA、一根時鐘線SCL連接。存儲器中存放將要燒寫到51單片機(jī)的程序,以滿足脫機(jī)要求。
圖3 存儲模塊連接圖
3.4 鍵盤和顯示模塊
鍵盤模塊選用PS2鍵盤,具有通用可靠、使用連線少(僅使用2根信號線)特點(diǎn)得到廣泛使用。在燒錄中主要起功能選擇作用,圖4是鍵盤模塊連接圖。
顯示模塊選用1602液晶顯示,顯示被燒寫芯片相關(guān)參數(shù),如芯片型號、編程電壓及讀、寫、擦除等。圖5是顯示模塊連接圖,MSP430F149根據(jù)鍵盤控制命令將編程器當(dāng)前狀態(tài)和數(shù)據(jù)顯示出來。
圖4 鍵盤模塊電路原理圖
圖5 顯示模塊電路原理圖
3.5 電源模塊
電源給MSP430F149芯片提供3.3V工作電壓,也給燒錄的51芯片提供一個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對信號傳輸方向控制,當(dāng)該引腳為高電平時數(shù)據(jù)總線傳輸方向由A1~A8到B1~B8,為低電平時則反向傳輸。對連接地址和控制的3片74LVC8T245而言DIR低電平有效。
圖7 89C51單片機(jī)編程連線圖
4.編程器功能及軟件設(shè)計
基于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ù)儲存到E2PROM,否則編程器返回中斷接收狀態(tài)。
圖8 下位機(jī)串口通訊及聯(lián)機(jī)編程程序流程圖
如圖9編程器讀取鍵盤輸入命令,若輸入“Check#”則對51單片機(jī)Flash進(jìn)行檢查,全為FFH則LCD會顯示“OK”,還顯示單片機(jī)ID、編程電壓等信息,否則顯示未擦除單元地址;若輸入“Erase#”編程器會擦除51單片機(jī)Flash中內(nèi)容并在LCD上顯示“完成”;若輸入“Read#”編程器會讀51單片機(jī)Flash中內(nèi)容到RAM中并在LCD上顯示;若輸入“Write#”編程器會把E2PROM存儲內(nèi)容寫入51單片機(jī)Flash,并在LCD上顯示“完成”;若輸入是“Verify#”編程器會對寫入Flash中的內(nèi)容進(jìn)行檢查是否與E2PROM內(nèi)容一致,若是在LCD上顯示“OK”,否則顯示錯誤FLASH單元地址;若輸入“Auto#”編程器就順序執(zhí)行擦除、檢查、寫和校驗(yàn)操作并返回等待鍵盤輸入命令。
圖9 下位機(jī)脫機(jī)編程軟件流程圖
編程器的讀、寫、擦除等功能是由如下主要函數(shù)來實(shí)現(xiàn)[3]。
#include
#include "common.h"
void Init_Read(void){…} //讀數(shù)據(jù)初始化
char ReadByte(int addr){…}// read數(shù)據(jù)
void EraseByte(int addr){…}// erase數(shù)據(jù)
void CheckByte(int addr){…}//檢查數(shù)據(jù)是否為空
void VerifyByte(int addr,int addr1){…}//校驗(yàn)數(shù)據(jù)
void Init_Write(void){…}//寫數(shù)據(jù)初始化
void WriteByte(int addr,char dat){…}//write數(shù)據(jù)
char ReadID(int addr){...}//讀芯片ID
void main(void)
{ ? char UART1_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(;;) //進(jìn)入處理循環(huán)
{… ?//各種編程命令;讀鍵盤及LCD顯示等
}
5.結(jié)語
通過基于MSP430單片機(jī)的編程器設(shè)計原理和思路的研究,實(shí)現(xiàn)對89C51等系列芯片編程操作。實(shí)際測試,該編程器能夠快速、獨(dú)立進(jìn)行芯片編程工作,大大提高燒錄芯片的速度,使其有更高的工作效率和較好的穩(wěn)定性。
參考文獻(xiàn)
[1]沈建華,楊艷琴.MSP430超低功耗單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2013.
[2]郭天祥.新概念51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社,2011.
[3]曹磊.MSP430單片機(jī)C程序設(shè)計與實(shí)踐[M].北京航空航天大學(xué)出版社,2007
作者簡介:周婧(1990—),女,湖北黃石人,碩士研究生,研究方向:電子與通信工程。
通訊作者:孫先松。