《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種無線傳感器軟件非接觸升級(jí)的方法
一種無線傳感器軟件非接觸升級(jí)的方法
來源:電子技術(shù)應(yīng)用2011年第7期
劉 梁,李東旭,許 林,李 凡
(中國(guó)航天員科研訓(xùn)練中心 人因工程實(shí)驗(yàn)室,北京100193)
摘要: 基于MSP430無線傳感器系統(tǒng),設(shè)計(jì)了一種無線傳感器軟件非接觸升級(jí)的方法。該方法充分利用現(xiàn)有資源,不需要傳感器而是通過程序下載線與計(jì)算機(jī)相聯(lián),穩(wěn)定可靠地完成了無線傳感器應(yīng)用程序的升級(jí)更新。該方法對(duì)于Flash可系統(tǒng)編程的其他系列單片機(jī)系統(tǒng)同樣適用,具有很好的實(shí)用性和通用性。
中圖分類號(hào): TN99
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)07-0045-03
Method of download wireless sensor program without contact
Liu Liang,Li Dongxu,Xu Lin,Li Fan
Astronaut Center of China,Human Factors Engineering Lab,Beijing 100193,China
Abstract: To overcome this disadvantage, a method which is based on MSP430 wireless sensor system is proposed. With our method there is no need contacting the sersor to computer with wire and the sensor can download program stably and reliably. This method aslo can be used in the other system where the running MCU can write its Flash easily.
Key words : MSP430;WSN;program update


    無線傳感器綜合了傳感器技術(shù)、嵌入式計(jì)算機(jī)技術(shù)、分布式信息處理技術(shù)和無線通信技術(shù),能夠?qū)崟r(shí)監(jiān)測(cè)、感知和采集網(wǎng)絡(luò)分布區(qū)內(nèi)的環(huán)境或監(jiān)測(cè)對(duì)象的信息。目前已經(jīng)在軍事、航空、環(huán)境、醫(yī)療、工業(yè)、商業(yè)等領(lǐng)域有廣泛應(yīng)用。對(duì)無線傳感器的片上系統(tǒng)軟件的更新,目前多需要有線方式,如連接JTAG口、SWB接口等,而對(duì)已經(jīng)安裝好的傳感器進(jìn)行軟件升級(jí)更新,就需要拆卸連接,顯得不方便。本文針對(duì)一個(gè)自行設(shè)計(jì)的基于MSP430的無線傳感器,設(shè)計(jì)了一種非接觸的軟件升級(jí)方法,實(shí)現(xiàn)了無線傳感器不拆卸的情況下應(yīng)用軟件的升級(jí)。
1 無線傳感器的整體結(jié)構(gòu)
    本文涉及的無線測(cè)量系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)如圖1所示,主要由無線傳感器、無線收發(fā)器和計(jì)算機(jī)三部分組成。無線傳感器采集現(xiàn)場(chǎng)的數(shù)據(jù),通過無線的方式發(fā)送給無線收發(fā)器,無線收發(fā)器再將數(shù)據(jù)發(fā)送給計(jì)算機(jī),計(jì)算機(jī)接收到數(shù)據(jù)后進(jìn)行分析計(jì)算、顯示、存儲(chǔ)等工作。

2 硬件結(jié)構(gòu)
2.1 無線傳感器硬件結(jié)構(gòu)

    無線傳感器硬件結(jié)構(gòu)如圖2所示,傳感器工作過程是單片機(jī)讀取傳感器采集的測(cè)量數(shù)據(jù),再通過無線模塊發(fā)送給上位PC機(jī)。

    本系統(tǒng)的傳感器是一個(gè)多通道的應(yīng)變測(cè)量傳感器,由于本文主要討論如何更新無線傳感器軟件,所以不對(duì)傳感器設(shè)計(jì)做過多的介紹。
    無線傳感器中的單片機(jī)采用TI公司的MSP430F2274芯片,此芯片是一款性能優(yōu)異的超低功耗16位單片機(jī),帶有32 KB Flash存儲(chǔ)器和1 KB的RAM存儲(chǔ)器,內(nèi)部集成了精度較高的16 MHz的振蕩器,16位的精簡(jiǎn)指令集架構(gòu),還有豐富的外部接口,如UART、SPI、I2C等。本系統(tǒng)利用其SPI接口與無線模塊相連。
    nRF24L01是NORDIC公司的一款無線通信芯片,采用FSK 調(diào)制,內(nèi)部集成NORDIC的Enhanced Short Burst 協(xié)議,可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)或是1對(duì)6的無線通信。無線通信速度最高可以達(dá)到2 Mb/s。只需要單片機(jī)系統(tǒng)預(yù)留5個(gè)GPIO,1個(gè)中斷輸入引腳,就可以很容易實(shí)現(xiàn)無線通信的功能。而且具有極低的電流消耗,當(dāng)工作在發(fā)射模式下發(fā)射功率為-6 dBm時(shí)電流消耗為9.0 mA,工作在接收模式時(shí)電流為12.3 mA,在掉電模式和待機(jī)模式下電流消耗更低。
