常國權,張捐凈
(安陽工學院 計算機科學與信息工程學院,安陽 455000)
?
MSP430單片機的BSL編程工具設計與應用*
常國權,張捐凈
(安陽工學院 計算機科學與信息工程學院,安陽 455000)
為了對燒斷熔絲的MSP430系列單片機進行程序更新,采用USB轉串口芯片PL2303和VB6.0編程語言設計出了一款高性價比的BSL編程工具,給出了該編程工具的硬件和軟件設計的具體方案,并論述了設計中的要點。該BSL編程工具使用方便、操作簡單、成本低廉,投入使用以后獲得了較好的效果。
MSP430單片機; BSL; 編程工具; PL2303
美國德州儀器公司的MSP430系列單片機在智能儀器儀表、醫療電子、消費電子等領域有著非常廣泛的應用[1]。大部分MSP430系列單片機都具有非易失性Flash存儲器,用戶調試或更新Flash中程序的方式一般有兩種方法:JTAG和Bootstrap Loader[2](引導裝載程序,簡稱BSL)。
MSP430系列單片機內部集成了JTAG仿真調試模塊,并口轉換器就可以作為一個低成本的JTAG硬件仿真調試工具,然而,為了保護用戶程序代碼,往往產品開發完成之后必須要燒斷MSP430單片機內部的熔絲,這就使得MSP430單片機無法再通過JTAG接口訪問CPU或者更新Flash中的用戶程序了,要想再次訪問或者更新Flash中的用戶程序就需要使用BSL接口。BSL接口也是對燒斷熔絲后的MSP430單片機進行程序升級的唯一方法[3]。
MSP430系列單片機出廠時在特定的內存空間固化了一段引導代碼,即BSL,通過在單片機特定引腳上加一個特定的時序就可進入這段引導代碼,用戶就可以通過標準的異步串行口訪問單片機的內部資源,如Flash、RAM等(讀操作需要驗證密碼),這就為嵌入式應用提供了方便的升級和維護方式。
采用USB轉串口芯片和VB6.0編程語言設計并實現了一種成本低廉、使用方便、操作簡單的BSL編程工具,可以通過串口實現對MSP430系列單片機進行擦除、編程、自動下載文件、聲音提示以及自動運行代碼等功能。系統總體設計框圖如圖1所示。

圖1 系統總體設計框圖
該BSL編程工具的硬件是使用USB轉串口芯片PL2303設計的,具有使用方便、設計成本低等優點。PL2303是Prolific公司生產的USB總線轉接芯片,具有全部調制解調器控制信號,如TXD、RXD、DTR、RTS等,可實現USB轉3.3 V或5 V全雙工串口TTL電平。
PL2303芯片接入PC機后會產生一個虛擬的串口設備,使用VB6.0提供的MSComm串口控件進行編程,即可控制TXD、RXD、DTR、RTS產生所需要的時序信號。盡管使用PC機的物理串口也可以實現同樣的功能,但并不是每臺PC機都有物理串口,USB轉串口芯片使得該編程工具省去了物理串口的限制,并可為MSP430單片機提供電源,因此,PL2303是移動系統和嵌入式系統的理想選擇,其小封裝能夠嵌入到任何連接件和手持設備中[4]。
該編程工具將PL2303芯片的DTR、RTS引腳分別連接到MSP430系列單片機的RST、TCK(或者TEST)引腳,如果是帶有TEST引腳的MSP430單片機,則應用TEST引腳替換TCK引腳。TXD、RXD是串口發送、接收引腳,需要連接MSP430單片機對應的BSL引腳,不同的單片機對應的接收和發送引腳不完全一樣。PL2303芯片的第4個引腳VDD_325是用來決定控制信號邏輯電平的,MSP430系列單片機都是3.3 V工作電壓,因此,VDD_325應該接3.3 V,以便于TXD、RXD、DTR和RTS產生3.3 V邏輯電平。AMS1117是用來將5 V電壓轉換為3.3 V電壓,除了給VDD_325提供電壓,也可以給外部的MSP430單片機提供3.3 V電源。系統硬件設計原理圖如圖2所示[5]。

