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