• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    MSP430單片機的BSL編程工具設(shè)計與應(yīng)用*

    2015-07-02 00:17:24常國權(quán)張捐凈
    關(guān)鍵詞:控件時序串口

    常國權(quán),張捐凈

    (安陽工學(xué)院 計算機科學(xué)與信息工程學(xué)院,安陽 455000)

    ?

    MSP430單片機的BSL編程工具設(shè)計與應(yīng)用*

    常國權(quán),張捐凈

    (安陽工學(xué)院 計算機科學(xué)與信息工程學(xué)院,安陽 455000)

    為了對燒斷熔絲的MSP430系列單片機進行程序更新,采用USB轉(zhuǎn)串口芯片PL2303和VB6.0編程語言設(shè)計出了一款高性價比的BSL編程工具,給出了該編程工具的硬件和軟件設(shè)計的具體方案,并論述了設(shè)計中的要點。該BSL編程工具使用方便、操作簡單、成本低廉,投入使用以后獲得了較好的效果。

    MSP430單片機; BSL; 編程工具; PL2303

    引 言

    美國德州儀器公司的MSP430系列單片機在智能儀器儀表、醫(yī)療電子、消費電子等領(lǐng)域有著非常廣泛的應(yīng)用[1]。大部分MSP430系列單片機都具有非易失性Flash存儲器,用戶調(diào)試或更新Flash中程序的方式一般有兩種方法:JTAG和Bootstrap Loader[2](引導(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單片機進行程序升級的唯一方法[3]。

    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è)計框圖

    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è)備中[4]。

    該編程工具將PL2303芯片的DTR、RTS引腳分別連接到MSP430系列單片機的RST、TCK(或者TEST)引腳,如果是帶有TEST引腳的MSP430單片機,則應(yīng)用TEST引腳替換TCK引腳。TXD、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所示[5]。

    圖2 系統(tǒng)硬件設(shè)計原理圖

    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引腳已收到至少兩個負(fù)跳變,并且當(dāng)RST由低向高跳變時TCK保持低電平,此時,MSP430單片機進入BSL狀態(tài);如果是帶有TEST引腳的MSP430單片機,則應(yīng)用TEST引腳替換TCK引腳,并且TEST引腳接收的到是至少兩個正跳變,并且當(dāng)RST由低向高跳變時TEST保持高電平。MSP430單片機BSL啟動時序如圖3所示[6]。

    圖3 MSP430單片機BSL啟動時序圖

    2.2 BSL的串口通信協(xié)議

    MSP430單片機利用內(nèi)部定時器實現(xiàn)在特定的引腳模擬串口通信時序,大多數(shù)MSP430單片機的P1.1引腳作為BSL的發(fā)送端(即TXD),P2.2引腳作為BSL的接收端(即RXD),不同型號的單片機會有所不同[7]。

    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 所列[6]。

    其中,從HDR到LH的8個字節(jié)是必須的,xx表示任意數(shù)據(jù);數(shù)據(jù)D1~Dn是可選的;CKL是校驗和的低位,CKH是校驗和的高位,這兩個字節(jié)是必需的;ACK確認(rèn)字節(jié)并不是每個命令都需要的。

    表1 部分BSL命令數(shù)據(jù)幀格式

    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所示。

    圖4 BSL編程軟件對TI-txt文件的處理流程圖

    要通過串口實現(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 Terminal Ready)線。若DTREnable設(shè)置為True,則使用DTR線;若為False(缺省),則禁止DTR線。RTSEnable屬性和DTREnable屬性類似,RTSEnable屬性用于確定是否使用RTS(Request To Send)線。若RTSEnable設(shè)置為True,則使用RTS線;若為False(缺省),則不使用RTS線[8-9]。使用MSComm的這兩個屬性,可以在VB6.0中通過以下代碼使MSP430單片機進入BSL狀態(tài)。

    Private Sub BslConnectCommand_Click() '連接BSL,并進入BSL狀態(tài)

    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狀態(tài)是關(guān)鍵的一步,打通了這一底層通信的關(guān)鍵環(huán)節(jié)之后,就可以一步一步地編寫調(diào)試其他各個軟件模塊了。MSP430單片機BSL編程軟件的設(shè)計流程圖和BSL編程軟件界面圖如圖5、6所示。

    圖5 BSL編程軟件的設(shè)計流程圖

    圖6 BSL編程軟件界面圖

    結(jié) 語

    [1] 沈建華.MSP430系列16位超低功耗單片機原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008.

    [2] Texas Instruments.MSP430 Memory Programming User's Guide,2013.

    [3] 李智奇.MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計[M].西安:西安電子科技大學(xué)出版社,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程序設(shè)計教程[M].北京:機械工業(yè)出版社,2011.

    [9] 王定賢.基于VB的計算機與智能儀器串口通信[J].甘肅聯(lián)合大學(xué)學(xué)報:自然科學(xué)版,2011,25(4).

    常國權(quán)(碩士研究生),研究方向為嵌入式系統(tǒng)技術(shù)應(yīng)用與開發(fā)。

    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

    《國產(chǎn)數(shù)控系統(tǒng)在車床企業(yè)應(yīng)用示范工程》國家科技重大專項子課題(項目編號:2012ZX04011-012)。

    TP368.2

    A

    士然

    2014-12-19)

    猜你喜歡
    控件時序串口
    時序坐標(biāo)
    基于Sentinel-2時序NDVI的麥冬識別研究
    淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    一種毫米波放大器時序直流電源的設(shè)計
    電子制作(2016年15期)2017-01-15 13:39:08
    USB接口的多串口數(shù)據(jù)并行接收方法探索
    基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
    地礦測繪(2015年3期)2015-12-22 06:27:26
    基于并行控制的FPGA多串口拓展實現(xiàn)
    DPBUS時序及其設(shè)定方法
    河南科技(2014年15期)2014-02-27 14:12:36
    就這樣玩會VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    长丰县| 芮城县| 恩施市| 尚志市| 唐河县| 大厂| 香格里拉县| 台北县| 霍山县| 济阳县| 朝阳县| 海安县| 静安区| 华安县| 丹阳市| 农安县| 枣强县| 体育| 万山特区| 皋兰县| 勐海县| 潮州市| 黄梅县| 竹山县| 阜阳市| 大宁县| 西畴县| 余干县| 兴和县| 仁怀市| 吴江市| 中西区| 泰和县| 青海省| 巴塘县| 乡宁县| 鸡东县| 墨脱县| 乌审旗| 浮梁县| 承德市|