圖2 系統硬件設計原理圖
BSL編程工具的軟件設計采用VB6.0來實現,盡管使用VC++、Delphi等編程工具都可以實現該軟件的設計,但選擇VB6.0具有更多的優勢,因為VB是一種比較簡單的事件驅動編程語言,對初學者的要求較低。VB擁有圖形用戶界面和快速應用程序開發系統,使用其提供的組件完全可以完成該軟件的設計。
2.1 MSP430單片機BSL時序介紹
要使MSP430單片機進入BSL復位向量,需要在單片機的RST和TCK(或者TEST)引腳施加一個特定的時序,MSP430單片機接到這個特定時序后,CPU的程序指針(PC)指向0x 0C00地址處,這是一段1 KB的ROM區(0x 0C00~0x 1000)。
在BSL程序開始執行時,TCK引腳已收到至少兩個負跳變,并且當RST由低向高跳變時TCK保持低電平,此時,MSP430單片機進入BSL狀態;如果是帶有TEST引腳的MSP430單片機,則應用TEST引腳替換TCK引腳,并且TEST引腳接收的到是至少兩個正跳變,并且當RST由低向高跳變時TEST保持高電平。MSP430單片機BSL啟動時序如圖3所示[6]。

圖3 MSP430單片機BSL啟動時序圖
2.2 BSL的串口通信協議
MSP430單片機利用內部定時器實現在特定的引腳模擬串口通信時序,大多數MSP430單片機的P1.1引腳作為BSL的發送端(即TXD),P2.2引腳作為BSL的接收端(即RXD),不同型號的單片機會有所不同[7]。
MSP430單片機的串口協議默認采用:9 600的波特率,半雙工模式,1位起始位,8位數據位(最低位在前),1個偶校驗位,1位停止位。握手是通過一個確認字符進行的,在發送任何命令之前,必須先發送一個值為80H的同步字符給BSL,它提供了BSL系統時間基準。當BSL接收到同步字符之后,會發送一個90H的字符以確認成功接收。
BSL提供給用戶的命令主要分為兩類:一類命令需要驗證密碼才能執行,如訪問單片機Flash、RAM以及外設等操作;另一類命令無需驗證密碼即可執行,如整體擦除Flash、讀取BSL版本等。部分BSL命令數據幀格式如表1 所列[6]。
其中,從HDR到LH的8個字節是必須的,xx表示任意數據;數據D1~Dn是可選的;CKL是校驗和的低位,CKH是校驗和的高位,這兩個字節是必需的;ACK確認字節并不是每個命令都需要的。

表1 部分BSL命令數據幀格式
2.3 BSL軟件設計
進行BSL軟件設計,主要用到了VB6.0中的幾個關鍵控件,如MSComm、CommandDialog、ComboBox、Timer、TextBox、ProgressBar、CommandButton、CheckBox等標準控件。
該BSL編程軟件下載的程序文件格式為TI公司txt純文本格式,它使用“@”表示地址的開始,地址后面表示從該地址開始要存儲的數據內容,從地址后每一行為16個字節,每個字節使用十六進制數表示,每兩個字節之間用一個空格隔開。每遇到一個“@”字符就表示新地址的開始,地址后面同樣表示從該地址開始要存儲的數據內容,文件最后以一個小寫的“q”字符加換行結束。根據TI-txt文件的格式,首先要使用CommandDialog控件打開要下載的文件,使用一定的算法分離出整個TI-txt文件中的多段起始地址以及每個起始地址所對應的數據內容,然后通過串口一步一步地發送給BSL并寫入到指定的地址段。BSL編程軟件對TI-txt文件的處理流程如圖4所示。

