MSP430單片機的BSL編程工具設(shè)計與應(yīng)用
摘要:為了對燒斷熔絲的MSP430系列單片機進行程序更新,采用USB轉(zhuǎn)串口芯片PL2303和VB6.0編程語言設(shè)計出了一款高性價比的BSL編程工具,給出了該編程工具的硬件和軟件設(shè)計的具體方案,并論述了設(shè)計中的要點。該BSL編程工具使用方便、操作簡單、成本低廉,投入使用以后獲得了較好的效果。
引言
美國德州儀器公司的MSP430系列單片機在智能儀器儀表、醫(yī)療電子、消費電子等領(lǐng)域有著非常廣泛的應(yīng)用。大部分MSP430系列單片機都具有非易失性Flash存儲器,用戶調(diào)試或更新Flash中程序的方式一般有兩種方法:JTAG和Bootstrap Loader(引導(dǎo)裝載程序,簡稱BSL)。
MSP430系列單片機內(nèi)部集成了JTAG仿真調(diào)試模塊,并口轉(zhuǎn)換器就可以作為一個低成本的JTAG硬件仿真調(diào)試工具,然而,為了保護用戶程序代碼,往往產(chǎn)品開發(fā)完成之后必須要燒斷MSP430單片機內(nèi)部的熔絲,這就使得MSP430單片機無法再通過JTAG接口訪問CPU或者更新Flash中的用戶程序了,要想再次訪問或者更新Flash中的用戶程序就需要使用BSL接口。BSL接口也是對燒斷熔絲后的MSP430單片機進行程序升級的唯一方法。
MSP430系列單片機出廠時在特定的內(nèi)存空間固化了一段引導(dǎo)代碼,即BSL,通過在單片機特定引腳上加一個特定的時序就可進入這段引導(dǎo)代碼,用戶就可以通過標(biāo)準(zhǔn)的異步串行口訪問單片機的內(nèi)部資源,如Flash、RAM等(讀操作需要驗證密碼),這就為嵌入式應(yīng)用提供了方便的升級和維護方式。
采用USB轉(zhuǎn)串口芯片和VB6.0編程語言設(shè)計并實現(xiàn)了一種成本低廉、使用方便、操作簡單的BSL編程工具,可以通過串口實現(xiàn)對MSP430系列單片機進行擦除、編程、自動下載文件、聲音提示以及自動運行代碼等功能。系統(tǒng)總體設(shè)計框圖如圖1所示。
1 系統(tǒng)硬件設(shè)計
該BSL編程工具的硬件是使用USB轉(zhuǎn)串口芯片PL2303設(shè)計的,具有使用方便、設(shè)計成本低等優(yōu)點。PL2303是Prolific公司生產(chǎn)的USB總線轉(zhuǎn)接芯片,具有全部調(diào)制解調(diào)器控制信號,如TXD、RXD、DTR、RTS等,可實現(xiàn)USB轉(zhuǎn)3.3 V或5 V全雙工串口TTL電平。
PL2303芯片接入PC機后會產(chǎn)生一個虛擬的串口設(shè)備,使用VB6.0提供的MSComm串口控件進行編程,即可控制TXD、RXD、DTR、RTS產(chǎn)生所需要的時序信號。盡管使用PC機的物理串口也可以實現(xiàn)同樣的功能,但并不是每臺PC機都有物理串口,USB轉(zhuǎn)串口芯片使得該編程工具省去了物理串口的限制,并可為MSP430單片機提供電源,因此,PL2303是移動系統(tǒng)和嵌入式系統(tǒng)的理想選擇,其小封裝能夠嵌入到任何連接件和手持設(shè)備中。
該編程工具將PL2303芯片的DTR、RTS引腳分別連接到MSP430系列單片機的RST、TCK(或者TEST)引腳,如果是帶有TEST引腳的MSP430單片機,則應(yīng)用TEST引腳替換TCK引腳。TX D、RXD是串口發(fā)送、接收引腳,需要連接MSP430單片機對應(yīng)的BSL引腳,不同的單片機對應(yīng)的接收和發(fā)送引腳不完全一樣。PL2303芯片的第4個引腳VDD 325是用來決定控制信號邏輯電平的,MSP430系列單片機都是3.3 V工作電壓,因此,VDD_325應(yīng)該接3.3 V,以便于TXD、RXD、DTR和RTS產(chǎn)生3.3 V邏輯電平。AMS1117是用來將5 V電壓轉(zhuǎn)換為3.3 V電壓,除了給VDD_325提供電壓,也可以給外部的MSP430單片機提供3.3 V電源。系統(tǒng)硬件設(shè)計原理圖如圖2所示。
2 系統(tǒng)軟件設(shè)計
BSL編程工具的軟件設(shè)計采用VB6.0來實現(xiàn),盡管使用VC++、Delphi等編程工具都可以實現(xiàn)該軟件的設(shè)計,但選擇VB6.0具有更多的優(yōu)勢,因為VB是一種比較簡單的事件驅(qū)動編程語言,對初學(xué)者的要求較低。VB擁有圖形用戶界面和快速應(yīng)用程序開發(fā)系統(tǒng),使用其提供的組件完全可以完成該軟件的設(shè)計。
2.1 MSP430單片機BSL時序介紹
要使MSP430單片機進入BSL復(fù)位向量,需要在單片機的RST和TCK(或者TEST)引腳施加一個特定的時序,MSP430單片機接到這個特定時序后,CPU的程序指針(PC)指向0x 0C00地址處,這是一段1 KB的ROM區(qū)(0x 0C00~0x 1000)。
在BSL程序開始執(zhí)行時,TCK引腳已收到至少兩個負跳變,并且當(dāng)RST由低向高跳變時TCK保持低電平,此時,MSP430單片機進入BSL狀態(tài);如果是帶有TEST引腳的MSP430單片機,則應(yīng)用TEST引腳替換TCK引腳,并且TEST引腳接收的到是至少兩個正跳變,并且當(dāng)RST由低向高跳變時 TEST保持高電平。MSP430單片機BSL啟動時序如圖3所示。
2. 2 BSL的串口通信協(xié)議
MSP430單片機利用內(nèi)部定時器實現(xiàn)在特定的引腳模擬串口通信時序,大多數(shù)MSP430單片機的P1.1引腳作為BSL的發(fā)送端(即TXD),P2.2引腳作為BSL的接收端(即RXD),不同型號的單片機會有所不同。
MSP430單片機的串口協(xié)議默認(rèn)采用:9 600的波特率,半雙工模式,1位起始位,8位數(shù)據(jù)位(最低位在前),1個偶校驗位,1位停止位。握手是通過一個確認(rèn)字符進行的,在發(fā)送任何命令之前,必須先發(fā)送一個值為80H的同步字符給BSL,它提供了BSL系統(tǒng)時間基準(zhǔn)。當(dāng)BSL接收到同步字符之后,會發(fā)送一個90H的字符以確認(rèn)成功接收。
BSL提供給用戶的命令主要分為兩類:一類命令需要驗證密碼才能執(zhí)行,如訪問單片機Flash、RAM以及外設(shè)等操作;另一類命令無需驗證密碼即可執(zhí)行,如整體擦除Flash、讀取BSL版本等。部分BSL命令數(shù)據(jù)幀格式如表1所列。
其中,從HDR到LH的8個字節(jié)是必須的,xx表示任意數(shù)據(jù);數(shù)據(jù)D1~Dn是可選的;CKL是校驗和的低位,CKH是校驗和的高位,這兩個字節(jié)是必需的;ACK確認(rèn)字節(jié)并不是每個命令都需要的。
2.3 BSL軟件設(shè)計
進行BSL軟件設(shè)計,主要用到了VB6.0中的幾個關(guān)鍵控件,如MSComm、CommandDialog、ComboBox、Timer、TextBox、ProgressBar、CommandButton、CheckBox等標(biāo)準(zhǔn)控件。
該BSL編程軟件下載的程序文件格式為TI公司txt純文本格式,它使用“@”表示地址的開始,地址后面表示從該地址開始要存儲的數(shù)據(jù)內(nèi)容,從地址后每一行為16個字節(jié),每個字節(jié)使用十六進制數(shù)表示,每兩個字節(jié)之間用一個空格隔開。每遇到一個“@”字符就表示新地址的開始,地址后面同樣表示從該地址開始要存儲的數(shù)據(jù)內(nèi)容,文件最后以一個小寫的“q”字符加換行結(jié)束。根據(jù)TI-txt文件的格式,首先要使用CommandDialog控件打開要下載的文件,使用一定的算法分離出整個TI-txt文件中的多段起始地址以及每個起始地址所對應(yīng)的數(shù)據(jù)內(nèi)容,然后通過串口一步一步地發(fā)送給BSL并寫入到指定的地址段。BSL編程軟件對TI-txt文件的處理流程如圖4所示。
要通過串口實現(xiàn)上位機軟件和MSP430單片機的BSL進行數(shù)據(jù)交換,最關(guān)鍵的一步就是先要使MSP430單片機進入BSL狀態(tài)。而要想使MSP430單片機進入BSL狀態(tài),必須要在RST和TCK(或者TEST)引腳施加一個特定的時序,通過使用MSComm的兩個屬性DTREnable和 RTSEnable可以產(chǎn)生所需要的時序。DTREnable屬性是確定在通信過程中是否使用DTR(Data Term inal Ready)線。若DTREnable設(shè)置為True,則使用DTR線;若為False(缺省),則禁止DTR線。RTSEnable屬性和 DTREnable屬性類似,RTSEnable屬性用于確定是否使用RTS(Request To Send)線。若RTSEnable設(shè)置為True,則使用RTS線;若為False(缺省),則不使用RTS線。使用MSComm的這兩個屬性,可以在 VB6.0中通過以下代碼使MSP430單片機進入BSL狀態(tài)。
其中,DTRCheck和RTSCheck這兩個控件非常有用,可以在不改變硬件的情況下使DTR和RTS輸出的邏輯電平反相,這使得該BSL上位機軟件既可以適用于有TCK引腳的單片機,也可以適用于有TEST引腳的單片機,大大增強了BSL軟件的靈活性。
使MSP430單片機進入BSL狀態(tài)是關(guān)鍵的一步,打通了這一底層通信的關(guān)鍵環(huán)節(jié)之后,就可以一步一步地編寫調(diào)試其他各個軟件模塊了。MSP430單片機BSL編程軟件的設(shè)計流程圖和BSL編程軟件界面圖如圖5、6所示。
結(jié)語
采用USB轉(zhuǎn)串口芯片PL2303和VB6.0編程語言設(shè)計出了一款高性價比的BSL編程工具,該BSL編程工具具有使用方便、操作簡單、成本低廉等優(yōu)點,通過USB虛擬串口,不但可以對燒斷熔絲的MSP430系列單片機進行程序升級等操作,而且也可以作為用戶學(xué)習(xí)MSP430單片機的廉價編程工具。經(jīng)過反復(fù)多次修改及完善,該BSL編程工具應(yīng)用于某機床廠的實際項目中,并被多個高校的大學(xué)生在實踐創(chuàng)新中使用,取得了較好的效果。