文獻標識碼: A
文章編號: 0258-7998(2011)07-0045-03
無線傳感器綜合了傳感器技術,、嵌入式計算機技術,、分布式信息處理技術和無線通信技術,能夠實時監(jiān)測,、感知和采集網絡分布區(qū)內的環(huán)境或監(jiān)測對象的信息,。目前已經在軍事、航空,、環(huán)境,、醫(yī)療、工業(yè),、商業(yè)等領域有廣泛應用,。對無線傳感器的片上系統(tǒng)軟件的更新,目前多需要有線方式,,如連接JTAG口,、SWB接口等,而對已經安裝好的傳感器進行軟件升級更新,,就需要拆卸連接,,顯得不方便。本文針對一個自行設計的基于MSP430的無線傳感器,,設計了一種非接觸的軟件升級方法,,實現(xiàn)了無線傳感器不拆卸的情況下應用軟件的升級。
1 無線傳感器的整體結構
本文涉及的無線測量系統(tǒng)整體結構設計如圖1所示,,主要由無線傳感器,、無線收發(fā)器和計算機三部分組成。無線傳感器采集現(xiàn)場的數(shù)據(jù),,通過無線的方式發(fā)送給無線收發(fā)器,,無線收發(fā)器再將數(shù)據(jù)發(fā)送給計算機,,計算機接收到數(shù)據(jù)后進行分析計算、顯示,、存儲等工作,。
2 硬件結構
2.1 無線傳感器硬件結構
無線傳感器硬件結構如圖2所示,傳感器工作過程是單片機讀取傳感器采集的測量數(shù)據(jù),,再通過無線模塊發(fā)送給上位PC機,。
本系統(tǒng)的傳感器是一個多通道的應變測量傳感器,由于本文主要討論如何更新無線傳感器軟件,,所以不對傳感器設計做過多的介紹,。
無線傳感器中的單片機采用TI公司的MSP430F2274芯片,此芯片是一款性能優(yōu)異的超低功耗16位單片機,,帶有32 KB Flash存儲器和1 KB的RAM存儲器,,內部集成了精度較高的16 MHz的振蕩器,16位的精簡指令集架構,,還有豐富的外部接口,如UART,、SPI,、I2C等。本系統(tǒng)利用其SPI接口與無線模塊相連,。
nRF24L01是NORDIC公司的一款無線通信芯片,,采用FSK 調制,內部集成NORDIC的Enhanced Short Burst 協(xié)議,,可以實現(xiàn)點對點或是1對6的無線通信,。無線通信速度最高可以達到2 Mb/s。只需要單片機系統(tǒng)預留5個GPIO,,1個中斷輸入引腳,,就可以很容易實現(xiàn)無線通信的功能。而且具有極低的電流消耗,,當工作在發(fā)射模式下發(fā)射功率為-6 dBm時電流消耗為9.0 mA,,工作在接收模式時電流為12.3 mA,在掉電模式和待機模式下電流消耗更低,。
2.2 無線收發(fā)器的硬件結構
無線收發(fā)器硬件結構如圖3所示,。無線收發(fā)器主要用做數(shù)據(jù)轉發(fā),功能較簡單,,所以選取只有20Pin的AT89C2051為控制器件,,通過MAX3232與計算機串口相連并收發(fā)數(shù)據(jù);通過模擬SPI接口與nRF24L01相連,,與無線傳感器交換數(shù)據(jù),。
3 軟件設計
3.1 MSP430單片機軟件設計
MSP430的軟件設計包括無線傳感器程序設計和軟件更新引導程序設計,。軟件更新引導程序的目的就是完成無線傳感器軟件通過無線的方式升級更新。
3.1.1 軟件更新引導程序的流程
軟件更新引導程序的流程如圖4所示,。
上電初始化過程首先是穩(wěn)定系統(tǒng)時鐘,,然后通過SPI接口對nRF24L01進行初始化配置,配置的內容包括工作模式,、發(fā)送地址和接收地址,、收發(fā)通道的設置、傳輸?shù)乃俾屎桶l(fā)射功率,、自動重發(fā)的次數(shù)等,。這些參數(shù)的設置要與無線收發(fā)器相對應,才能保證無線數(shù)據(jù)收發(fā)準確,。
單片機對外圍設備的操作,,例如SPI接口采用查詢式而不是中斷式,因為無線傳感器軟件和軟件更新引導程序用的是同一個中斷向量表,,這樣就不會因中斷產生沖突,。
對程序更新,必須保證數(shù)據(jù)通信的可靠性,,所以考慮了數(shù)據(jù)包丟失,、數(shù)據(jù)包重復、數(shù)據(jù)包傳輸出錯三種錯誤,。對于數(shù)據(jù)包丟失,,由于nRF24L01內部集成了Enhanced Short Burst,可以讓數(shù)據(jù)發(fā)送方知道數(shù)據(jù)包是否發(fā)送成功,,而重新發(fā)送數(shù)據(jù),。對于數(shù)據(jù)包重復,解決方法是在數(shù)據(jù)包中設置指令編碼,。指令編碼是一個8 bit的無符號整數(shù),,由數(shù)據(jù)發(fā)送方將其放在數(shù)據(jù)包中,每發(fā)送一包數(shù)據(jù),,將指令編碼加1,,當為255時,再從0開始,。數(shù)據(jù)包傳到接收方時,,如果與接收方存的指令編碼重復,則認為是重復的數(shù)據(jù)包,,從而丟棄,。利用指令編碼也可以檢測有無丟包。對于傳輸數(shù)據(jù)出錯,,由于nRF24L01無線傳輸中,,可以設置自動CRC校驗,,保證數(shù)據(jù)包傳輸出錯概率很低。
在程序更新時,,要檢測寫入的Flash區(qū)必須在無線傳感器軟件代碼區(qū)或中斷向量區(qū)中,,如果超出,則不能再進行寫入,,并設置更新出錯,,以保護其他代碼區(qū)的數(shù)據(jù)。在程序更新完畢后,,將中斷向量區(qū)的0FFFEh地址的16位數(shù)據(jù)設置為0F000h,,這樣傳感器再重啟后,將首先運行軟件更新引導程序,,在沒有軟件更新命令時自動跳轉到無線傳感器的軟件代碼區(qū),。
3.1.2 存儲器的空間分配
MSP430F2274存儲空間分配如圖5所示,將無線傳感器的32 KB的Flash存儲區(qū)分割為無線傳感器代碼區(qū)和程序更新引導代碼區(qū),,其中08000h~0EFFFh的28 KB存儲區(qū)為無線傳感器代碼區(qū),,0F000h~0EFFFh的4 KB存儲區(qū)為程序更新引導代碼區(qū)。兩個代碼區(qū)存放的是相互獨立的程序,,在無線傳感器程序更新過程中,,程序更新引導程序會檢測代碼寫入地址,如果是自身的代碼區(qū),,則禁止寫入。在IAR編譯器中編譯程序時,,需要在“.xcl”文件中對代碼地址進行設置,,對軟件更新引導程序的編譯CODE區(qū)為“-P(CODE)CODE=F000-FFDF”,對無線傳感器程序的編譯CODE區(qū)“-P(CODE)CODE=8000-EFFF”,。
3.2 無線收發(fā)器的軟件設計
無線收發(fā)器起到信息傳遞中繼的作用,,所以其軟件功能比較簡單,當檢測到nRF24L01接收到無線數(shù)據(jù)時,,將接收到的數(shù)據(jù)打包,,通過RS232協(xié)議,用串口發(fā)送給計算機,;當計算機有數(shù)據(jù)通過RS232接口發(fā)送給無線收發(fā)器時,,將數(shù)據(jù)打包,通過nRF24L01無線發(fā)送,。
3.3 計算機的升級軟件設計
首先要在計算機端生成無線傳感器應用程序的文件,。無線傳感器應用軟件編譯是在“project->option->link->output”標簽中,將“Format”設置為“other”,,“output”設置為“map430-txt”,,這樣在IAR中程序編譯完,,就會產生“map430-txt”格式的msp430應用程序。其內容為“@+地址”表示后面程序的起始地址,,后面緊跟字節(jié)型的數(shù)據(jù),,當有字母‘q’時,表示文件結束,。
計算機的升級軟件首先發(fā)送系統(tǒng)重啟命令,,并發(fā)送程序更新命令,在收到無線傳感器準備好的指令后,,讀取無線傳感器應用程序的msp430-txt格式的文件,,將讀取的文件進行轉換,發(fā)送給無線傳感器,。如果收到更新成功的回復指令,,則提示程序更新成功,否則程序更新失敗,。
3.4 計算機與傳感器的數(shù)據(jù)傳輸協(xié)議設計
計算機與無線傳感器的數(shù)據(jù)傳輸協(xié)議如表1所示,,傳輸?shù)臄?shù)據(jù)包長度與傳感器工作時的數(shù)據(jù)包長度相同,為16 B的數(shù)據(jù)包,。在傳輸?shù)刂泛蛿?shù)據(jù)時,,將第5字節(jié)數(shù)據(jù)設置為指令編碼,每發(fā)送一個傳輸?shù)刂返臄?shù)據(jù)包或傳輸數(shù)據(jù)的數(shù)據(jù)包,,都將指令編碼增1,,供無線傳感器檢測是否有重復數(shù)據(jù)包或丟失數(shù)據(jù)包。
本文在基于MSP430的無線傳感器系統(tǒng)中,,設計了一種無線傳感器軟件非接觸升級的方法,。該方法充分利用現(xiàn)有資源,不拆卸已安裝好的無線傳感器,,穩(wěn)定可靠地完成無線傳感器應用程序的升級更新,。該方法在可對Flash系統(tǒng)編程的其他系列的單片機系統(tǒng)中同樣適用,具有很高的實用性和通用性,。
參考文獻
[1] 秦龍.MSP430單片機應用系統(tǒng)開發(fā)典型事例[M].北京:中國電力出版社,,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.