圖4 BSL編程軟件對TI-txt文件的處理流程圖
要通過串口實現上位機軟件和MSP430單片機的BSL進行數據交換,最關鍵的一步就是先要使MSP430單片機進入BSL狀態。而要想使MSP430單片機進入BSL狀態,必須要在RST和TCK(或者TEST)引腳施加一個特定的時序,通過使用MSComm的兩個屬性DTREnable和RTSEnable可以產生所需要的時序。DTREnable屬性是確定在通信過程中是否使用DTR(Data Terminal Ready)線。若DTREnable設置為True,則使用DTR線;若為False(缺省),則禁止DTR線。RTSEnable屬性和DTREnable屬性類似,RTSEnable屬性用于確定是否使用RTS(Request To Send)線。若RTSEnable設置為True,則使用RTS線;若為False(缺省),則不使用RTS線[8-9]。使用MSComm的這兩個屬性,可以在VB6.0中通過以下代碼使MSP430單片機進入BSL狀態。
Private Sub BslConnectCommand_Click() '連接BSL,并進入BSL狀態
Dim DTRLevel As Boolean
Dim RTSLevel As Boolean
If (DTRCheck.Value = 1) Then 'DTRCheck選中
DTRLevel = False
Else
DTRLevel = True
End If
If (RTSCheck.Value = 1) Then 'RTSCheck選中
RTSLevel = False
Else
RTSLevel = True
End If
MSComm.RTSEnable = Not (RTSLevel)
MSComm.DTREnable = DTRLevel
'DTRLevel為True,輸出低電平
MSComm.RTSEnable = RTSLevel
MSComm.RTSEnable = Not (RTSLevel)
MSComm.RTSEnable = RTSLevel
MSComm.DTREnable = Not (DTRLevel)
'DTRLevel為False,輸出高電平
MSComm.RTSEnable = Not (RTSLevel)
End Sub
其中,DTRCheck和RTSCheck這兩個控件非常有用,可以在不改變硬件的情況下使DTR和RTS輸出的邏輯電平反相,這使得該BSL上位機軟件既可以適用于有TCK引腳的單片機,也可以適用于有TEST引腳的單片機,大大增強了BSL軟件的靈活性。
使MSP430單片機進入BSL狀態是關鍵的一步,打通了這一底層通信的關鍵環節之后,就可以一步一步地編寫調試其他各個軟件模塊了。MSP430單片機BSL編程軟件的設計流程圖和BSL編程軟件界面圖如圖5、6所示。

圖5 BSL編程軟件的設計流程圖

圖6 BSL編程軟件界面圖

[1] 沈建華.MSP430系列16位超低功耗單片機原理與實踐[M].北京:北京航空航天大學出版社,2008.
[2] Texas Instruments.MSP430 Memory Programming User's Guide,2013.
[3] 李智奇.MSP430系列超低功耗單片機原理與系統設計[M].西安:西安電子科技大學出版社,2008.
[4] Porlific Technology Inc.PL-2303 USB TO RS-232 Bridge Controller Product Datasheet,2011.
[5] 張偉.Protel99SE實用教程[M].北京:人民郵電出版社,2008.
[6] Texas Instruments Incorporated. MSP430 Programming Via the Bootstrap Loader(BSL) User's Guide,2014.
[7] Texas Instruments Incorporated.MSP430F241x,MSP430F261x Mixed Signal Microcontroller,2012.
[8] 丘李華.Visual Basic程序設計教程[M].北京:機械工業出版社,2011.
[9] 王定賢.基于VB的計算機與智能儀器串口通信[J].甘肅聯合大學學報:自然科學版,2011,25(4).
常國權(碩士研究生),研究方向為嵌入式系統技術應用與開發。
Application of MSP430 Microcontroller BSL Programming Tools
Chang Guoquan,Zhang Juanjing
(Department of Computer Science and Information Engineering,Anyang Institute of Technology,Anyang 455000,China)
In order to solve the problem of MSP430 series microcontroller with blown fuse for program update,a BSL programming tool of high cost-effective is designed using PL2303 which is USB to serial port and VB6.0 programming language.The paper gives its specific solution of the hardware and software design,and discussed the key points of the design.This BSL programming tool has the advantages of convenient use,simple operation and low cost,and achieves good results after putting into use.
MSP430 microcontroller;BSL;programming tool;PL2303
《國產數控系統在車床企業應用示范工程》國家科技重大專項子課題(項目編號:2012ZX04011-012)。
TP368.2
A
士然
2014-12-19)