nRF2401三點(diǎn)通信設(shè)計要點(diǎn)_第1頁
nRF2401三點(diǎn)通信設(shè)計要點(diǎn)_第2頁
nRF2401三點(diǎn)通信設(shè)計要點(diǎn)_第3頁
nRF2401三點(diǎn)通信設(shè)計要點(diǎn)_第4頁
nRF2401三點(diǎn)通信設(shè)計要點(diǎn)_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、沈陽航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(論文)第1章緒論隨著傳感器網(wǎng)絡(luò)技術(shù)的發(fā)展,傳感器網(wǎng)絡(luò)在物聯(lián)網(wǎng)的應(yīng)用成為目前電子信息技術(shù) 的熱點(diǎn),本題目選取n RF2401無線通信芯片作為收發(fā)模塊來實(shí)現(xiàn)節(jié)點(diǎn)之間的無線數(shù) 據(jù)通信,包括:研究一種適合與傳感器網(wǎng)絡(luò)應(yīng)用的無線通信協(xié)議,開發(fā)基于nRF2401的嵌入式51單片機(jī)的協(xié)議棧,并能夠?qū)崿F(xiàn)nRF2401的信道選擇、數(shù)據(jù)通信、差錯處 理等基本功能。1.1 課題來源WSN網(wǎng)絡(luò)技術(shù)一經(jīng)提出,就迅速在研究界和工業(yè)界得到廣泛的認(rèn)可。1998年到2003年,各種與無線通信、Ad Hoc網(wǎng)絡(luò)、分布式系統(tǒng)的會議開始大量收錄與WSN網(wǎng)絡(luò)技術(shù)相關(guān)的文章。2001年,美國計算

2、機(jī)學(xué)會(ACM)和IEEE成立了第一個專門針 對傳感器網(wǎng)絡(luò)技術(shù)的會議 Intern ati onal Conference on In formatio n Process ing in Sensor Network(IPSN),為WSN網(wǎng)絡(luò)的技術(shù)發(fā)展開拓了一片新的技術(shù)園地。2003年到2004年,一批針對傳感器網(wǎng)絡(luò)技術(shù)的會議相繼組建。ACM在2005年還專門創(chuàng)刊 ACMTran saction on Sensor Network,用來出版最優(yōu)秀的傳感器網(wǎng)絡(luò)技術(shù)成果。2004年,Bost on 大學(xué)與 BP、Hon eywell、In etco Systems Invensys、Mille n

3、nial Net、Radia nse Sensicast Systems等公司聯(lián)合創(chuàng)辦了傳感器網(wǎng)絡(luò)協(xié)會,旨在促進(jìn)WSN技術(shù)的開發(fā)。2006年10月,在中國北京,中國計算機(jī)學(xué)會傳感器網(wǎng)絡(luò)專委會正式成立,標(biāo)志著中 國WSN技術(shù)研究開始進(jìn)入一個新的歷史階段?;谝陨闲畔?,可以看出無線網(wǎng)絡(luò)在以后的發(fā)展上有這巨大的潛力, 所以我在畢 業(yè)設(shè)計中設(shè)計了一個簡單的無線網(wǎng)絡(luò)節(jié)點(diǎn)機(jī),可以實(shí)現(xiàn)點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)和路由轉(zhuǎn)發(fā) 功能。1.2設(shè)計任務(wù)本論文主要完成的任務(wù)有:熟悉 n RF2401的性能、特點(diǎn)及使用方法;熟悉 51單 片機(jī)的指令系統(tǒng)和編程方法;設(shè)計無線數(shù)據(jù)傳輸模塊的通信協(xié)議,協(xié)議要求提供基本 的信道選擇、數(shù)據(jù)通

4、信、差錯處理、路由轉(zhuǎn)發(fā)等功能,數(shù)據(jù)編碼及格式等;使用 語言來實(shí)現(xiàn)協(xié)議棧設(shè)計。在此基礎(chǔ)上,要去了解 TCP/IP、UDP、802.11、802.15.4等協(xié)議,參考這些協(xié)議 完成自己的畢業(yè)設(shè)計,了解無線局域網(wǎng)的基本結(jié)構(gòu)和無線局域網(wǎng)在現(xiàn)實(shí)中的應(yīng)用。本論文主要實(shí)現(xiàn)的功能有:完成點(diǎn)對點(diǎn)通信、點(diǎn)對多點(diǎn)通信、路由轉(zhuǎn)發(fā)通信。給 出詳細(xì)的協(xié)議設(shè)計過程、實(shí)現(xiàn)協(xié)議的基本功能、實(shí)現(xiàn)n RF2401的數(shù)據(jù)通信。-27 -第2章方案分析對于nRF2401的無線傳感器節(jié)點(diǎn)機(jī)的設(shè)計主要有三個部分:發(fā)送數(shù)據(jù)、路由轉(zhuǎn) 發(fā)數(shù)據(jù)和接收數(shù)據(jù)。對于這三個部分,都研究的是信道選擇、數(shù)據(jù)通信和差錯處理上,而對于路由轉(zhuǎn) 發(fā),主要有兩個方法,

5、第一種方法是利用泛洪的思想,第二種方法就是建路徑表。無 線節(jié)點(diǎn)機(jī)的系統(tǒng)測試模型圖如圖2.1所示。圖2.1無線節(jié)點(diǎn)機(jī)測試模型在這個測試模型中,單片機(jī)A與nRF2401組成網(wǎng)絡(luò)節(jié)點(diǎn)A,單片機(jī)B與nRF2401 組成網(wǎng)絡(luò)節(jié)點(diǎn)B,單片機(jī)C與nRF2401組成個網(wǎng)絡(luò)節(jié)點(diǎn)C。在數(shù)據(jù)傳輸過程中,A 向B發(fā)送數(shù)據(jù),如果A、B兩個節(jié)點(diǎn)的距離大于nRF2401本身的傳輸距離,但是A、 C節(jié)點(diǎn)和B、C節(jié)點(diǎn)的距離為nRF2401有效傳輸距離,那么A發(fā)送的數(shù)據(jù)可以通過C 節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)到B節(jié)點(diǎn)。nRF2401是一款工作在2.42.5GHz世界通用ISM頻段的單片無線收發(fā)器芯片。無 線收發(fā)器包括:頻率發(fā)生器、增強(qiáng)型Sho

6、ck Burst模式控制器、功率放大器、晶體振蕩 器、調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過SPI接口進(jìn)行設(shè)置。n RF2401具有極低的消耗電流,當(dāng)工作在發(fā)射模式下,發(fā)射功率為-6dBm時電流消耗為9.0mA,接收模式時為12.3mA。掉電模式和待機(jī)模式下電流消耗更低2.1信道選擇無線網(wǎng)絡(luò)中,信道選擇的重要性不言而喻。在 n RF2401中,在配置為接收模式時 可以接收6路不用地址(通道0到通道5)的相同頻率的數(shù)據(jù)。每個數(shù)據(jù)通道擁有自己的 地址并且可以通過寄存器來進(jìn)行分別配置。 通常情況下不允許不同的數(shù)據(jù)通道設(shè)置完 全相同的地址。所有數(shù)據(jù)通道可以設(shè)置多達(dá)40位地址,數(shù)據(jù)通道0

