基于CC1100和MSP430的無線UART實(shí)驗(yàn)設(shè)計(jì)
摘要:為了實(shí)現(xiàn)低功耗的無線串行通信,設(shè)計(jì)了一種對UART進(jìn)行無線傳感器網(wǎng)絡(luò)的應(yīng)用實(shí)驗(yàn)。通過學(xué)習(xí)使用C語言在IAR Embedded Workben ch for ARM軟件開發(fā)平臺進(jìn)行串口的基本設(shè)置和應(yīng)用,并配合使用無線收發(fā)模塊CC1100和具有低功耗MSP430F2132組成的無線傳感器節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)收發(fā)功能,最后使用網(wǎng)關(guān)節(jié)點(diǎn)和PC機(jī)實(shí)現(xiàn)數(shù)據(jù)接收并顯示,整個(gè)設(shè)計(jì)是一個(gè)實(shí)現(xiàn)數(shù)據(jù)發(fā)送、數(shù)據(jù)轉(zhuǎn)發(fā)和數(shù)據(jù)接收,最終數(shù)據(jù)顯示的過程,即UART通信。
關(guān)鍵詞:UART;CC1100;MSP430F2132;串行通信;無線傳感器
隨著計(jì)算機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,尤其是在工業(yè)控制領(lǐng)域的應(yīng)用越來越廣泛,計(jì)算機(jī)通信顯得尤為重要。串行通信雖然使設(shè)備之間的連線大為減少,但隨之帶來串/并轉(zhuǎn)換和位計(jì)數(shù)等問題,這使串行通信技術(shù)比并行通信技術(shù)更為復(fù)雜,串/并轉(zhuǎn)換可用軟件實(shí)現(xiàn),也可用硬件實(shí)現(xiàn)。用軟件實(shí)現(xiàn)串行傳送大多采用循環(huán)移位指令將一個(gè)字節(jié)由高位到低位(或低位到高位)一位一位依次傳送,這種方法雖然簡單但速度慢,而且大量占用CPU的時(shí)間,影響系統(tǒng)的性能。更為方便的實(shí)現(xiàn)方法是用硬件,目前微處理器串行接口常用的LSI芯片是UART、USART和ACIA等,不論是哪一種芯片,它們的一種基本功能是實(shí)現(xiàn)串/并轉(zhuǎn)換。正是這些串行接口芯片彌補(bǔ)了串行通信較為復(fù)雜這一缺陷。因此在串行通信中,傳輸接口是首先需要解決的基本問題。通用異接收發(fā)送器簡稱UART,是一種應(yīng)用廣泛的異步串行通信的傳輸接口,專用UART芯片能夠?qū)崿F(xiàn)比較全面的串行通信功能,而在實(shí)際應(yīng)用中往往只需要使用到UART的部分功能,在設(shè)計(jì)中如果使用無線數(shù)據(jù)節(jié)點(diǎn)即KM-DONE 433,那么在剩余資源充足的情況下就可以充分利用剩余資源實(shí)現(xiàn)所需的UART的功能,這樣就無需再外接專門的UART芯片,從而簡化了電路,縮小了體積、提高了可靠性、并且具有了更大的靈活性。
基于以上考慮,提出一種基于CC1100和MSP430F2132的無線UART實(shí)驗(yàn)設(shè)計(jì),實(shí)現(xiàn)無線傳感器節(jié)點(diǎn)間的通信。
1 總體設(shè)計(jì)
無線傳感器網(wǎng)絡(luò)系統(tǒng)通常包括若干個(gè)傳感器節(jié)點(diǎn)、一個(gè)匯聚節(jié)點(diǎn)和一套管理節(jié)點(diǎn)。大量傳感器節(jié)點(diǎn)隨機(jī)部署在監(jiān)測區(qū)域內(nèi)部或附近,能夠通過自組織方式構(gòu)成網(wǎng)絡(luò)。傳感器節(jié)點(diǎn)具有本地?cái)?shù)據(jù)采集傳輸和轉(zhuǎn)發(fā)鄰節(jié)點(diǎn)數(shù)據(jù)的雙重功能,傳感器節(jié)點(diǎn)監(jiān)測的數(shù)據(jù)沿著其他傳感器節(jié)點(diǎn)逐跳的進(jìn)行傳輸,在傳輸過程中監(jiān)測數(shù)據(jù)可能被多個(gè)節(jié)點(diǎn)處理,經(jīng)過多跳后路由到匯聚節(jié)點(diǎn),最后通過互聯(lián)網(wǎng)或衛(wèi)星到達(dá)管理節(jié)點(diǎn)。
為簡化網(wǎng)絡(luò)結(jié)構(gòu),設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)是由端節(jié)點(diǎn)將接收到的數(shù)據(jù)發(fā)送至路由節(jié)點(diǎn),再由路由節(jié)點(diǎn)將數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),最后通過網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送至PC機(jī),整個(gè)過程實(shí)現(xiàn)的是數(shù)據(jù)的發(fā)送、轉(zhuǎn)發(fā)及接收,最終顯示。
2 硬件實(shí)現(xiàn)
實(shí)驗(yàn)使用的硬件裝置有端節(jié)點(diǎn)、路由節(jié)點(diǎn)和網(wǎng)關(guān)節(jié)點(diǎn),其中端節(jié)點(diǎn)和路由節(jié)點(diǎn)都是使用的無線通信節(jié)點(diǎn)即KM-DONE 433,如圖1所示。
KM-DONE 433硬件結(jié)構(gòu)采用CC1100無線通信模塊,MCU選用MSP430F2132,具有低功耗特性,兩者的結(jié)合使用能滿足本實(shí)驗(yàn)低功耗無線通信的要求。此結(jié)構(gòu)的設(shè)計(jì)能實(shí)現(xiàn)串口通信透明傳輸,可配置各種數(shù)據(jù)格式,并且用戶可選擇保存配置信息,方便下次操作。同時(shí),還能實(shí)現(xiàn)任意長度以及不間斷無線數(shù)據(jù)長度的數(shù)據(jù)發(fā)送,并具有防碰撞機(jī)制,實(shí)現(xiàn)多用戶的數(shù)據(jù)通信。
3 軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)使用C語言在IAR軟件開發(fā)平臺上通過JTAG調(diào)試功能在芯片內(nèi)部進(jìn)行引腳升級運(yùn)行,主要包括端節(jié)點(diǎn)和路由節(jié)點(diǎn)兩部分。程序設(shè)計(jì)思路是通過UART端口配置實(shí)現(xiàn)數(shù)據(jù)收發(fā)的串口通信,在發(fā)送一個(gè)字符時(shí),每個(gè)位周期,UART驅(qū)動一次發(fā)送信號線的狀態(tài),從起始位到8個(gè)數(shù)據(jù)位直到結(jié)束位依次設(shè)置每個(gè)位的電平。在接收一個(gè)字符時(shí),UART在第一個(gè)下降沿開始工作,之后在每個(gè)位時(shí)隙的中央對接收線上的信號狀態(tài)進(jìn)行一次采樣。端節(jié)點(diǎn)和路由節(jié)點(diǎn)程序流程圖分別如圖2、圖3所示。
4 實(shí)驗(yàn)測試及結(jié)果分析
4.1 實(shí)驗(yàn)測試
待串口配置完成后先打開路由節(jié)點(diǎn),觀察現(xiàn)象和串口顯示情況,然后再打開端節(jié)點(diǎn)并觀察實(shí)驗(yàn)現(xiàn)象和串口顯示情況,當(dāng)接收足夠的實(shí)驗(yàn)數(shù)據(jù)后,依次關(guān)閉各節(jié)點(diǎn)和串口,并對實(shí)驗(yàn)現(xiàn)象和數(shù)據(jù)進(jìn)行分析,串口顯示的數(shù)據(jù)如圖4所示。
4.2 實(shí)驗(yàn)結(jié)果分析
首先,由實(shí)驗(yàn)現(xiàn)象得出的結(jié)論:在實(shí)驗(yàn)運(yùn)行過程中,當(dāng)給端節(jié)點(diǎn)接通電源時(shí),觀測到發(fā)送節(jié)點(diǎn)的綠燈有規(guī)律地閃爍,根據(jù)在實(shí)驗(yàn)前程序的設(shè)置,當(dāng)發(fā)送完一個(gè)數(shù)據(jù)包時(shí),綠燈閃爍,由此說明發(fā)送節(jié)點(diǎn)在接通電源時(shí)在發(fā)送數(shù)據(jù)成功;并且綠燈閃爍的次數(shù)就是發(fā)送數(shù)據(jù)包的個(gè)數(shù)。
端節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí)路由節(jié)點(diǎn)的紅燈也開始有規(guī)律地閃爍,說明路由節(jié)點(diǎn)數(shù)據(jù)接收并轉(zhuǎn)發(fā)成功,紅燈閃爍次數(shù)就是路由轉(zhuǎn)發(fā)的數(shù)據(jù)包個(gè)數(shù)。同樣在端節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí)網(wǎng)關(guān)節(jié)點(diǎn)的黃燈也開始有規(guī)律地閃爍,說明網(wǎng)關(guān)接收數(shù)據(jù)成功。其次,由PC機(jī)上串口顯示的數(shù)據(jù)得出結(jié)論。
在網(wǎng)關(guān)節(jié)點(diǎn)閃爍的同時(shí),可以看到PC機(jī)上的串口有數(shù)據(jù)出現(xiàn),這就是網(wǎng)關(guān)接收的數(shù)據(jù)。如圖5所示。
根據(jù)規(guī)定的發(fā)送數(shù)據(jù)的數(shù)據(jù)包格式,以節(jié)點(diǎn)的ID為數(shù)據(jù)包的第一個(gè)數(shù)據(jù)標(biāo)志位,從串口顯示的數(shù)據(jù)中可以看出:劃實(shí)線標(biāo)注部分是ID為0X01的端節(jié)點(diǎn)發(fā)送的數(shù)據(jù)(為0101 02 03 04 05 06 07 08 09),劃虛線標(biāo)注部分是ID為0X84的路由節(jié)點(diǎn)轉(zhuǎn)發(fā)的數(shù)據(jù)(為84 01 02 03 04 05 06 07 08 09),由此可以輕易看出網(wǎng)關(guān)接收的端節(jié)點(diǎn)的數(shù)據(jù)與網(wǎng)關(guān)接收的路由節(jié)點(diǎn)的數(shù)據(jù)相同,再比較接收的數(shù)據(jù)與發(fā)送的數(shù)據(jù)(為01 02 03 04 05 06 07 08 09)也相同,由此可以斷定,網(wǎng)關(guān)接收的數(shù)據(jù)就是端節(jié)點(diǎn)發(fā)送的數(shù)據(jù)。
5 結(jié)束語
基于CC1100和MSP430的無線UART實(shí)驗(yàn)設(shè)計(jì)的主要原理是通過IAR軟件開發(fā)平臺實(shí)現(xiàn)相應(yīng)軟件開發(fā),并配合采用無線傳感器節(jié)點(diǎn)及網(wǎng)關(guān),最終實(shí)現(xiàn)無線傳感器節(jié)點(diǎn)間的UART通信,即實(shí)現(xiàn)端節(jié)點(diǎn)的數(shù)據(jù)發(fā)送、路由節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)發(fā)和網(wǎng)關(guān)節(jié)點(diǎn)的數(shù)據(jù)接收這一過程。通過觀測各個(gè)節(jié)點(diǎn)亮燈情況、閃爍次數(shù)以及電腦上的數(shù)據(jù)顯示來判定功能實(shí)現(xiàn),綜合實(shí)驗(yàn)現(xiàn)象及數(shù)據(jù),表明無線UART通信實(shí)驗(yàn)設(shè)計(jì)取得成功,到達(dá)了預(yù)想的設(shè)計(jì)要求。