2.2 無線收發(fā)器的硬件結(jié)構(gòu)
    無線收發(fā)器硬件結(jié)構(gòu)如圖3所示。無線收發(fā)器主要用做數(shù)據(jù)轉(zhuǎn)發(fā),功能較簡(jiǎn)單,所以選取只有20Pin的AT89C2051為控制器件,通過MAX3232與計(jì)算機(jī)串口相連并收發(fā)數(shù)據(jù);通過模擬SPI接口與nRF24L01相連,與無線傳感器交換數(shù)據(jù)。

 

 

3 軟件設(shè)計(jì)
3.1 MSP430單片機(jī)軟件設(shè)計(jì)

    MSP430的軟件設(shè)計(jì)包括無線傳感器程序設(shè)計(jì)和軟件更新引導(dǎo)程序設(shè)計(jì)。軟件更新引導(dǎo)程序的目的就是完成無線傳感器軟件通過無線的方式升級(jí)更新。
3.1.1 軟件更新引導(dǎo)程序的流程
    軟件更新引導(dǎo)程序的流程如圖4所示。

    上電初始化過程首先是穩(wěn)定系統(tǒng)時(shí)鐘,然后通過SPI接口對(duì)nRF24L01進(jìn)行初始化配置,配置的內(nèi)容包括工作模式、發(fā)送地址和接收地址、收發(fā)通道的設(shè)置、傳輸?shù)乃俾屎桶l(fā)射功率、自動(dòng)重發(fā)的次數(shù)等。這些參數(shù)的設(shè)置要與無線收發(fā)器相對(duì)應(yīng),才能保證無線數(shù)據(jù)收發(fā)準(zhǔn)確。
    單片機(jī)對(duì)外圍設(shè)備的操作,例如SPI接口采用查詢式而不是中斷式,因?yàn)闊o線傳感器軟件和軟件更新引導(dǎo)程序用的是同一個(gè)中斷向量表,這樣就不會(huì)因中斷產(chǎn)生沖突。
    對(duì)程序更新,必須保證數(shù)據(jù)通信的可靠性,所以考慮了數(shù)據(jù)包丟失、數(shù)據(jù)包重復(fù)、數(shù)據(jù)包傳輸出錯(cuò)三種錯(cuò)誤。對(duì)于數(shù)據(jù)包丟失,由于nRF24L01內(nèi)部集成了Enhanced Short Burst,可以讓數(shù)據(jù)發(fā)送方知道數(shù)據(jù)包是否發(fā)送成功,而重新發(fā)送數(shù)據(jù)。對(duì)于數(shù)據(jù)包重復(fù),解決方法是在數(shù)據(jù)包中設(shè)置指令編碼。指令編碼是一個(gè)8 bit的無符號(hào)整數(shù),由數(shù)據(jù)發(fā)送方將其放在數(shù)據(jù)包中,每發(fā)送一包數(shù)據(jù),將指令編碼加1,當(dāng)為255時(shí),再?gòu)?開始。數(shù)據(jù)包傳到接收方時(shí),如果與接收方存的指令編碼重復(fù),則認(rèn)為是重復(fù)的數(shù)據(jù)包,從而丟棄。利用指令編碼也可以檢測(cè)有無丟包。對(duì)于傳輸數(shù)據(jù)出錯(cuò),由于nRF24L01無線傳輸中,可以設(shè)置自動(dòng)CRC校驗(yàn),保證數(shù)據(jù)包傳輸出錯(cuò)概率很低。
    在程序更新時(shí),要檢測(cè)寫入的Flash區(qū)必須在無線傳感器軟件代碼區(qū)或中斷向量區(qū)中,如果超出,則不能再進(jìn)行寫入,并設(shè)置更新出錯(cuò),以保護(hù)其他代碼區(qū)的數(shù)據(jù)。在程序更新完畢后,將中斷向量區(qū)的0FFFEh地址的16位數(shù)據(jù)設(shè)置為0F000h,這樣傳感器再重啟后,將首先運(yùn)行軟件更新引導(dǎo)程序,在沒有軟件更新命令時(shí)自動(dòng)跳轉(zhuǎn)到無線傳感器的軟件代碼區(qū)。