7、有40位可配置地址,是唯一的 一個可以配置為40位自身地址的數(shù)據(jù)通道。數(shù)據(jù)通道15的地址為32位共用地址+各自 的地址的最低字節(jié),其中共用地址必須相同而各自的地址必須不同。如圖2.2所示。0xE70xD3OxFO0x350x770xC20xC20xC20xC20xC2| Byte A Ryte 3 Byt它 2 Byte 1Data pipe 0 (rx addr pdjData pipe 1 (Fix addr_pdData pipe 2(RX addr pjjData pipe 3 addr P3)Data pipe 4 皿 addr p冊Data pipe 5(RX addr p&

8、;)圖2.2數(shù)據(jù)通道05的地址配置當(dāng)從一個數(shù)據(jù)通道中接收到數(shù)據(jù),如果數(shù)據(jù)通道設(shè)置為應(yīng)答方式的話,那么 nRF2401在收到數(shù)據(jù)后產(chǎn)生應(yīng)答信號,此應(yīng)答信號的目標(biāo)地址為接收通道地址。在發(fā)送端,數(shù)據(jù)通道0被用做接收應(yīng)答信號,因此數(shù)據(jù)通道0的接收地址要與發(fā)送 端地址相等以確保接收到正確的應(yīng)答信號。2.2發(fā)送和接收數(shù)據(jù)包在接收數(shù)據(jù)的時候,nRF2401模塊配置成接收模式(CE=1),在發(fā)射數(shù)據(jù)的時候, nRF2401模塊配置為發(fā)射模式(CE=1,持續(xù)至少10us), 130us后啟動發(fā)射,再過37us后 發(fā)送一個字節(jié)。數(shù)據(jù)發(fā)送結(jié)束后,發(fā)送模塊自動轉(zhuǎn)入接收模式等待應(yīng)答信號。發(fā)送模塊在收到應(yīng)答信號后產(chǎn)生中斷

9、通知 MCU,接收模塊接收到數(shù)據(jù)包后產(chǎn)生中斷通知 MCU。發(fā)送數(shù)據(jù)包時序圖如圖2.3所示。PTX Mode -stsxiI Byte payload ack(339 燼)ESB cycleGE high mrinnim 10 usPTX: CEPTX IRQ (TX_.DS* Palaad (33 us + 4 us4)yte129 usACK (33 us)/*嚴(yán) usSPI: RQ Ct&arJF128 U$*-STHY 1-(RXAntennaPRX: CEPRX: IRQ (RX_DR)PRX: Made圖2.3發(fā)送數(shù)據(jù)包時序圖2.3差錯處理在nRF240忡,自帶了 CRC校驗(yàn)

10、,CRC校驗(yàn)的長度是通過SPI接口進(jìn)行配置的 定要注意CRC計算范圍包括整個數(shù)據(jù)包:地址、PID和有效數(shù)據(jù)等。每一包數(shù)據(jù)都包括兩位的PID(數(shù)據(jù)包序號)來識別接收的數(shù)據(jù)是新數(shù)據(jù)包還是重 發(fā)的數(shù)據(jù)包。PID序號可以防止接收端同一數(shù)據(jù)包多次送入 MCU,在發(fā)送方每次從 MCU取得一包新數(shù)據(jù)后PID值加一。PID和CRC校驗(yàn)應(yīng)用在接收方,識別接收的數(shù)據(jù) 是重發(fā)的數(shù)據(jù)包還是新數(shù)據(jù)包。如果在鏈接中有一些數(shù)據(jù)丟失了,則PID值與上一包數(shù)據(jù)的PID值相同。這時,nRF2401將對兩包數(shù)據(jù)的CRC值進(jìn)行比較,如果CRC值也相同的話就認(rèn)為后面一包是前一包的重發(fā)數(shù)據(jù)包而被舍棄2.3.1接收方接收方對新接收數(shù)據(jù)包的

11、PID值與上一包進(jìn)行比較,如果PID值不同,則認(rèn)為接 收的數(shù)據(jù)包是新數(shù)據(jù)包。如果PID值與上一包相同,則新接收的數(shù)據(jù)包有可能與前一 包相同。接收方必須確認(rèn)CRC值是否相等,如果CRC值與前一包數(shù)據(jù)的CRC值相等, 則認(rèn)為是同一包數(shù)據(jù)并將其舍棄。2.3.2發(fā)送發(fā)每發(fā)送一包新的數(shù)據(jù)則發(fā)送方的PID值加一。PID值生成和檢查的流程如圖2.4、2.5所示。圖2.5 PID值檢查2.4數(shù)據(jù)轉(zhuǎn)發(fā)功能在說數(shù)據(jù)轉(zhuǎn)發(fā)之前,我們首先要清楚路由和中繼這兩個概念中繼器是用來延長網(wǎng)絡(luò)距離的互連設(shè)備。 中繼器可以增強(qiáng)線路上衰減的信號, 它 兩端即可以連接相同的傳輸媒體,也可以連接不同的媒體。而路由器工作在網(wǎng)絡(luò)層, 它能理

12、解數(shù)據(jù)中的IP地址,它具有判斷網(wǎng)絡(luò)地址和選擇路徑的功能,過濾和分隔網(wǎng) 絡(luò)信息流。簡單的說,中繼器只能轉(zhuǎn)發(fā)數(shù)據(jù)但是不能接收數(shù)據(jù), 但是路由器不僅可以 轉(zhuǎn)發(fā)數(shù)據(jù)而且還可以接收數(shù)據(jù)。當(dāng)兩個節(jié)點(diǎn)的距離大于 n RF2401的傳輸距離的時候,我們就不得不使用一個 節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。這時候這個節(jié)點(diǎn)就相當(dāng)于是一個中繼器,但是當(dāng)發(fā)送端發(fā)送過 來的數(shù)據(jù)正好是中間節(jié)點(diǎn)的數(shù)據(jù)的時候,這個中間節(jié)點(diǎn)就需要接收數(shù)據(jù),這時 這個中間節(jié)點(diǎn)就相當(dāng)于一個路由器。中繼節(jié)點(diǎn)的主要工作就是為經(jīng)過路由節(jié)點(diǎn)的每個數(shù)據(jù)幀尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)。 由此可見,路由算法是路由節(jié)點(diǎn)的關(guān)鍵所在。 為 了完成這項(xiàng)工作,主要有兩

13、種方式完成數(shù)據(jù)的轉(zhuǎn)發(fā)工作。第一種方法是泛洪,第二 種方法是建路徑表。通過選擇路徑,依靠中間的中繼節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。第一種方 法,會帶來極大的通信開銷,在大型網(wǎng)絡(luò)中一般不用。泛洪不去考慮中間數(shù)據(jù)傳輸?shù)膫鬏斅窂剑虚g的路由節(jié)點(diǎn)只去判斷這個數(shù)據(jù)是不 是本身節(jié)點(diǎn)需要的數(shù)據(jù),如果是我這個節(jié)點(diǎn)需要的數(shù)據(jù),我就將數(shù)據(jù)接收過來,如果 不是我這個節(jié)點(diǎn)的接收的數(shù)據(jù),我就要將數(shù)據(jù)發(fā)送出去。建立數(shù)據(jù)路徑表,供路由選擇。使用時,路徑表中保存著子網(wǎng)的標(biāo)志信息、網(wǎng)上 路由器的個數(shù)和下一個路由器的名字等內(nèi)容。路徑表可以是系統(tǒng)管理員固定設(shè)置好 的,也可以由系統(tǒng)動態(tài)修改,可以是路由器自動調(diào)整,也可以是主機(jī)控制。建路徑表是在數(shù)據(jù)傳輸之

14、前,根據(jù)一定的路徑選擇算法來確認(rèn)這個傳輸?shù)穆窂健?這個路徑可以是固定的,也可以是根據(jù)網(wǎng)絡(luò)環(huán)境自動調(diào)整的。2.4.1泛洪為了說明泛洪的原理,這里先用交換技術(shù)為例。泛洪是交換機(jī)和網(wǎng)橋使用的一種數(shù)據(jù)流傳遞技術(shù),將某個接口收到的數(shù)據(jù)流從除該接口之外的所有接口發(fā)送出去,如果A節(jié)點(diǎn)的數(shù)據(jù)要發(fā)送到 D節(jié)點(diǎn),泛洪的方法傳輸數(shù)據(jù)的模型如圖 2.6所示。圖2.6泛洪方式路由轉(zhuǎn)發(fā)數(shù)據(jù)模型交換機(jī)根據(jù)收到數(shù)據(jù)幀中的源MAC地址建立該地址同交換機(jī)端口的映射,并將其寫入 MAC地址表中。交換機(jī)將數(shù)據(jù)幀中的目的MAC地址同已建立的MAC地址表進(jìn)行比較,以決定由哪個端口進(jìn)行轉(zhuǎn)發(fā)。如數(shù)據(jù)幀中的目的MAC地址不在MAC地址表中,則

15、向所有端口轉(zhuǎn)發(fā)。 因?yàn)榉汉榈姆椒]有路徑可以使 用,所以泛洪的方法很容易受到攻擊,而且因?yàn)闆]有路徑,所有的網(wǎng)絡(luò)節(jié)點(diǎn)都 會工作,這樣就會浪費(fèi)大量的資源,功耗比較大。使用泛洪的方法進(jìn)行路由轉(zhuǎn) 發(fā)數(shù)據(jù)主要有三種方法進(jìn)行攻擊網(wǎng)絡(luò)。SYN泛洪攻擊。SYN攻擊利用的是 TCP的三次握手機(jī)制,攻擊端利用偽造 的IP地址向被攻擊端發(fā)出請求,而被攻擊端發(fā)出相應(yīng)的報文將永遠(yuǎn)發(fā)送不到目 的地,那么被攻擊端在等待關(guān)閉這個連接的過程中消耗了資源,如果有成千上 萬的這種連接,主機(jī)資源將被耗盡,從而達(dá)到攻擊的目的。我們可以利用路由 器的TCP攔截功能,保護(hù)網(wǎng)絡(luò)上的主機(jī)。DHCP報文范洪攻擊。指惡意用戶利用工具偽造大量DHC

16、P報文發(fā)送到服務(wù)器,一方面惡意耗盡 IP資源,使得合法用戶無法獲得IP資源;另一方面,如果交換機(jī)上開啟了 DHCP Snooping功能,會將接收到的 DHCP報文上送到CPU 因此大量的DHCP報文攻擊設(shè)備會使 DHCP服務(wù)器高負(fù)荷運(yùn)行,甚至?xí)?dǎo)致設(shè) 備癱瘓。ADDR攻擊。與DHCP類似,同樣是惡意用戶發(fā)出大量的APP報文,造成L3設(shè)備的APP表溢出,影響正常用戶的轉(zhuǎn)發(fā)。2.4.2路徑表路徑表是指路由器中保存著的各種傳輸路徑的相關(guān)數(shù)據(jù),供路由選擇時使 用。路徑表中保存著子網(wǎng)的標(biāo)志信息、網(wǎng)上路由器的個數(shù)和下一個路由器名字 等內(nèi)容。路徑表可以是由系統(tǒng)管理員固定設(shè)置好的,也可以由系統(tǒng)動態(tài)修改, 可

17、以由路由器自動調(diào)整,也可以由主機(jī)控制。路徑表分為兩種:1 .靜態(tài)路徑表由系統(tǒng)管理員事先設(shè)置好固定的路徑表稱之為靜態(tài)路徑表,一般是在系統(tǒng)安裝時 就根據(jù)網(wǎng)絡(luò)的配置情況預(yù)先設(shè)定的,它不會隨未來網(wǎng)絡(luò)結(jié)構(gòu)的改變而改變。2.動態(tài)路徑表動態(tài)路徑表是路由器根據(jù)網(wǎng)絡(luò)系統(tǒng)的運(yùn)行情況而自動調(diào)整的路徑表。 路由器根據(jù) 路由選擇協(xié)議提供的功能,自動學(xué)習(xí)和記憶網(wǎng)絡(luò)運(yùn)行情況,在需要時自動計算數(shù)據(jù)傳 輸?shù)淖罴崖窂健H绻鸄節(jié)點(diǎn)的數(shù)據(jù)要發(fā)送到 D節(jié)點(diǎn),同時A節(jié)點(diǎn)的數(shù)據(jù)也可以發(fā)送到 E節(jié)點(diǎn), 當(dāng)數(shù)據(jù)傳輸?shù)臅r候,系統(tǒng)會根據(jù)路徑表,將數(shù)據(jù)通過某個路徑發(fā)送到指定的位 置。建路徑表傳輸數(shù)據(jù)的模型如圖2.7所示。圖2.7路徑表方式路由轉(zhuǎn)發(fā)數(shù)

18、據(jù)路由節(jié)點(diǎn)要按照某種路由通信協(xié)議, 查找路由表,路由表中列出整個無線局域網(wǎng) 中包含的各個節(jié)點(diǎn),以及節(jié)點(diǎn)間的路徑情況和與它們相聯(lián)系的傳輸費(fèi)用。如果到特定的節(jié)點(diǎn)有一條以上路徑,則基于預(yù)先確定的準(zhǔn)則選擇最優(yōu) (最經(jīng)濟(jì))的路徑。由于各種 網(wǎng)絡(luò)段和其相互連接情況可能發(fā)生變化, 因此路由情況的信息需要及時更新, 這是由 所使用的路由信息協(xié)議規(guī)定的定時更新或者按變化情況更新來完成。網(wǎng)絡(luò)中的每個路由節(jié)點(diǎn)按照這一規(guī)則動態(tài)地更新它所保持的路由表,以便保持有效的路由信息。路由節(jié)點(diǎn)在轉(zhuǎn)發(fā)報文的過程中,為了便于在網(wǎng)絡(luò)間傳送報文,按照預(yù)定的規(guī)則把 大的數(shù)據(jù)包分解成適當(dāng)大小的數(shù)據(jù)包,到達(dá)目的地后再把分解的數(shù)據(jù)包包裝成原有形

19、 式。多協(xié)議的路由節(jié)點(diǎn)可以連接使用不同通信協(xié)議的網(wǎng)絡(luò)段,作為不同通信協(xié)議網(wǎng)絡(luò)段通信連接的平臺。路由節(jié)點(diǎn)的主要任務(wù)是把通信引導(dǎo)到目的地網(wǎng)絡(luò),然后到達(dá)特定的節(jié)點(diǎn)站地址。 后一個功能是通過網(wǎng)絡(luò)地址分解完成的。例如,把網(wǎng)絡(luò)地址部分的分配指定成網(wǎng)絡(luò)、 子網(wǎng)和區(qū)域的一組節(jié)點(diǎn),其余的用來指明子網(wǎng)中的特別站。分層尋址允許路由節(jié)點(diǎn)對 有很多個節(jié)點(diǎn)站的網(wǎng)絡(luò)存儲尋址信息。在廣域網(wǎng)范圍內(nèi)的路由器按其轉(zhuǎn)發(fā)報文的性能可以分為兩種類型, 即中間節(jié)點(diǎn)路 由器和邊界路由器。盡管在不斷改進(jìn)的各種路由協(xié)議中, 對這兩類路由器所使用的名 稱可能有很大的差別,但所發(fā)揮的作用卻是一樣的。路由節(jié)點(diǎn)在網(wǎng)絡(luò)中傳輸時,提供報文的存儲和轉(zhuǎn)發(fā)。同時

20、根據(jù)當(dāng)前的路由表所保 持的路由信息情況,選擇最好的路徑傳送報文。由多個互連的LAN組成的公司或企業(yè)網(wǎng)絡(luò)一側(cè)和外界廣域網(wǎng)相連接的路由器,就是這個企業(yè)網(wǎng)絡(luò)的邊界路由器。它從外部廣域網(wǎng)收集向本企業(yè)網(wǎng)絡(luò)尋址的信息,轉(zhuǎn)發(fā)到企業(yè)網(wǎng)絡(luò)中有關(guān)的網(wǎng)絡(luò)段;另一方面集中企業(yè)網(wǎng)絡(luò)中各個LAN段向外部廣域網(wǎng)發(fā)送的報文,對相關(guān)的報文確定最好的傳 輸路徑。2.5軟件設(shè)計思路nRF2401是一款工作在2.42.5GHz世界通用ISM頻段的單片無線收發(fā)器芯片。無 線收發(fā)器包括:頻率發(fā)生器增強(qiáng)型Shock Burst模式控制器、功率放大器、晶體振蕩器、 調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過 SPI接口進(jìn)行設(shè)置。

21、 在 nRF2401工作的時候,最重要的一種協(xié)議就是 SPI協(xié)議。SPI是英語Serial Peripheral in terface勺縮寫,就是串行外圍設(shè)備接口。 主要應(yīng)用在 EEPROM、FLASH、實(shí)時時鐘、AD轉(zhuǎn)換器,還有數(shù)字信號處理和數(shù)字信號解碼器之 間。SPI是一種高速的,全雙工,同步通信總線,在芯片的管腳上只有 4跟線,節(jié)約了 芯片的管腳,同時為PCB的布局節(jié)省空間,操作方便,正是因?yàn)檫@種簡單的特征,越 來越多的芯片使用了這種通信協(xié)議。SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個 或多個從設(shè)備,需要至少4根線,事實(shí)上3根也可以(用于單向傳輸時,也就是半

22、雙 工方式)。也是所有基于SPI的設(shè)備共有的,它們是SDI (數(shù)據(jù)輸入),SDO (數(shù)據(jù)輸 出),SCLK (時鐘),CS (片選)。在nRF2401中,數(shù)據(jù)輸入為 MOSI,數(shù)據(jù)輸出為 MISO,時鐘為SCK,片選為CSN。(1)MOSI -SPI總線主機(jī)輸出/從機(jī)輸入(2)MISO -SPI總線主機(jī)輸入/從機(jī)輸出SCK -寸鐘信號,由主設(shè)備產(chǎn)生(4) CSN -從設(shè)備使能信號,由主設(shè)備控制其中CSN是控制芯片是否被選中的,也就是說只有片選信號為預(yù)先規(guī)定的使能信 號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個 SPI設(shè)備。接下來就負(fù)責(zé)通訊的3根線了。通訊是通過數(shù)據(jù)

23、交換完成的,這里先要知道 SPI 是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)?。這就是SCK時鐘線存在的原因, 由SCK提供時鐘脈沖。MOSI、MISO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過MOSI 線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一 位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少 8次時鐘信號的改變(上沿和下沿為 一次),就可以完成8位數(shù)據(jù)的傳輸。要注意的是,SCK信號線只由主設(shè)備控制,從設(shè)備不能控制信號線。同樣,在一個基于SPI的設(shè)備中,至少有一個主控設(shè)備。這樣的傳輸方式與普通的串行通訊不同, 普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)

24、一位一位的傳送,甚至允 許暫停,因?yàn)镾CK時鐘線由主控設(shè)備控制,當(dāng)沒有時鐘跳變時,從設(shè)備不采集或傳送 數(shù)據(jù)。也就是說,主設(shè)備通過對SCK時鐘線的控制可以完成對通訊的控制。因?yàn)?SPI 的數(shù)據(jù)輸入和輸出線獨(dú)立,允許同時完成數(shù)據(jù)的輸入和輸出,所以SPI還是一個數(shù)據(jù)交換協(xié)議。不同的SPI設(shè)備實(shí)現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同, 在時鐘信號上沿或下沿采集有不同定義。SPI主模塊和與之通信的外設(shè)備時鐘相位和極性應(yīng)該一致。這句話有2層意思:其 一,主設(shè)備SPI時鐘和極性的配置應(yīng)該由外設(shè)來決定;其二,二者的配置應(yīng)該保持一 致,即主設(shè)備的MOSI同從設(shè)備的MOSI配置一致,主設(shè)備的MISO同從設(shè)

25、備的MISO 配置一致。因?yàn)橹鲝脑O(shè)備是在SCK的控制下,同時發(fā)送和接收數(shù)據(jù),并通過 2個雙向 移位寄存器來交換數(shù)據(jù)。在點(diǎn)對點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡單 高效。在多個從設(shè)備的系統(tǒng)中,每個從設(shè)備需要獨(dú)立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。Shock Burst模式下nRF2401可以與成本較低的低速M(fèi)CU相連。高速信號處理是由 芯片內(nèi)部的射頻協(xié)議處理的,n RF2401提供SPI接口,數(shù)據(jù)率取決于單片機(jī)本身接口 速度。Shock Burst模式通過允許與單片機(jī)低速通信而無線部分高速通信,這樣可以減小通信的平均消耗電流。在Shock Burst接收模式

26、下,當(dāng)接收到有效的地址和數(shù)據(jù)時IRQ通知MCU,隨后MCU可將接收到的數(shù)據(jù)從RX_FIFO寄存器中讀出。在Shock Burst發(fā)送模式下,nRF2401自動生成前導(dǎo)碼及CRC。數(shù)據(jù)發(fā)送完畢后IRQ 通知MCU。減少了 MCU的查詢時間,也就意味著減少了 MCU工作量的同時減少了軟 件的開發(fā)時間,nRF2401內(nèi)部有三個不同的RX_FIFO寄存器和三個不同的TX_FIFO寄 存器。在掉電模式下、待機(jī)模式下和數(shù)據(jù)傳輸?shù)倪^程中 MCU可以隨時訪問FIFO寄存 器。這就允許SPI接口可以以低速進(jìn)行數(shù)據(jù)傳送,并且可以應(yīng)用于MCU硬件上沒有SPI 接口的情況。增強(qiáng)型Shock Burs模式可以使得雙向鏈

27、接協(xié)議執(zhí)行起來更為容易、有效。典型的雙向鏈接為:發(fā)送方要求終端設(shè)備在接收到數(shù)據(jù)后有應(yīng)答信號,以便于發(fā)送方檢測有無數(shù)據(jù)丟失。一旦數(shù)據(jù)丟失,則通過重新發(fā)送功能將丟失的數(shù)據(jù)恢復(fù)。增強(qiáng)型的ShockBurst模式可以同時控制應(yīng)答及重發(fā)功能而無需增加 MCU工作量。2.5.1自動應(yīng)答(RX):自動應(yīng)答功能減少了外部MCU的工作量,因此降低成本減少電流消耗。自動應(yīng) 答功能可以通過SPI口對不同的數(shù)據(jù)通道分別進(jìn)行配置。在自動應(yīng)答模式使能的情況下,收到有效的數(shù)據(jù)包后,系統(tǒng)將進(jìn)入發(fā)送模式并發(fā) 送確認(rèn)信號。發(fā)送完確認(rèn)信號后,系統(tǒng)進(jìn)入正常工作模式。2.5.2自動重發(fā)功能ART(TX):自動重發(fā)功能是針對發(fā)送方的自動

28、應(yīng)答系統(tǒng)。SETUP_RETR寄存器設(shè)置啟動重發(fā) 數(shù)據(jù)的時間長度。在每次發(fā)送結(jié)束后系統(tǒng)都會進(jìn)入接收模式并在設(shè)定的時間范圍內(nèi)等 待應(yīng)答信號。接收到應(yīng)答信號后,系統(tǒng)轉(zhuǎn)入正常發(fā)送模式。如果TX_FIFO中沒有待發(fā) 送的數(shù)據(jù)且CE腳電平為低,則系統(tǒng)將進(jìn)入待機(jī)模式I。如果沒有收到確認(rèn)信號,則系 統(tǒng)返回到發(fā)送模式并重發(fā)數(shù)據(jù)直到收到確認(rèn)信號或重發(fā)次數(shù)超過設(shè)定值。有新的數(shù)據(jù)發(fā)送或PRIM_RX寄存器配置改變時丟包計數(shù)器復(fù)位。第3章硬件設(shè)計整個無線傳感器節(jié)點(diǎn)機(jī)的設(shè)計的硬件電路主要是以51單片機(jī)為核心的數(shù)處理系統(tǒng)、nRF2401的無線通信片和電源電路。在硬件的設(shè)計中,nRF2401使用的是無線模塊,電源電路是由

29、AMS1117這種穩(wěn) 壓芯片組成。3.1 51單片機(jī)部分單片機(jī)是本設(shè)計中數(shù)據(jù)處理的重要部分,本文采用的是STC公司的STC89C51系列單片機(jī)中的 STC89C52芯片。這是一款 8051的內(nèi)核芯片,內(nèi)部含有 Flash EEPROM存儲器,該器件為CMOS產(chǎn)品。單片機(jī)的內(nèi)部RAM為512B,芯片外部晶 振最高可以接入40MHz,溫度是0到70攝氏度。單片機(jī)為雙列直插式,51單片機(jī) 的最小系統(tǒng)電路如圖3.1所示。圖3.1單片機(jī)最小系統(tǒng)3.1.1單片機(jī)的空閑與掉電模式當(dāng)單片機(jī)進(jìn)入空閑模式時,除了 CPU處于休眠期狀態(tài)外,其余硬件全部處于活 動狀態(tài),芯片中程序未涉及的數(shù)據(jù)存儲器和特殊功能寄存器中的

30、數(shù)據(jù)在空閑模式期間 都保持原值。假若定時器正在運(yùn)行,那么計數(shù)器存儲器中的值還會增加。 單片機(jī)在空 閑模式下可由n RF2401發(fā)送或者接收數(shù)據(jù)來喚醒。讓單片機(jī)進(jìn)入空閑模式是為了減 少功耗。當(dāng)單片機(jī)進(jìn)入掉電模式時,外部晶振停震,CPU、定時器、串行口全部停止工作, 只有外部中斷繼續(xù)進(jìn)行工作。使單片機(jī)進(jìn)入掉電模式的指令將成為休眠前單片機(jī)執(zhí)行 的最后一條指令。進(jìn)入掉電模式后,芯片中程序未涉及的數(shù)據(jù)存儲器和特殊功能寄存 器中的數(shù)據(jù)將保持原值??梢杂猛獠恐袛嗟碗娖接|發(fā),或下降沿觸發(fā)中斷,或硬件復(fù) 位模式喚醒單片機(jī)。需要注意的是,使用中斷喚醒單片機(jī)時,程序從原停止處繼續(xù)運(yùn) 行;當(dāng)使用硬件復(fù)位喚醒單片機(jī)時,

31、程序?qū)念^開始執(zhí)行。如果單片機(jī)進(jìn)入掉電模式 以后重新上電nRF2401將重新工作,不會記錄原來發(fā)送的數(shù)據(jù)。3.1.2單片機(jī)的“看門狗”在單片機(jī)構(gòu)成的系統(tǒng)中,由于單片機(jī)的工作有可能受到來自外界電磁場的干擾, 造成程序的跑飛,從而陷入死循環(huán),程序的正常運(yùn)行被打斷,單片機(jī)控制的系統(tǒng)便無 法繼續(xù)工作,這樣會造成整個系統(tǒng)陷入停滯狀態(tài), 發(fā)生不可預(yù)料的后果,所以出于對 單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時監(jiān)測的考慮,便產(chǎn)生了一種專門用于監(jiān)測單片機(jī)程序運(yùn)行狀 態(tài)的芯片,俗稱“看門狗”。加入看門狗電路的目的是使單片機(jī)可以在無人狀態(tài)下實(shí)現(xiàn)連續(xù)工作,其工作過程如下:單片機(jī)程序控制看門狗。使它定時地往看門狗芯片中送入高電平 (或

32、低電平), 這一程序語句是分散地放在單片機(jī)其他控制語句中的,一旦單片機(jī)由于干擾造成程序跑飛而陷入某一程序段進(jìn)入死循環(huán)時,給看門狗送電平的程序便不會被執(zhí)行,這時, 看門狗電路就會由于得不到單片機(jī)送來的信號, 便對它與單片機(jī)復(fù)位引腳送一個復(fù)位 信號,使單片機(jī)復(fù)位,從而使單片機(jī)從程序存儲器的起始位子重新開始執(zhí)行程序,這樣便實(shí)現(xiàn)了單片機(jī)的自動復(fù)位。在STC89C51系列單片機(jī)中,內(nèi)置了看門狗功能,這樣就不用單獨(dú)完成看門狗, 通過相對應(yīng)的特殊功能寄存器的設(shè)置就可以實(shí)現(xiàn)看門狗的應(yīng)用。3.1.3內(nèi)部擴(kuò)展RAMRAM是在程序運(yùn)行中存放隨機(jī)變量的數(shù)據(jù)空間,51單片機(jī)默認(rèn)的內(nèi)部RAM只有128B。對于編程者來說,

33、一個芯片的 RAM空間越大,寫起程序來就容易得心應(yīng) 手,不用考慮因?yàn)镽AM不夠而不敢過多的對變量進(jìn)行定義。一旦程序中的總變量超過了 128B,必須對所有變量進(jìn)行初始化,否則沒有被初 始化的變量默認(rèn)值將不會確定。當(dāng)變量總和超過128B時,還必須要在編譯器中重新設(shè)定存儲器的存儲模式。存儲器模式有三種,分別是small、compact和large模式。他決定了沒有明確指 定存儲類型的變量。如果在某些函數(shù)中需要使用非默認(rèn)的存儲模式, 也可以使用關(guān)鍵 字直接說明。small模式中,所有默認(rèn)變量均裝入單片機(jī)內(nèi)部128B的RAM中,當(dāng)定義類似“uchar a; “float b;”等變量時,這些變量都裝入內(nèi)

34、部 128B的RAM中;compact 模式中,所有默認(rèn)變量均位于單片機(jī)內(nèi)部的 256B的RAM中,和在small模式中使用 關(guān)鍵字pdata來定義變量的效果相同;在large模式中,所有默認(rèn)變量可放在多達(dá)64KB 的RAM區(qū),包括內(nèi)部RAM和外部RAM,這和使用關(guān)鍵字xdata來定義變量的效果 相同。3.1.4內(nèi)部EEPROM 的應(yīng)用STC89C51, STC89C52內(nèi)部都自帶有2KB的EEPROM,STC單片機(jī)是禾U用IAP 技術(shù)實(shí)現(xiàn)的EEPROM,內(nèi)部Flash擦寫次數(shù)可達(dá)100000次以上。IAP就是片子提供一系列的機(jī)制,當(dāng)片子在運(yùn)行程序時可以提供一種改變Flash數(shù)據(jù)的方法。也就是

35、說,程序自己往程序存儲器里寫數(shù)據(jù)或修改程序。3.2電源電路部分由于單片機(jī)最小系統(tǒng)需要5v電壓供電,nRF2401芯片需要3.3v電壓供電。所以, 我在設(shè)計電源的時候,設(shè)計了 5v和3.3v兩種電源。電源是通過 4節(jié)干電池通過 AMS1117-5和AMS1117-3.3兩種穩(wěn)壓芯片得到的。1A電AMS1117是一款正電壓輸出低壓差的三段線性穩(wěn)壓電路的芯片,在輸出 流時,輸入輸出的電壓差典型值為1.8v。AMS1117是一個低漏失電壓調(diào)整器,它的穩(wěn)壓調(diào)整管是由一個 PNP驅(qū)動的NPN 管組成的,漏失電壓定義為:VDROP=VBE+VSAT。AMS1117有固定和可調(diào)兩個版本可用,輸出電壓可以是:

36、1.8v,3.3v和5.0v。片 內(nèi)過熱切斷電路提供了過載和過熱保護(hù),以防環(huán)境溫度造成過高的結(jié)溫,其中過流保 護(hù)和過熱保護(hù)模塊,能夠在應(yīng)用電路的環(huán)境溫度大于 120C以上或負(fù)載電流大900mA 時,保證芯片和系統(tǒng)的安全。為了確保AMS1117的穩(wěn)定性,輸出需要連接一個至少22卩F的鉭電容。通常, 線性調(diào)整器的穩(wěn)定性隨著輸出電流增加而降低,電源電路如圖3.2所示。圖3.2電源模塊電路圖3.3 nRF2401無線通信模塊部分n RF2401是挪威Nordic公司推出的單片無線收發(fā)一體芯片, 工作在2.4GHz,ISM頻段,具有接收靈敏度高、外圍電路少、發(fā)射功率低、傳輸速率高和功耗低等特點(diǎn),可以實(shí)現(xiàn)

37、點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)的通信。3.3.1模塊介紹n RF2401是有126頻道,滿足多點(diǎn)通信和跳頻通信需要;內(nèi)置硬件 CRC檢錯和點(diǎn) 對多點(diǎn)通信地址控制;低功耗1.9 - 3.6V工作,待機(jī)模式下狀態(tài)為22uA;掉電模式下 為900nA;內(nèi)置2.4GHz天線,體積小巧15mm X29mm;模塊可軟件設(shè)地址,只有收到 本機(jī)地址時才會輸出數(shù)據(jù)(提供中斷指示),可直接接各種單片機(jī)使用,軟件編程非常 方便;內(nèi)置專門穩(wěn)壓電路,使用各種電源包括 DC/DC開關(guān)電源均有很好的通信效果; 2.54mm 間距接口,DIP 圭寸裝;工作于 En ha need Shock Burs具 有 Automatic packe

38、t handling. Auto packet tran saction handling具有可選的內(nèi)置包應(yīng)答機(jī)制,極大的降低丟 包率;與51系列單片機(jī)P0口連接時候,需要加10K的上拉電阻,與其余口連接不需要, 模塊結(jié)構(gòu)如圖3.3所示。二2j>oa>T00>rVSS=DVDEMODCSNMISO MOSIClockRecovery,DataSlicerADDRDecodeCRCCodeDecodeFIFOirVOutGFSKFilterFrequency Synthesiser vdd PA=ravANTI100+J175 QANT2«22k£iEnha

39、nced Sriock Burst圖3.3 nRF2401模塊的結(jié)構(gòu)示意圖332 PCB板設(shè)計及去耦一個好的PCB布線對射頻性能有很大影響。一個差的PCB板設(shè)計可能導(dǎo)致丟包甚 至可能不能實(shí)現(xiàn)其應(yīng)有的功能。在設(shè)計nRF2401的時候,要避免使用長的電源走線,所有元器件的地VDD及VDD 與去耦電容應(yīng)盡可能的靠近nRF2401芯片。直流供電電源應(yīng)盡可能靠近芯片的 VDD弓I 腳。最好用一個大電容(比如:4.7uF鉭電容)并聯(lián)一個小電容。如果在 PCB板的頂層 有鋪銅的“地”網(wǎng),VSS應(yīng)直接與鋪銅面連接。如果在PCB板的底層有鋪銅的“地” 網(wǎng),則應(yīng)該在離VSS腳盡可能近的地方放置過孔連接。每個 VS

40、S最少應(yīng)有一個過孔。 所有數(shù)字信號線和控制信號線都不能離晶振和電源線太近,nRF2401原理圖如圖3.4所示。HDDT1rC31=C2lhFLLiCELC£tT25CK34ICO51刃ANTICSN 趙 W0S1 MEO-V- JI L.PA.圖3.4 nRF2401原理圖第4章軟件設(shè)計基于nRF2401無線傳感器節(jié)點(diǎn)機(jī)的設(shè)計采用的是模塊化的思想,這樣軟件實(shí)現(xiàn)模 塊化、標(biāo)準(zhǔn)化,易于理解和移植。傳感器節(jié)點(diǎn)上的軟件是無線傳感器網(wǎng)絡(luò)進(jìn)行有效工 作的靈魂,負(fù)責(zé)完成現(xiàn)場數(shù)據(jù)的采集以及通過無線通信模塊將采集數(shù)據(jù)包無線傳送。節(jié)點(diǎn)機(jī)的軟件設(shè)計主要包括三個部分,分別是發(fā)送數(shù)據(jù)、路由轉(zhuǎn)發(fā)數(shù)據(jù)和接收數(shù) 據(jù)

41、。4.1 nRF2401 的配置nRF2401的所有配置工作都是通過SPI完成,共有30字節(jié)的配置字。我們推薦nRF2401工作于Shock Burst收發(fā)模式,這種工作模式下,系統(tǒng)的程序編 制會更加簡單,并且穩(wěn)定性也會更高。因此,下文著重介紹把nRF2401配置為ShockBurst收發(fā)模式的器件配置方法。Shock Burst的配置字使nRF2401能夠處理射頻協(xié)議,在配置完成后,在 nRF2401 工作的過程中,只需改變其最低一個字節(jié)中的內(nèi)容,以實(shí)現(xiàn)接收模式和發(fā)送模式之間 切換。Shock Burst的配置字可以分為以下四個部分:數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得 n RF

42、2401能夠區(qū)分接收數(shù) 據(jù)包中的數(shù)據(jù)和CRC校驗(yàn)碼;地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得 n RF2401能夠區(qū)分地址和 數(shù)據(jù);地址:接收數(shù)據(jù)的地址,有通道0到通道5的地址;CRC:使nRF2401能夠生成CRC校驗(yàn)碼和解碼。當(dāng)使用nRF2401片內(nèi)的CRC技術(shù)時,要確保在配置字中CRC校驗(yàn)被使能,并且發(fā) 送和接收使用相同的協(xié)議。4.2收發(fā)模式nRF2401的收發(fā)模式操作是通過CE、CLK和DATA三個引腳完成的。當(dāng)nRF2401 要采用Shock Burst發(fā)射數(shù)據(jù)時,首先將CE腳置高,把接收節(jié)點(diǎn)的地址和要發(fā)送的數(shù) 據(jù)按時序送入nRF2401,然后將CE腳置低,激發(fā)nRF2401

43、發(fā)射。當(dāng)采用Shock Burst接 收數(shù)據(jù)時,首先配置本節(jié)點(diǎn)地址和要接收的數(shù)據(jù)包大小,將CE腳置高,等待200us后,nRF2401進(jìn)入監(jiān)聽狀態(tài),等待數(shù)據(jù)的到來。當(dāng)接收到正確的數(shù)據(jù)包后,將DR腳置高,通知MCU取走數(shù)據(jù)。待MCU取走數(shù)據(jù)后,nRF2401將DR置低,此時,如果CE腳為高, 則等待下一個數(shù)據(jù)包,否則開始其它的工作流程。4.2.1發(fā)送模式首先要配置寄存器PRIM_RX為低;當(dāng)MCU有數(shù)據(jù)要發(fā)送時,接收節(jié)點(diǎn)地址和有 效數(shù)據(jù)通過SPI接口寫入nRF2401芯片。發(fā)送數(shù)據(jù)的長度以字節(jié)計數(shù),從MCU寫入TX_ FIFO。當(dāng)CSN為低時數(shù)據(jù)被不斷地寫入。發(fā)送端發(fā)送完數(shù)據(jù)后,將通道 0設(shè)置為

44、接收 模式來接收應(yīng)答信號,其接收地址(RX_ADDR_P0)與接收端地址(TX_ADDR)相同; 設(shè)置CE為高,啟動發(fā)射。CE高電平持續(xù)時間最小為10us; nRF2401設(shè)置為Shock Burst 模式,無線系統(tǒng)上電、啟動內(nèi)部16MHz時鐘、無線發(fā)送數(shù)據(jù)打包、高速發(fā)送數(shù)據(jù);如 果啟動了自動應(yīng)答模式無線芯片立即進(jìn)入接收模式。如果在有效應(yīng)答時間范圍內(nèi)收到 應(yīng)答信號,則認(rèn)為數(shù)據(jù)成功發(fā)送到了接收端,此時狀態(tài)寄存器的TX_DS位置高并把數(shù) 據(jù)從TX _FIFO中清除掉。如果在設(shè)定時間范圍內(nèi)沒有接收到應(yīng)答信號,則重新發(fā)送 數(shù)據(jù)。如果自動重發(fā)計數(shù)器(ARC_CNT)溢出,則狀態(tài)寄存器的MAX_RT位置高

45、。不 清除TX _FIFO中的數(shù)據(jù),當(dāng)MAX_RT或TX_DS為高電平時,IRQ引腳產(chǎn)生中斷。IRQ 中斷通過寫狀態(tài)寄存器來復(fù)位。如果重發(fā)次數(shù)在達(dá)到設(shè)定的最大重發(fā)次數(shù)時還沒有收 到應(yīng)答信號的話,在MAX_RX中斷清除之前不會重發(fā)數(shù)據(jù)包。數(shù)據(jù)包丟失計數(shù)器 (PLOS_CNT)在每次產(chǎn)生MAX_RT中斷后加一。在發(fā)射模式下,首先要將nRF2401端口與單片機(jī)的I/O 口連接,設(shè)置為待機(jī)模式、 禁止SPI協(xié)議啟動、SPI時鐘置低、中斷復(fù)位、同時將LED全部關(guān)閉流,然后,初始化 為發(fā)射模式,具體步驟為:定義發(fā)射信號按鍵,將信號給到單片機(jī)并放到單片機(jī)的緩 存中去,將nRF2401設(shè)置為發(fā)射模式,當(dāng)有按鍵

46、按下的時候,發(fā)送數(shù)據(jù),發(fā)送完畢后清空TX FIFO寄存器程。初始化完畢后,進(jìn)行數(shù)據(jù)發(fā)送。流程圖如圖4.1下所示圖4.1發(fā)送端流程圖4.2.2接收模式Shock Burs接收模式是通過設(shè)置寄存器中PRIM_RX位為高來選擇的。準(zhǔn)備接收 數(shù)據(jù)的通道必須被使能。所有工作在增強(qiáng)型Shock Burs模式下的數(shù)據(jù)通道的自動應(yīng)答 功能是由EN_AA寄存器來使能的,有效數(shù)據(jù)寬度是由 RX_PW_Px寄存器來設(shè)置的; 接收模式由設(shè)置CE為高來啟動;130us后nRF2401開始檢測數(shù)據(jù)信息;接收到有效的 數(shù)據(jù)包后(地址匹配、CRC檢驗(yàn)正確)數(shù)據(jù)存儲在RX_FIFO中,同時RX_DR位置高,并 產(chǎn)生中斷。狀態(tài)寄

47、存器中RX_P_N O位顯示數(shù)據(jù)是由哪個通道接收到的;如果使能自 動確認(rèn)信號,則發(fā)送確認(rèn)信號,MCU設(shè)置CE腳為低,進(jìn)入低功耗模式,MCU將數(shù)據(jù) 以合適的速率通過SP口將數(shù)據(jù)讀出,芯片準(zhǔn)備好進(jìn)入發(fā)送模式、接收模式或掉電模 式。在發(fā)射模式下,首先要將nRF2401端口與單片機(jī)的I/O 口連接,設(shè)置為待機(jī)模式、 禁止SPI協(xié)議啟動、SPI時鐘置低、中斷復(fù)位、同時將 LED全部關(guān)閉流。然后,將 nRF2401設(shè)置為接收模式。首先讀取 n RF2401寄存器狀態(tài),判斷是否接收到數(shù)據(jù), 如果接收到數(shù)據(jù),將數(shù)據(jù)從RX_FIFO寄存器中讀出來,同時設(shè)置一個讀出數(shù)據(jù)標(biāo)志, 當(dāng)讀出數(shù)據(jù)成功以后,清除RX_DX中

48、斷標(biāo)志,當(dāng)讀出數(shù)據(jù)的時候,數(shù)據(jù)發(fā)送到LED 顯示,然后將LED全部關(guān)閉。接收端流程圖如圖4.2所示。4.2.3路由轉(zhuǎn)發(fā)圖4.2接收端流程圖沈陽航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(論文)對于路由轉(zhuǎn)發(fā)的節(jié)點(diǎn)機(jī),我在軟件的設(shè)計上,簡單的說是先讓這個路由節(jié)點(diǎn)接收到發(fā)送端發(fā)送的數(shù)據(jù),這個數(shù)據(jù)通過泛洪的方式,將數(shù)據(jù)發(fā)送出去,這時,接收端 就可以接收到發(fā)送端的數(shù)據(jù)。在無線局域網(wǎng)中,之所以要用到路由轉(zhuǎn)發(fā)這個功能,是因?yàn)榘l(fā)送端和接收端的 距離超過了 n RF2401本身的傳輸距離,這樣,接收端就不能接收到發(fā)送端發(fā)送過來 的數(shù)據(jù)。這時,我們就要利用這個路由節(jié)點(diǎn),將數(shù)據(jù)轉(zhuǎn)發(fā)到接收端。在路由端,我們要完成的軟件中最

49、重要的就是接收數(shù)據(jù)和發(fā)送數(shù)據(jù)。但是在現(xiàn) 實(shí)的無線局域網(wǎng)中是遠(yuǎn)遠(yuǎn)不夠的,在現(xiàn)實(shí)中的無線路由轉(zhuǎn)發(fā),是要考慮傳輸路徑的。 在這條路徑中,有著最好的傳輸效率,最小的誤碼率。在這條路徑的選擇上,是需要 大量的實(shí)驗(yàn)的,這實(shí)驗(yàn)數(shù)據(jù)中,找到這條最好的數(shù)據(jù)傳輸路徑。在數(shù)據(jù)發(fā)送的時候,我們需要將發(fā)送數(shù)據(jù)打上標(biāo)號,這個標(biāo)號是節(jié)點(diǎn)的記號,用來記錄這個數(shù)據(jù)是在那個節(jié)點(diǎn)機(jī)中發(fā)送過來的,在路由端的這個節(jié)點(diǎn)機(jī)中,也有自己的標(biāo)號,路由節(jié)點(diǎn)接收到數(shù)據(jù)的時候,這個數(shù)據(jù)的標(biāo)號是發(fā)送節(jié)點(diǎn)的標(biāo)號,在這時, 要判斷路由節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn), 如果是目標(biāo)節(jié)點(diǎn),那么就處理這個數(shù)據(jù)。如果不是 目標(biāo)節(jié)點(diǎn),那么就要將這個數(shù)據(jù)發(fā)送出去,這時,這個數(shù)據(jù)的

50、標(biāo)號已經(jīng)變?yōu)榱寺酚晒?jié) 點(diǎn)的標(biāo)號,在接收端接到的數(shù)據(jù),也是這個有路由節(jié)點(diǎn)標(biāo)號的數(shù)據(jù)。 在這個數(shù)據(jù)的傳 輸上,數(shù)據(jù)是不變的,變化的只是記錄節(jié)點(diǎn)的標(biāo)號,這樣,數(shù)據(jù)在傳輸?shù)臅r候,不會 發(fā)送數(shù)據(jù)混疊。路由轉(zhuǎn)發(fā)的流程圖如圖 4.3所示。第5章調(diào)試情況及其排故在這次畢業(yè)設(shè)計的調(diào)試過程中分為硬件檢查、軟件調(diào)試和軟硬件聯(lián)調(diào)三個步驟。系統(tǒng)模擬調(diào)試是把已調(diào)好的各個模塊,按照總體要求連成一個完整的整體。軟件部分 還要與所設(shè)計的硬件系統(tǒng)進(jìn)行聯(lián)機(jī)調(diào)試。在任何一個設(shè)計中,電路調(diào)試部分能夠檢驗(yàn) 設(shè)計方案的可行性和正確性。在這個過程中可能要遇到在設(shè)計中沒有考慮到的地方, 通過調(diào)試可以使設(shè)計得到更好的補(bǔ)充。首先是確保硬件的每一個

51、連接都是正確的, 沒有漏焊和虛焊的情況。還有所用的 器件都是正確的。其次,要保證軟件的編譯能通過,對代碼本身來講是沒有錯誤的。 最后完成的是最艱難的工作 一軟硬件聯(lián)調(diào)。5.1硬件調(diào)試部分硬件調(diào)試部分主要是檢查焊接點(diǎn)和確定各個功能部件無故障,從而保證后續(xù)工作的順利進(jìn)行。在整個畢業(yè)設(shè)計中,其實(shí)硬件調(diào)試部分是非常重要的一個環(huán)節(jié),因?yàn)楫?dāng)我們在最后的軟硬件聯(lián)調(diào)的時候,往往認(rèn)為問題是軟件的問題,而忽略了硬件本身的 問題。這個時候我們往往是不停地去解決軟件上的問題,殊不知軟件本身沒有什么問題,而是因?yàn)橛布夏硞€焊接點(diǎn)沒有焊接好而造成整個系統(tǒng)不能使用。5.1.1電源模塊的調(diào)試在整個設(shè)計系統(tǒng)中,因?yàn)閚RF240

52、1需要3.3v的電壓,而單片機(jī)需要5v電源供電, 所以我需要三個3.3v和5v的電源模塊。因?yàn)楦呻姵乇旧淼脑肼曔^大,所以不能用干 電池作為單片機(jī)的供電系統(tǒng)。而AMS1117是一款很常用的穩(wěn)壓芯片,使用也很簡單, 如果想要一個5v的穩(wěn)定電壓,只要在 AMS1117-5這個芯片的VIN端輸入一個大于 5v的電源,在VOUT端就可以輸出穩(wěn)定的5v電壓。3.3v的電壓原理相同。在電路連接好后,只要用電壓表測試 VOUT端的電壓,就可以確定整個電源模 塊是否可以正常工作。電源電路輸入輸出電壓如表5.1所示。圖4.3路由轉(zhuǎn)發(fā)節(jié)點(diǎn)流程圖-29 -沈陽航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(論文)表5.1電源模

53、塊的輸入輸出電壓模塊電壓第一個穩(wěn)壓模塊第二個穩(wěn)壓模塊第三個穩(wěn)壓模塊ams117-5輸入端5.86v5.64v5.73vams117-5輸出端5.01v5.03v5.01vams117-3.3 輸入端5.01v5.03v5.01vams117-3.3 輸出端3.34v3.31v3.32v5.1.2 nRF2401無線模塊在nRF2401模塊中,主要有10個外接引腳,其中:1管腳和2管腳為電源,需要接入3.3v電壓;3管腳為CE,芯片使能,其中發(fā)送模式時高電平10us接收模式為高電平,待機(jī) 模式為低電平;4管腳為CSN, SPI片選使能,低電平使能;5管腳為SCK,SPI時鐘;6管腳為MOSI,SPI串行輸入;7管腳為MISO,SPI串行輸出;8管腳為IRQ,中斷,低電平使能;9管腳和10管腳為芯片接地端。在這兩個管腳上要分別于單片機(jī)和電源共地。由于nRF2401

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論