3.1.2 存儲(chǔ)器的空間分配
    MSP430F2274存儲(chǔ)空間分配如圖5所示,將無線傳感器的32 KB的Flash存儲(chǔ)區(qū)分割為無線傳感器代碼區(qū)和程序更新引導(dǎo)代碼區(qū),其中08000h~0EFFFh的28 KB存儲(chǔ)區(qū)為無線傳感器代碼區(qū),0F000h~0EFFFh的4 KB存儲(chǔ)區(qū)為程序更新引導(dǎo)代碼區(qū)。兩個(gè)代碼區(qū)存放的是相互獨(dú)立的程序,在無線傳感器程序更新過程中,程序更新引導(dǎo)程序會(huì)檢測(cè)代碼寫入地址,如果是自身的代碼區(qū),則禁止寫入。在IAR編譯器中編譯程序時(shí),需要在“.xcl”文件中對(duì)代碼地址進(jìn)行設(shè)置,對(duì)軟件更新引導(dǎo)程序的編譯CODE區(qū)為“-P(CODE)CODE=F000-FFDF”,對(duì)無線傳感器程序的編譯CODE區(qū)“-P(CODE)CODE=8000-EFFF”。

3.2 無線收發(fā)器的軟件設(shè)計(jì)
    無線收發(fā)器起到信息傳遞中繼的作用,所以其軟件功能比較簡(jiǎn)單,當(dāng)檢測(cè)到nRF24L01接收到無線數(shù)據(jù)時(shí),將接收到的數(shù)據(jù)打包,通過RS232協(xié)議,用串口發(fā)送給計(jì)算機(jī);當(dāng)計(jì)算機(jī)有數(shù)據(jù)通過RS232接口發(fā)送給無線收發(fā)器時(shí),將數(shù)據(jù)打包,通過nRF24L01無線發(fā)送。
3.3 計(jì)算機(jī)的升級(jí)軟件設(shè)計(jì)
    首先要在計(jì)算機(jī)端生成無線傳感器應(yīng)用程序的文件。無線傳感器應(yīng)用軟件編譯是在“project->option->link->output”標(biāo)簽中,將“Format”設(shè)置為“other”,“output”設(shè)置為“map430-txt”,這樣在IAR中程序編譯完,就會(huì)產(chǎn)生“map430-txt”格式的msp430應(yīng)用程序。其內(nèi)容為“@+地址”表示后面程序的起始地址,后面緊跟字節(jié)型的數(shù)據(jù),當(dāng)有字母‘q’時(shí),表示文件結(jié)束。
    計(jì)算機(jī)的升級(jí)軟件首先發(fā)送系統(tǒng)重啟命令,并發(fā)送程序更新命令,在收到無線傳感器準(zhǔn)備好的指令后,讀取無線傳感器應(yīng)用程序的msp430-txt格式的文件,將讀取的文件進(jìn)行轉(zhuǎn)換,發(fā)送給無線傳感器。如果收到更新成功的回復(fù)指令,則提示程序更新成功,否則程序更新失敗。
3.4 計(jì)算機(jī)與傳感器的數(shù)據(jù)傳輸協(xié)議設(shè)計(jì)
    計(jì)算機(jī)與無線傳感器的數(shù)據(jù)傳輸協(xié)議如表1所示,傳輸?shù)臄?shù)據(jù)包長(zhǎng)度與傳感器工作時(shí)的數(shù)據(jù)包長(zhǎng)度相同,為16 B的數(shù)據(jù)包。在傳輸?shù)刂泛蛿?shù)據(jù)時(shí),將第5字節(jié)數(shù)據(jù)設(shè)置為指令編碼,每發(fā)送一個(gè)傳輸?shù)刂返臄?shù)據(jù)包或傳輸數(shù)據(jù)的數(shù)據(jù)包,都將指令編碼增1,供無線傳感器檢測(cè)是否有重復(fù)數(shù)據(jù)包或丟失數(shù)據(jù)包。

    本文在基于MSP430的無線傳感器系統(tǒng)中,設(shè)計(jì)了一種無線傳感器軟件非接觸升級(jí)的方法。該方法充分利用現(xiàn)有資源,不拆卸已安裝好的無線傳感器,穩(wěn)定可靠地完成無線傳感器應(yīng)用程序的升級(jí)更新。該方法在可對(duì)Flash系統(tǒng)編程的其他系列的單片機(jī)系統(tǒng)中同樣適用,具有很高的實(shí)用性和通用性。
參考文獻(xiàn)
[1] 秦龍.MSP430單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型事例[M].北京:中國(guó)電力出版社,2005.
[2] NORDIC公司.nRF24L01 Single Chip 2.4 GHz Transceiver. 2007.
[3] TI公司.MSP430x2xx Family User’s Guide.2006.
[4] TI公司.Features of the MSP430 Bootstrap Loader.2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。