版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、沈陽(yáng)航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(jì)(論文)第1章緒論隨著傳感器網(wǎng)絡(luò)技術(shù)的發(fā)展,傳感器網(wǎng)絡(luò)在物聯(lián)網(wǎng)的應(yīng)用成為目前電子信息技術(shù) 的熱點(diǎn),本題目選取n RF2401無(wú)線通信芯片作為收發(fā)模塊來(lái)實(shí)現(xiàn)節(jié)點(diǎn)之間的無(wú)線數(shù) 據(jù)通信,包括:研究一種適合與傳感器網(wǎng)絡(luò)應(yīng)用的無(wú)線通信協(xié)議,開發(fā)基于nRF2401的嵌入式51單片機(jī)的協(xié)議棧,并能夠?qū)崿F(xiàn)nRF2401的信道選擇、數(shù)據(jù)通信、差錯(cuò)處 理等基本功能。1.1 課題來(lái)源WSN網(wǎng)絡(luò)技術(shù)一經(jīng)提出,就迅速在研究界和工業(yè)界得到廣泛的認(rèn)可。1998年到2003年,各種與無(wú)線通信、Ad Hoc網(wǎng)絡(luò)、分布式系統(tǒng)的會(huì)議開始大量收錄與WSN網(wǎng)絡(luò)技術(shù)相關(guān)的文章。2001年,美國(guó)計(jì)算
2、機(jī)學(xué)會(huì)(ACM)和IEEE成立了第一個(gè)專門針 對(duì)傳感器網(wǎng)絡(luò)技術(shù)的會(huì)議 Intern ati onal Conference on In formatio n Process ing in Sensor Network(IPSN),為WSN網(wǎng)絡(luò)的技術(shù)發(fā)展開拓了一片新的技術(shù)園地。2003年到2004年,一批針對(duì)傳感器網(wǎng)絡(luò)技術(shù)的會(huì)議相繼組建。ACM在2005年還專門創(chuàng)刊 ACMTran saction on Sensor Network,用來(lái)出版最優(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é)會(huì),旨在促進(jìn)WSN技術(shù)的開發(fā)。2006年10月,在中國(guó)北京,中國(guó)計(jì)算機(jī)學(xué)會(huì)傳感器網(wǎng)絡(luò)專委會(huì)正式成立,標(biāo)志著中 國(guó)WSN技術(shù)研究開始進(jìn)入一個(gè)新的歷史階段?;谝陨闲畔?,可以看出無(wú)線網(wǎng)絡(luò)在以后的發(fā)展上有這巨大的潛力, 所以我在畢 業(yè)設(shè)計(jì)中設(shè)計(jì)了一個(gè)簡(jiǎn)單的無(wú)線網(wǎng)絡(luò)節(jié)點(diǎn)機(jī),可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)和路由轉(zhuǎn)發(fā) 功能。1.2設(shè)計(jì)任務(wù)本論文主要完成的任務(wù)有:熟悉 n RF2401的性能、特點(diǎn)及使用方法;熟悉 51單 片機(jī)的指令系統(tǒng)和編程方法;設(shè)計(jì)無(wú)線數(shù)據(jù)傳輸模塊的通信協(xié)議,協(xié)議要求提供基本 的信道選擇、數(shù)據(jù)通
4、信、差錯(cuò)處理、路由轉(zhuǎn)發(fā)等功能,數(shù)據(jù)編碼及格式等;使用 語(yǔ)言來(lái)實(shí)現(xiàn)協(xié)議棧設(shè)計(jì)。在此基礎(chǔ)上,要去了解 TCP/IP、UDP、802.11、802.15.4等協(xié)議,參考這些協(xié)議 完成自己的畢業(yè)設(shè)計(jì),了解無(wú)線局域網(wǎng)的基本結(jié)構(gòu)和無(wú)線局域網(wǎng)在現(xiàn)實(shí)中的應(yīng)用。本論文主要實(shí)現(xiàn)的功能有:完成點(diǎn)對(duì)點(diǎn)通信、點(diǎn)對(duì)多點(diǎn)通信、路由轉(zhuǎn)發(fā)通信。給 出詳細(xì)的協(xié)議設(shè)計(jì)過(guò)程、實(shí)現(xiàn)協(xié)議的基本功能、實(shí)現(xiàn)n RF2401的數(shù)據(jù)通信。-27 -第2章方案分析對(duì)于nRF2401的無(wú)線傳感器節(jié)點(diǎn)機(jī)的設(shè)計(jì)主要有三個(gè)部分:發(fā)送數(shù)據(jù)、路由轉(zhuǎn) 發(fā)數(shù)據(jù)和接收數(shù)據(jù)。對(duì)于這三個(gè)部分,都研究的是信道選擇、數(shù)據(jù)通信和差錯(cuò)處理上,而對(duì)于路由轉(zhuǎn) 發(fā),主要有兩個(gè)方法,
5、第一種方法是利用泛洪的思想,第二種方法就是建路徑表。無(wú) 線節(jié)點(diǎn)機(jī)的系統(tǒng)測(cè)試模型圖如圖2.1所示。圖2.1無(wú)線節(jié)點(diǎn)機(jī)測(cè)試模型在這個(gè)測(cè)試模型中,單片機(jī)A與nRF2401組成網(wǎng)絡(luò)節(jié)點(diǎn)A,單片機(jī)B與nRF2401 組成網(wǎng)絡(luò)節(jié)點(diǎn)B,單片機(jī)C與nRF2401組成個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)C。在數(shù)據(jù)傳輸過(guò)程中,A 向B發(fā)送數(shù)據(jù),如果A、B兩個(gè)節(jié)點(diǎn)的距離大于nRF2401本身的傳輸距離,但是A、 C節(jié)點(diǎn)和B、C節(jié)點(diǎn)的距離為nRF2401有效傳輸距離,那么A發(fā)送的數(shù)據(jù)可以通過(guò)C 節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)到B節(jié)點(diǎn)。nRF2401是一款工作在2.42.5GHz世界通用ISM頻段的單片無(wú)線收發(fā)器芯片。無(wú) 線收發(fā)器包括:頻率發(fā)生器、增強(qiáng)型Sho
6、ck Burst模式控制器、功率放大器、晶體振蕩 器、調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過(guò)SPI接口進(jìn)行設(shè)置。n RF2401具有極低的消耗電流,當(dāng)工作在發(fā)射模式下,發(fā)射功率為-6dBm時(shí)電流消耗為9.0mA,接收模式時(shí)為12.3mA。掉電模式和待機(jī)模式下電流消耗更低2.1信道選擇無(wú)線網(wǎng)絡(luò)中,信道選擇的重要性不言而喻。在 n RF2401中,在配置為接收模式時(shí) 可以接收6路不用地址(通道0到通道5)的相同頻率的數(shù)據(jù)。每個(gè)數(shù)據(jù)通道擁有自己的 地址并且可以通過(guò)寄存器來(lái)進(jìn)行分別配置。 通常情況下不允許不同的數(shù)據(jù)通道設(shè)置完 全相同的地址。所有數(shù)據(jù)通道可以設(shè)置多達(dá)40位地址,數(shù)據(jù)通道0
7、有40位可配置地址,是唯一的 一個(gè)可以配置為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冊(cè)Data pipe 5(RX addr p&
8、;)圖2.2數(shù)據(jù)通道05的地址配置當(dāng)從一個(gè)數(shù)據(jù)通道中接收到數(shù)據(jù),如果數(shù)據(jù)通道設(shè)置為應(yīng)答方式的話,那么 nRF2401在收到數(shù)據(jù)后產(chǎn)生應(yīng)答信號(hào),此應(yīng)答信號(hào)的目標(biāo)地址為接收通道地址。在發(fā)送端,數(shù)據(jù)通道0被用做接收應(yīng)答信號(hào),因此數(shù)據(jù)通道0的接收地址要與發(fā)送 端地址相等以確保接收到正確的應(yīng)答信號(hào)。2.2發(fā)送和接收數(shù)據(jù)包在接收數(shù)據(jù)的時(shí)候,nRF2401模塊配置成接收模式(CE=1),在發(fā)射數(shù)據(jù)的時(shí)候, nRF2401模塊配置為發(fā)射模式(CE=1,持續(xù)至少10us), 130us后啟動(dòng)發(fā)射,再過(guò)37us后 發(fā)送一個(gè)字節(jié)。數(shù)據(jù)發(fā)送結(jié)束后,發(fā)送模塊自動(dòng)轉(zhuǎn)入接收模式等待應(yīng)答信號(hào)。發(fā)送模塊在收到應(yīng)答信號(hào)后產(chǎn)生中斷
9、通知 MCU,接收模塊接收到數(shù)據(jù)包后產(chǎn)生中斷通知 MCU。發(fā)送數(shù)據(jù)包時(shí)序圖如圖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ù)包時(shí)序圖2.3差錯(cuò)處理在nRF240忡,自帶了 CRC校驗(yàn)
10、,CRC校驗(yàn)的長(zhǎng)度是通過(guò)SPI接口進(jìn)行配置的 定要注意CRC計(jì)算范圍包括整個(gè)數(shù)據(jù)包:地址、PID和有效數(shù)據(jù)等。每一包數(shù)據(jù)都包括兩位的PID(數(shù)據(jù)包序號(hào))來(lái)識(shí)別接收的數(shù)據(jù)是新數(shù)據(jù)包還是重 發(fā)的數(shù)據(jù)包。PID序號(hào)可以防止接收端同一數(shù)據(jù)包多次送入 MCU,在發(fā)送方每次從 MCU取得一包新數(shù)據(jù)后PID值加一。PID和CRC校驗(yàn)應(yīng)用在接收方,識(shí)別接收的數(shù)據(jù) 是重發(fā)的數(shù)據(jù)包還是新數(shù)據(jù)包。如果在鏈接中有一些數(shù)據(jù)丟失了,則PID值與上一包數(shù)據(jù)的PID值相同。這時(shí),nRF2401將對(duì)兩包數(shù)據(jù)的CRC值進(jìn)行比較,如果CRC值也相同的話就認(rèn)為后面一包是前一包的重發(fā)數(shù)據(jù)包而被舍棄2.3.1接收方接收方對(duì)新接收數(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ā)功能在說(shuō)數(shù)據(jù)轉(zhuǎn)發(fā)之前,我們首先要清楚路由和中繼這兩個(gè)概念中繼器是用來(lái)延長(zhǎng)網(wǎng)絡(luò)距離的互連設(shè)備。 中繼器可以增強(qiáng)線路上衰減的信號(hào), 它 兩端即可以連接相同的傳輸媒體,也可以連接不同的媒體。而路由器工作在網(wǎng)絡(luò)層, 它能理
12、解數(shù)據(jù)中的IP地址,它具有判斷網(wǎng)絡(luò)地址和選擇路徑的功能,過(guò)濾和分隔網(wǎng) 絡(luò)信息流。簡(jiǎn)單的說(shuō),中繼器只能轉(zhuǎn)發(fā)數(shù)據(jù)但是不能接收數(shù)據(jù), 但是路由器不僅可以 轉(zhuǎn)發(fā)數(shù)據(jù)而且還可以接收數(shù)據(jù)。當(dāng)兩個(gè)節(jié)點(diǎn)的距離大于 n RF2401的傳輸距離的時(shí)候,我們就不得不使用一個(gè) 節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。這時(shí)候這個(gè)節(jié)點(diǎn)就相當(dāng)于是一個(gè)中繼器,但是當(dāng)發(fā)送端發(fā)送過(guò) 來(lái)的數(shù)據(jù)正好是中間節(jié)點(diǎn)的數(shù)據(jù)的時(shí)候,這個(gè)中間節(jié)點(diǎn)就需要接收數(shù)據(jù),這時(shí) 這個(gè)中間節(jié)點(diǎn)就相當(dāng)于一個(gè)路由器。中繼節(jié)點(diǎn)的主要工作就是為經(jīng)過(guò)路由節(jié)點(diǎn)的每個(gè)數(shù)據(jù)幀尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)。 由此可見,路由算法是路由節(jié)點(diǎn)的關(guān)鍵所在。 為 了完成這項(xiàng)工作,主要有兩
13、種方式完成數(shù)據(jù)的轉(zhuǎn)發(fā)工作。第一種方法是泛洪,第二 種方法是建路徑表。通過(guò)選擇路徑,依靠中間的中繼節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。第一種方 法,會(huì)帶來(lái)極大的通信開銷,在大型網(wǎng)絡(luò)中一般不用。泛洪不去考慮中間數(shù)據(jù)傳輸?shù)膫鬏斅窂?,中間的路由節(jié)點(diǎn)只去判斷這個(gè)數(shù)據(jù)是不 是本身節(jié)點(diǎn)需要的數(shù)據(jù),如果是我這個(gè)節(jié)點(diǎn)需要的數(shù)據(jù),我就將數(shù)據(jù)接收過(guò)來(lái),如果 不是我這個(gè)節(jié)點(diǎn)的接收的數(shù)據(jù),我就要將數(shù)據(jù)發(fā)送出去。建立數(shù)據(jù)路徑表,供路由選擇。使用時(shí),路徑表中保存著子網(wǎng)的標(biāo)志信息、網(wǎng)上 路由器的個(gè)數(shù)和下一個(gè)路由器的名字等內(nèi)容。路徑表可以是系統(tǒng)管理員固定設(shè)置好 的,也可以由系統(tǒng)動(dòng)態(tài)修改,可以是路由器自動(dòng)調(diào)整,也可以是主機(jī)控制。建路徑表是在數(shù)據(jù)傳輸之
14、前,根據(jù)一定的路徑選擇算法來(lái)確認(rèn)這個(gè)傳輸?shù)穆窂健?這個(gè)路徑可以是固定的,也可以是根據(jù)網(wǎng)絡(luò)環(huán)境自動(dòng)調(diào)整的。2.4.1泛洪為了說(shuō)明泛洪的原理,這里先用交換技術(shù)為例。泛洪是交換機(jī)和網(wǎng)橋使用的一種數(shù)據(jù)流傳遞技術(shù),將某個(gè)接口收到的數(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)行比較,以決定由哪個(gè)端口進(jìn)行轉(zhuǎn)發(fā)。如數(shù)據(jù)幀中的目的MAC地址不在MAC地址表中,則
15、向所有端口轉(zhuǎn)發(fā)。 因?yàn)榉汉榈姆椒](méi)有路徑可以使 用,所以泛洪的方法很容易受到攻擊,而且因?yàn)闆](méi)有路徑,所有的網(wǎng)絡(luò)節(jié)點(diǎn)都 會(huì)工作,這樣就會(huì)浪費(fèi)大量的資源,功耗比較大。使用泛洪的方法進(jìn)行路由轉(zhuǎn) 發(fā)數(shù)據(jù)主要有三種方法進(jìn)行攻擊網(wǎng)絡(luò)。SYN泛洪攻擊。SYN攻擊利用的是 TCP的三次握手機(jī)制,攻擊端利用偽造 的IP地址向被攻擊端發(fā)出請(qǐng)求,而被攻擊端發(fā)出相應(yīng)的報(bào)文將永遠(yuǎn)發(fā)送不到目 的地,那么被攻擊端在等待關(guān)閉這個(gè)連接的過(guò)程中消耗了資源,如果有成千上 萬(wàn)的這種連接,主機(jī)資源將被耗盡,從而達(dá)到攻擊的目的。我們可以利用路由 器的TCP攔截功能,保護(hù)網(wǎng)絡(luò)上的主機(jī)。DHCP報(bào)文范洪攻擊。指惡意用戶利用工具偽造大量DHC
16、P報(bào)文發(fā)送到服務(wù)器,一方面惡意耗盡 IP資源,使得合法用戶無(wú)法獲得IP資源;另一方面,如果交換機(jī)上開啟了 DHCP Snooping功能,會(huì)將接收到的 DHCP報(bào)文上送到CPU 因此大量的DHCP報(bào)文攻擊設(shè)備會(huì)使 DHCP服務(wù)器高負(fù)荷運(yùn)行,甚至?xí)?dǎo)致設(shè) 備癱瘓。ADDR攻擊。與DHCP類似,同樣是惡意用戶發(fā)出大量的APP報(bào)文,造成L3設(shè)備的APP表溢出,影響正常用戶的轉(zhuǎn)發(fā)。2.4.2路徑表路徑表是指路由器中保存著的各種傳輸路徑的相關(guān)數(shù)據(jù),供路由選擇時(shí)使 用。路徑表中保存著子網(wǎng)的標(biāo)志信息、網(wǎng)上路由器的個(gè)數(shù)和下一個(gè)路由器名字 等內(nèi)容。路徑表可以是由系統(tǒng)管理員固定設(shè)置好的,也可以由系統(tǒng)動(dòng)態(tài)修改, 可
17、以由路由器自動(dòng)調(diào)整,也可以由主機(jī)控制。路徑表分為兩種:1 .靜態(tài)路徑表由系統(tǒng)管理員事先設(shè)置好固定的路徑表稱之為靜態(tài)路徑表,一般是在系統(tǒng)安裝時(shí) 就根據(jù)網(wǎng)絡(luò)的配置情況預(yù)先設(shè)定的,它不會(huì)隨未來(lái)網(wǎng)絡(luò)結(jié)構(gòu)的改變而改變。2.動(dòng)態(tài)路徑表動(dòng)態(tài)路徑表是路由器根據(jù)網(wǎng)絡(luò)系統(tǒng)的運(yùn)行情況而自動(dòng)調(diào)整的路徑表。 路由器根據(jù) 路由選擇協(xié)議提供的功能,自動(dòng)學(xué)習(xí)和記憶網(wǎng)絡(luò)運(yùn)行情況,在需要時(shí)自動(dòng)計(jì)算數(shù)據(jù)傳 輸?shù)淖罴崖窂健H绻鸄節(jié)點(diǎn)的數(shù)據(jù)要發(fā)送到 D節(jié)點(diǎn),同時(shí)A節(jié)點(diǎn)的數(shù)據(jù)也可以發(fā)送到 E節(jié)點(diǎn), 當(dāng)數(shù)據(jù)傳輸?shù)臅r(shí)候,系統(tǒng)會(huì)根據(jù)路徑表,將數(shù)據(jù)通過(guò)某個(gè)路徑發(fā)送到指定的位 置。建路徑表傳輸數(shù)據(jù)的模型如圖2.7所示。圖2.7路徑表方式路由轉(zhuǎn)發(fā)數(shù)
18、據(jù)路由節(jié)點(diǎn)要按照某種路由通信協(xié)議, 查找路由表,路由表中列出整個(gè)無(wú)線局域網(wǎng) 中包含的各個(gè)節(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ā)生變化, 因此路由情況的信息需要及時(shí)更新, 這是由 所使用的路由信息協(xié)議規(guī)定的定時(shí)更新或者按變化情況更新來(lái)完成。網(wǎng)絡(luò)中的每個(gè)路由節(jié)點(diǎn)按照這一規(guī)則動(dòng)態(tài)地更新它所保持的路由表,以便保持有效的路由信息。路由節(jié)點(diǎn)在轉(zhuǎn)發(fā)報(bào)文的過(guò)程中,為了便于在網(wǎng)絡(luò)間傳送報(bào)文,按照預(yù)定的規(guī)則把 大的數(shù)據(jù)包分解成適當(dāng)大小的數(shù)據(jù)包,到達(dá)目的地后再把分解的數(shù)據(jù)包包裝成原有形
19、 式。多協(xié)議的路由節(jié)點(diǎn)可以連接使用不同通信協(xié)議的網(wǎng)絡(luò)段,作為不同通信協(xié)議網(wǎng)絡(luò)段通信連接的平臺(tái)。路由節(jié)點(diǎn)的主要任務(wù)是把通信引導(dǎo)到目的地網(wǎng)絡(luò),然后到達(dá)特定的節(jié)點(diǎn)站地址。 后一個(gè)功能是通過(guò)網(wǎng)絡(luò)地址分解完成的。例如,把網(wǎng)絡(luò)地址部分的分配指定成網(wǎng)絡(luò)、 子網(wǎng)和區(qū)域的一組節(jié)點(diǎn),其余的用來(lái)指明子網(wǎng)中的特別站。分層尋址允許路由節(jié)點(diǎn)對(duì) 有很多個(gè)節(jié)點(diǎn)站的網(wǎng)絡(luò)存儲(chǔ)尋址信息。在廣域網(wǎng)范圍內(nèi)的路由器按其轉(zhuǎn)發(fā)報(bào)文的性能可以分為兩種類型, 即中間節(jié)點(diǎn)路 由器和邊界路由器。盡管在不斷改進(jìn)的各種路由協(xié)議中, 對(duì)這兩類路由器所使用的名 稱可能有很大的差別,但所發(fā)揮的作用卻是一樣的。路由節(jié)點(diǎn)在網(wǎng)絡(luò)中傳輸時(shí),提供報(bào)文的存儲(chǔ)和轉(zhuǎn)發(fā)。同時(shí)
20、根據(jù)當(dāng)前的路由表所保 持的路由信息情況,選擇最好的路徑傳送報(bào)文。由多個(gè)互連的LAN組成的公司或企業(yè)網(wǎng)絡(luò)一側(cè)和外界廣域網(wǎng)相連接的路由器,就是這個(gè)企業(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ò)中各個(gè)LAN段向外部廣域網(wǎng)發(fā)送的報(bào)文,對(duì)相關(guān)的報(bào)文確定最好的傳 輸路徑。2.5軟件設(shè)計(jì)思路nRF2401是一款工作在2.42.5GHz世界通用ISM頻段的單片無(wú)線收發(fā)器芯片。無(wú) 線收發(fā)器包括:頻率發(fā)生器增強(qiáng)型Shock Burst模式控制器、功率放大器、晶體振蕩器、 調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過(guò) SPI接口進(jìn)行設(shè)置。
21、 在 nRF2401工作的時(shí)候,最重要的一種協(xié)議就是 SPI協(xié)議。SPI是英語(yǔ)Serial Peripheral in terface勺縮寫,就是串行外圍設(shè)備接口。 主要應(yīng)用在 EEPROM、FLASH、實(shí)時(shí)時(shí)鐘、AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理和數(shù)字信號(hào)解碼器之 間。SPI是一種高速的,全雙工,同步通信總線,在芯片的管腳上只有 4跟線,節(jié)約了 芯片的管腳,同時(shí)為PCB的布局節(jié)省空間,操作方便,正是因?yàn)檫@種簡(jiǎn)單的特征,越 來(lái)越多的芯片使用了這種通信協(xié)議。SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè) 或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以(用于單向傳輸時(shí),也就是半
22、雙 工方式)。也是所有基于SPI的設(shè)備共有的,它們是SDI (數(shù)據(jù)輸入),SDO (數(shù)據(jù)輸 出),SCLK (時(shí)鐘),CS (片選)。在nRF2401中,數(shù)據(jù)輸入為 MOSI,數(shù)據(jù)輸出為 MISO,時(shí)鐘為SCK,片選為CSN。(1)MOSI -SPI總線主機(jī)輸出/從機(jī)輸入(2)MISO -SPI總線主機(jī)輸入/從機(jī)輸出SCK -寸鐘信號(hào),由主設(shè)備產(chǎn)生(4) CSN -從設(shè)備使能信號(hào),由主設(shè)備控制其中CSN是控制芯片是否被選中的,也就是說(shuō)只有片選信號(hào)為預(yù)先規(guī)定的使能信 號(hào)時(shí)(高電位或低電位),對(duì)此芯片的操作才有效。這就允許在同一總線上連接多個(gè) SPI設(shè)備。接下來(lái)就負(fù)責(zé)通訊的3根線了。通訊是通過(guò)數(shù)據(jù)
23、交換完成的,這里先要知道 SPI 是串行通訊協(xié)議,也就是說(shuō)數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCK時(shí)鐘線存在的原因, 由SCK提供時(shí)鐘脈沖。MOSI、MISO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過(guò)MOSI 線,數(shù)據(jù)在時(shí)鐘上升沿或下降沿時(shí)改變,在緊接著的下降沿或上升沿被讀取。完成一 位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少 8次時(shí)鐘信號(hào)的改變(上沿和下沿為 一次),就可以完成8位數(shù)據(jù)的傳輸。要注意的是,SCK信號(hào)線只由主設(shè)備控制,從設(shè)備不能控制信號(hào)線。同樣,在一個(gè)基于SPI的設(shè)備中,至少有一個(gè)主控設(shè)備。這樣的傳輸方式與普通的串行通訊不同, 普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)
24、一位一位的傳送,甚至允 許暫停,因?yàn)镾CK時(shí)鐘線由主控設(shè)備控制,當(dāng)沒(méi)有時(shí)鐘跳變時(shí),從設(shè)備不采集或傳送 數(shù)據(jù)。也就是說(shuō),主設(shè)備通過(guò)對(duì)SCK時(shí)鐘線的控制可以完成對(duì)通訊的控制。因?yàn)?SPI 的數(shù)據(jù)輸入和輸出線獨(dú)立,允許同時(shí)完成數(shù)據(jù)的輸入和輸出,所以SPI還是一個(gè)數(shù)據(jù)交換協(xié)議。不同的SPI設(shè)備實(shí)現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時(shí)間不同, 在時(shí)鐘信號(hào)上沿或下沿采集有不同定義。SPI主模塊和與之通信的外設(shè)備時(shí)鐘相位和極性應(yīng)該一致。這句話有2層意思:其 一,主設(shè)備SPI時(shí)鐘和極性的配置應(yīng)該由外設(shè)來(lái)決定;其二,二者的配置應(yīng)該保持一 致,即主設(shè)備的MOSI同從設(shè)備的MOSI配置一致,主設(shè)備的MISO同從設(shè)
25、備的MISO 配置一致。因?yàn)橹鲝脑O(shè)備是在SCK的控制下,同時(shí)發(fā)送和接收數(shù)據(jù),并通過(guò) 2個(gè)雙向 移位寄存器來(lái)交換數(shù)據(jù)。在點(diǎn)對(duì)點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡(jiǎn)單 高效。在多個(gè)從設(shè)備的系統(tǒng)中,每個(gè)從設(shè)備需要獨(dú)立的使能信號(hào),硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。Shock Burst模式下nRF2401可以與成本較低的低速M(fèi)CU相連。高速信號(hào)處理是由 芯片內(nèi)部的射頻協(xié)議處理的,n RF2401提供SPI接口,數(shù)據(jù)率取決于單片機(jī)本身接口 速度。Shock Burst模式通過(guò)允許與單片機(jī)低速通信而無(wú)線部分高速通信,這樣可以減小通信的平均消耗電流。在Shock Burst接收模式
26、下,當(dāng)接收到有效的地址和數(shù)據(jù)時(shí)IRQ通知MCU,隨后MCU可將接收到的數(shù)據(jù)從RX_FIFO寄存器中讀出。在Shock Burst發(fā)送模式下,nRF2401自動(dòng)生成前導(dǎo)碼及CRC。數(shù)據(jù)發(fā)送完畢后IRQ 通知MCU。減少了 MCU的查詢時(shí)間,也就意味著減少了 MCU工作量的同時(shí)減少了軟 件的開發(fā)時(shí)間,nRF2401內(nèi)部有三個(gè)不同的RX_FIFO寄存器和三個(gè)不同的TX_FIFO寄 存器。在掉電模式下、待機(jī)模式下和數(shù)據(jù)傳輸?shù)倪^(guò)程中 MCU可以隨時(shí)訪問(wèn)FIFO寄存 器。這就允許SPI接口可以以低速進(jìn)行數(shù)據(jù)傳送,并且可以應(yīng)用于MCU硬件上沒(méi)有SPI 接口的情況。增強(qiáng)型Shock Burs模式可以使得雙向鏈
27、接協(xié)議執(zhí)行起來(lái)更為容易、有效。典型的雙向鏈接為:發(fā)送方要求終端設(shè)備在接收到數(shù)據(jù)后有應(yīng)答信號(hào),以便于發(fā)送方檢測(cè)有無(wú)數(shù)據(jù)丟失。一旦數(shù)據(jù)丟失,則通過(guò)重新發(fā)送功能將丟失的數(shù)據(jù)恢復(fù)。增強(qiáng)型的ShockBurst模式可以同時(shí)控制應(yīng)答及重發(fā)功能而無(wú)需增加 MCU工作量。2.5.1自動(dòng)應(yīng)答(RX):自動(dòng)應(yīng)答功能減少了外部MCU的工作量,因此降低成本減少電流消耗。自動(dòng)應(yīng) 答功能可以通過(guò)SPI口對(duì)不同的數(shù)據(jù)通道分別進(jìn)行配置。在自動(dòng)應(yīng)答模式使能的情況下,收到有效的數(shù)據(jù)包后,系統(tǒng)將進(jìn)入發(fā)送模式并發(fā) 送確認(rèn)信號(hào)。發(fā)送完確認(rèn)信號(hào)后,系統(tǒng)進(jìn)入正常工作模式。2.5.2自動(dòng)重發(fā)功能ART(TX):自動(dòng)重發(fā)功能是針對(duì)發(fā)送方的自動(dòng)
28、應(yīng)答系統(tǒng)。SETUP_RETR寄存器設(shè)置啟動(dòng)重發(fā) 數(shù)據(jù)的時(shí)間長(zhǎng)度。在每次發(fā)送結(jié)束后系統(tǒng)都會(huì)進(jìn)入接收模式并在設(shè)定的時(shí)間范圍內(nèi)等 待應(yīng)答信號(hào)。接收到應(yīng)答信號(hào)后,系統(tǒng)轉(zhuǎn)入正常發(fā)送模式。如果TX_FIFO中沒(méi)有待發(fā) 送的數(shù)據(jù)且CE腳電平為低,則系統(tǒng)將進(jìn)入待機(jī)模式I。如果沒(méi)有收到確認(rèn)信號(hào),則系 統(tǒng)返回到發(fā)送模式并重發(fā)數(shù)據(jù)直到收到確認(rèn)信號(hào)或重發(fā)次數(shù)超過(guò)設(shè)定值。有新的數(shù)據(jù)發(fā)送或PRIM_RX寄存器配置改變時(shí)丟包計(jì)數(shù)器復(fù)位。第3章硬件設(shè)計(jì)整個(gè)無(wú)線傳感器節(jié)點(diǎn)機(jī)的設(shè)計(jì)的硬件電路主要是以51單片機(jī)為核心的數(shù)處理系統(tǒng)、nRF2401的無(wú)線通信片和電源電路。在硬件的設(shè)計(jì)中,nRF2401使用的是無(wú)線模塊,電源電路是由
29、AMS1117這種穩(wěn) 壓芯片組成。3.1 51單片機(jī)部分單片機(jī)是本設(shè)計(jì)中數(shù)據(jù)處理的重要部分,本文采用的是STC公司的STC89C51系列單片機(jī)中的 STC89C52芯片。這是一款 8051的內(nèi)核芯片,內(nèi)部含有 Flash EEPROM存儲(chǔ)器,該器件為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)入空閑模式時(shí),除了 CPU處于休眠期狀態(tài)外,其余硬件全部處于活 動(dòng)狀態(tài),芯片中程序未涉及的數(shù)據(jù)存儲(chǔ)器和特殊功能寄存器中的
30、數(shù)據(jù)在空閑模式期間 都保持原值。假若定時(shí)器正在運(yùn)行,那么計(jì)數(shù)器存儲(chǔ)器中的值還會(huì)增加。 單片機(jī)在空 閑模式下可由n RF2401發(fā)送或者接收數(shù)據(jù)來(lái)喚醒。讓單片機(jī)進(jìn)入空閑模式是為了減 少功耗。當(dāng)單片機(jī)進(jìn)入掉電模式時(shí),外部晶振停震,CPU、定時(shí)器、串行口全部停止工作, 只有外部中斷繼續(xù)進(jìn)行工作。使單片機(jī)進(jìn)入掉電模式的指令將成為休眠前單片機(jī)執(zhí)行 的最后一條指令。進(jìn)入掉電模式后,芯片中程序未涉及的數(shù)據(jù)存儲(chǔ)器和特殊功能寄存 器中的數(shù)據(jù)將保持原值??梢杂猛獠恐袛嗟碗娖接|發(fā),或下降沿觸發(fā)中斷,或硬件復(fù) 位模式喚醒單片機(jī)。需要注意的是,使用中斷喚醒單片機(jī)時(shí),程序從原停止處繼續(xù)運(yùn) 行;當(dāng)使用硬件復(fù)位喚醒單片機(jī)時(shí),
31、程序?qū)念^開始執(zhí)行。如果單片機(jī)進(jìn)入掉電模式 以后重新上電nRF2401將重新工作,不會(huì)記錄原來(lái)發(fā)送的數(shù)據(jù)。3.1.2單片機(jī)的“看門狗”在單片機(jī)構(gòu)成的系統(tǒng)中,由于單片機(jī)的工作有可能受到來(lái)自外界電磁場(chǎng)的干擾, 造成程序的跑飛,從而陷入死循環(huán),程序的正常運(yùn)行被打斷,單片機(jī)控制的系統(tǒng)便無(wú) 法繼續(xù)工作,這樣會(huì)造成整個(gè)系統(tǒng)陷入停滯狀態(tài), 發(fā)生不可預(yù)料的后果,所以出于對(duì) 單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專門用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀 態(tài)的芯片,俗稱“看門狗”。加入看門狗電路的目的是使單片機(jī)可以在無(wú)人狀態(tài)下實(shí)現(xiàn)連續(xù)工作,其工作過(guò)程如下:?jiǎn)纹瑱C(jī)程序控制看門狗。使它定時(shí)地往看門狗芯片中送入高電平 (或
32、低電平), 這一程序語(yǔ)句是分散地放在單片機(jī)其他控制語(yǔ)句中的,一旦單片機(jī)由于干擾造成程序跑飛而陷入某一程序段進(jìn)入死循環(huán)時(shí),給看門狗送電平的程序便不會(huì)被執(zhí)行,這時(shí), 看門狗電路就會(huì)由于得不到單片機(jī)送來(lái)的信號(hào), 便對(duì)它與單片機(jī)復(fù)位引腳送一個(gè)復(fù)位 信號(hào),使單片機(jī)復(fù)位,從而使單片機(jī)從程序存儲(chǔ)器的起始位子重新開始執(zhí)行程序,這樣便實(shí)現(xiàn)了單片機(jī)的自動(dòng)復(fù)位。在STC89C51系列單片機(jī)中,內(nèi)置了看門狗功能,這樣就不用單獨(dú)完成看門狗, 通過(guò)相對(duì)應(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。對(duì)于編程者來(lái)說(shuō),
33、一個(gè)芯片的 RAM空間越大,寫起程序來(lái)就容易得心應(yīng) 手,不用考慮因?yàn)镽AM不夠而不敢過(guò)多的對(duì)變量進(jìn)行定義。一旦程序中的總變量超過(guò)了 128B,必須對(duì)所有變量進(jìn)行初始化,否則沒(méi)有被初 始化的變量默認(rèn)值將不會(huì)確定。當(dāng)變量總和超過(guò)128B時(shí),還必須要在編譯器中重新設(shè)定存儲(chǔ)器的存儲(chǔ)模式。存儲(chǔ)器模式有三種,分別是small、compact和large模式。他決定了沒(méi)有明確指 定存儲(chǔ)類型的變量。如果在某些函數(shù)中需要使用非默認(rèn)的存儲(chǔ)模式, 也可以使用關(guān)鍵 字直接說(shuō)明。small模式中,所有默認(rèn)變量均裝入單片機(jī)內(nèi)部128B的RAM中,當(dāng)定義類似“uchar a; “float b;”等變量時(shí),這些變量都裝入內(nèi)
34、部 128B的RAM中;compact 模式中,所有默認(rèn)變量均位于單片機(jī)內(nèi)部的 256B的RAM中,和在small模式中使用 關(guān)鍵字pdata來(lái)定義變量的效果相同;在large模式中,所有默認(rèn)變量可放在多達(dá)64KB 的RAM區(qū),包括內(nèi)部RAM和外部RAM,這和使用關(guān)鍵字xdata來(lái)定義變量的效果 相同。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)行程序時(shí)可以提供一種改變Flash數(shù)據(jù)的方法。也就是
35、說(shuō),程序自己往程序存儲(chǔ)器里寫數(shù)據(jù)或修改程序。3.2電源電路部分由于單片機(jī)最小系統(tǒng)需要5v電壓供電,nRF2401芯片需要3.3v電壓供電。所以, 我在設(shè)計(jì)電源的時(shí)候,設(shè)計(jì)了 5v和3.3v兩種電源。電源是通過(guò) 4節(jié)干電池通過(guò) AMS1117-5和AMS1117-3.3兩種穩(wěn)壓芯片得到的。1A電AMS1117是一款正電壓輸出低壓差的三段線性穩(wěn)壓電路的芯片,在輸出 流時(shí),輸入輸出的電壓差典型值為1.8v。AMS1117是一個(gè)低漏失電壓調(diào)整器,它的穩(wěn)壓調(diào)整管是由一個(gè) PNP驅(qū)動(dòng)的NPN 管組成的,漏失電壓定義為:VDROP=VBE+VSAT。AMS1117有固定和可調(diào)兩個(gè)版本可用,輸出電壓可以是:
36、1.8v,3.3v和5.0v。片 內(nèi)過(guò)熱切斷電路提供了過(guò)載和過(guò)熱保護(hù),以防環(huán)境溫度造成過(guò)高的結(jié)溫,其中過(guò)流保 護(hù)和過(guò)熱保護(hù)模塊,能夠在應(yīng)用電路的環(huán)境溫度大于 120C以上或負(fù)載電流大900mA 時(shí),保證芯片和系統(tǒng)的安全。為了確保AMS1117的穩(wěn)定性,輸出需要連接一個(gè)至少22卩F的鉭電容。通常, 線性調(diào)整器的穩(wěn)定性隨著輸出電流增加而降低,電源電路如圖3.2所示。圖3.2電源模塊電路圖3.3 nRF2401無(wú)線通信模塊部分n RF2401是挪威Nordic公司推出的單片無(wú)線收發(fā)一體芯片, 工作在2.4GHz,ISM頻段,具有接收靈敏度高、外圍電路少、發(fā)射功率低、傳輸速率高和功耗低等特點(diǎn),可以實(shí)現(xiàn)
37、點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)的通信。3.3.1模塊介紹n RF2401是有126頻道,滿足多點(diǎn)通信和跳頻通信需要;內(nèi)置硬件 CRC檢錯(cuò)和點(diǎn) 對(duì)多點(diǎn)通信地址控制;低功耗1.9 - 3.6V工作,待機(jī)模式下狀態(tài)為22uA;掉電模式下 為900nA;內(nèi)置2.4GHz天線,體積小巧15mm X29mm;模塊可軟件設(shè)地址,只有收到 本機(jī)地址時(shí)才會(huì)輸出數(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口連接時(shí)候,需要加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è)計(jì)及去耦一個(gè)好的PCB布線對(duì)射頻性能有很大影響。一個(gè)差的PCB板設(shè)計(jì)可能導(dǎo)致丟包甚 至可能不能實(shí)現(xiàn)其應(yīng)有的功能。在設(shè)計(jì)nRF2401的時(shí)候,要避免使用長(zhǎng)的電源走線,所有元器件的地VDD及VDD 與去耦電容應(yīng)盡可能的靠近nRF2401芯片。直流供電電源應(yīng)盡可能靠近芯片的 VDD弓I 腳。最好用一個(gè)大電容(比如:4.7uF鉭電容)并聯(lián)一個(gè)小電容。如果在 PCB板的頂層 有鋪銅的“地”網(wǎng),VSS應(yīng)直接與鋪銅面連接。如果在PCB板的底層有鋪銅的“地” 網(wǎng),則應(yīng)該在離VSS腳盡可能近的地方放置過(guò)孔連接。每個(gè) VS
40、S最少應(yīng)有一個(gè)過(guò)孔。 所有數(shù)字信號(hào)線和控制信號(hào)線都不能離晶振和電源線太近,nRF2401原理圖如圖3.4所示。HDDT1rC31=C2lhFLLiCELC£tT25CK34ICO51刃ANTICSN 趙 W0S1 MEO-V- JI L.PA.圖3.4 nRF2401原理圖第4章軟件設(shè)計(jì)基于nRF2401無(wú)線傳感器節(jié)點(diǎn)機(jī)的設(shè)計(jì)采用的是模塊化的思想,這樣軟件實(shí)現(xiàn)模 塊化、標(biāo)準(zhǔn)化,易于理解和移植。傳感器節(jié)點(diǎn)上的軟件是無(wú)線傳感器網(wǎng)絡(luò)進(jìn)行有效工 作的靈魂,負(fù)責(zé)完成現(xiàn)場(chǎng)數(shù)據(jù)的采集以及通過(guò)無(wú)線通信模塊將采集數(shù)據(jù)包無(wú)線傳送。節(jié)點(diǎn)機(jī)的軟件設(shè)計(jì)主要包括三個(gè)部分,分別是發(fā)送數(shù)據(jù)、路由轉(zhuǎn)發(fā)數(shù)據(jù)和接收數(shù) 據(jù)
41、。4.1 nRF2401 的配置nRF2401的所有配置工作都是通過(guò)SPI完成,共有30字節(jié)的配置字。我們推薦nRF2401工作于Shock Burst收發(fā)模式,這種工作模式下,系統(tǒng)的程序編 制會(huì)更加簡(jiǎn)單,并且穩(wěn)定性也會(huì)更高。因此,下文著重介紹把nRF2401配置為ShockBurst收發(fā)模式的器件配置方法。Shock Burst的配置字使nRF2401能夠處理射頻協(xié)議,在配置完成后,在 nRF2401 工作的過(guò)程中,只需改變其最低一個(gè)字節(jié)中的內(nèi)容,以實(shí)現(xiàn)接收模式和發(fā)送模式之間 切換。Shock Burst的配置字可以分為以下四個(gè)部分:數(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ù)時(shí),要確保在配置字中CRC校驗(yàn)被使能,并且發(fā) 送和接收使用相同的協(xié)議。4.2收發(fā)模式nRF2401的收發(fā)模式操作是通過(guò)CE、CLK和DATA三個(gè)引腳完成的。當(dāng)nRF2401 要采用Shock Burst發(fā)射數(shù)據(jù)時(shí),首先將CE腳置高,把接收節(jié)點(diǎn)的地址和要發(fā)送的數(shù) 據(jù)按時(shí)序送入nRF2401,然后將CE腳置低,激發(fā)nRF2401
43、發(fā)射。當(dāng)采用Shock Burst接 收數(shù)據(jù)時(shí),首先配置本節(jié)點(diǎn)地址和要接收的數(shù)據(jù)包大小,將CE腳置高,等待200us后,nRF2401進(jìn)入監(jiān)聽狀態(tài),等待數(shù)據(jù)的到來(lái)。當(dāng)接收到正確的數(shù)據(jù)包后,將DR腳置高,通知MCU取走數(shù)據(jù)。待MCU取走數(shù)據(jù)后,nRF2401將DR置低,此時(shí),如果CE腳為高, 則等待下一個(gè)數(shù)據(jù)包,否則開始其它的工作流程。4.2.1發(fā)送模式首先要配置寄存器PRIM_RX為低;當(dāng)MCU有數(shù)據(jù)要發(fā)送時(shí),接收節(jié)點(diǎn)地址和有 效數(shù)據(jù)通過(guò)SPI接口寫入nRF2401芯片。發(fā)送數(shù)據(jù)的長(zhǎng)度以字節(jié)計(jì)數(shù),從MCU寫入TX_ FIFO。當(dāng)CSN為低時(shí)數(shù)據(jù)被不斷地寫入。發(fā)送端發(fā)送完數(shù)據(jù)后,將通道 0設(shè)置為
44、接收 模式來(lái)接收應(yīng)答信號(hào),其接收地址(RX_ADDR_P0)與接收端地址(TX_ADDR)相同; 設(shè)置CE為高,啟動(dòng)發(fā)射。CE高電平持續(xù)時(shí)間最小為10us; nRF2401設(shè)置為Shock Burst 模式,無(wú)線系統(tǒng)上電、啟動(dòng)內(nèi)部16MHz時(shí)鐘、無(wú)線發(fā)送數(shù)據(jù)打包、高速發(fā)送數(shù)據(jù);如 果啟動(dòng)了自動(dòng)應(yīng)答模式無(wú)線芯片立即進(jìn)入接收模式。如果在有效應(yīng)答時(shí)間范圍內(nèi)收到 應(yīng)答信號(hào),則認(rèn)為數(shù)據(jù)成功發(fā)送到了接收端,此時(shí)狀態(tài)寄存器的TX_DS位置高并把數(shù) 據(jù)從TX _FIFO中清除掉。如果在設(shè)定時(shí)間范圍內(nèi)沒(méi)有接收到應(yīng)答信號(hào),則重新發(fā)送 數(shù)據(jù)。如果自動(dòng)重發(fā)計(jì)數(shù)器(ARC_CNT)溢出,則狀態(tài)寄存器的MAX_RT位置高
45、。不 清除TX _FIFO中的數(shù)據(jù),當(dāng)MAX_RT或TX_DS為高電平時(shí),IRQ引腳產(chǎn)生中斷。IRQ 中斷通過(guò)寫狀態(tài)寄存器來(lái)復(fù)位。如果重發(fā)次數(shù)在達(dá)到設(shè)定的最大重發(fā)次數(shù)時(shí)還沒(méi)有收 到應(yīng)答信號(hào)的話,在MAX_RX中斷清除之前不會(huì)重發(fā)數(shù)據(jù)包。數(shù)據(jù)包丟失計(jì)數(shù)器 (PLOS_CNT)在每次產(chǎn)生MAX_RT中斷后加一。在發(fā)射模式下,首先要將nRF2401端口與單片機(jī)的I/O 口連接,設(shè)置為待機(jī)模式、 禁止SPI協(xié)議啟動(dòng)、SPI時(shí)鐘置低、中斷復(fù)位、同時(shí)將LED全部關(guān)閉流,然后,初始化 為發(fā)射模式,具體步驟為:定義發(fā)射信號(hào)按鍵,將信號(hào)給到單片機(jī)并放到單片機(jī)的緩 存中去,將nRF2401設(shè)置為發(fā)射模式,當(dāng)有按鍵
46、按下的時(shí)候,發(fā)送數(shù)據(jù),發(fā)送完畢后清空TX FIFO寄存器程。初始化完畢后,進(jìn)行數(shù)據(jù)發(fā)送。流程圖如圖4.1下所示圖4.1發(fā)送端流程圖4.2.2接收模式Shock Burs接收模式是通過(guò)設(shè)置寄存器中PRIM_RX位為高來(lái)選擇的。準(zhǔn)備接收 數(shù)據(jù)的通道必須被使能。所有工作在增強(qiáng)型Shock Burs模式下的數(shù)據(jù)通道的自動(dòng)應(yīng)答 功能是由EN_AA寄存器來(lái)使能的,有效數(shù)據(jù)寬度是由 RX_PW_Px寄存器來(lái)設(shè)置的; 接收模式由設(shè)置CE為高來(lái)啟動(dòng);130us后nRF2401開始檢測(cè)數(shù)據(jù)信息;接收到有效的 數(shù)據(jù)包后(地址匹配、CRC檢驗(yàn)正確)數(shù)據(jù)存儲(chǔ)在RX_FIFO中,同時(shí)RX_DR位置高,并 產(chǎn)生中斷。狀態(tài)寄
47、存器中RX_P_N O位顯示數(shù)據(jù)是由哪個(gè)通道接收到的;如果使能自 動(dòng)確認(rèn)信號(hào),則發(fā)送確認(rèn)信號(hào),MCU設(shè)置CE腳為低,進(jìn)入低功耗模式,MCU將數(shù)據(jù) 以合適的速率通過(guò)SP口將數(shù)據(jù)讀出,芯片準(zhǔn)備好進(jìn)入發(fā)送模式、接收模式或掉電模 式。在發(fā)射模式下,首先要將nRF2401端口與單片機(jī)的I/O 口連接,設(shè)置為待機(jī)模式、 禁止SPI協(xié)議啟動(dòng)、SPI時(shí)鐘置低、中斷復(fù)位、同時(shí)將 LED全部關(guān)閉流。然后,將 nRF2401設(shè)置為接收模式。首先讀取 n RF2401寄存器狀態(tài),判斷是否接收到數(shù)據(jù), 如果接收到數(shù)據(jù),將數(shù)據(jù)從RX_FIFO寄存器中讀出來(lái),同時(shí)設(shè)置一個(gè)讀出數(shù)據(jù)標(biāo)志, 當(dāng)讀出數(shù)據(jù)成功以后,清除RX_DX中
48、斷標(biāo)志,當(dāng)讀出數(shù)據(jù)的時(shí)候,數(shù)據(jù)發(fā)送到LED 顯示,然后將LED全部關(guān)閉。接收端流程圖如圖4.2所示。4.2.3路由轉(zhuǎn)發(fā)圖4.2接收端流程圖沈陽(yáng)航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(jì)(論文)對(duì)于路由轉(zhuǎn)發(fā)的節(jié)點(diǎn)機(jī),我在軟件的設(shè)計(jì)上,簡(jiǎn)單的說(shuō)是先讓這個(gè)路由節(jié)點(diǎn)接收到發(fā)送端發(fā)送的數(shù)據(jù),這個(gè)數(shù)據(jù)通過(guò)泛洪的方式,將數(shù)據(jù)發(fā)送出去,這時(shí),接收端 就可以接收到發(fā)送端的數(shù)據(jù)。在無(wú)線局域網(wǎng)中,之所以要用到路由轉(zhuǎn)發(fā)這個(gè)功能,是因?yàn)榘l(fā)送端和接收端的 距離超過(guò)了 n RF2401本身的傳輸距離,這樣,接收端就不能接收到發(fā)送端發(fā)送過(guò)來(lái) 的數(shù)據(jù)。這時(shí),我們就要利用這個(gè)路由節(jié)點(diǎn),將數(shù)據(jù)轉(zhuǎn)發(fā)到接收端。在路由端,我們要完成的軟件中最
49、重要的就是接收數(shù)據(jù)和發(fā)送數(shù)據(jù)。但是在現(xiàn) 實(shí)的無(wú)線局域網(wǎng)中是遠(yuǎn)遠(yuǎn)不夠的,在現(xiàn)實(shí)中的無(wú)線路由轉(zhuǎn)發(fā),是要考慮傳輸路徑的。 在這條路徑中,有著最好的傳輸效率,最小的誤碼率。在這條路徑的選擇上,是需要 大量的實(shí)驗(yàn)的,這實(shí)驗(yàn)數(shù)據(jù)中,找到這條最好的數(shù)據(jù)傳輸路徑。在數(shù)據(jù)發(fā)送的時(shí)候,我們需要將發(fā)送數(shù)據(jù)打上標(biāo)號(hào),這個(gè)標(biāo)號(hào)是節(jié)點(diǎn)的記號(hào),用來(lái)記錄這個(gè)數(shù)據(jù)是在那個(gè)節(jié)點(diǎn)機(jī)中發(fā)送過(guò)來(lái)的,在路由端的這個(gè)節(jié)點(diǎn)機(jī)中,也有自己的標(biāo)號(hào),路由節(jié)點(diǎn)接收到數(shù)據(jù)的時(shí)候,這個(gè)數(shù)據(jù)的標(biāo)號(hào)是發(fā)送節(jié)點(diǎn)的標(biāo)號(hào),在這時(shí), 要判斷路由節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn), 如果是目標(biāo)節(jié)點(diǎn),那么就處理這個(gè)數(shù)據(jù)。如果不是 目標(biāo)節(jié)點(diǎn),那么就要將這個(gè)數(shù)據(jù)發(fā)送出去,這時(shí),這個(gè)數(shù)據(jù)的
50、標(biāo)號(hào)已經(jīng)變?yōu)榱寺酚晒?jié) 點(diǎn)的標(biāo)號(hào),在接收端接到的數(shù)據(jù),也是這個(gè)有路由節(jié)點(diǎn)標(biāo)號(hào)的數(shù)據(jù)。 在這個(gè)數(shù)據(jù)的傳 輸上,數(shù)據(jù)是不變的,變化的只是記錄節(jié)點(diǎn)的標(biāo)號(hào),這樣,數(shù)據(jù)在傳輸?shù)臅r(shí)候,不會(huì) 發(fā)送數(shù)據(jù)混疊。路由轉(zhuǎn)發(fā)的流程圖如圖 4.3所示。第5章調(diào)試情況及其排故在這次畢業(yè)設(shè)計(jì)的調(diào)試過(guò)程中分為硬件檢查、軟件調(diào)試和軟硬件聯(lián)調(diào)三個(gè)步驟。系統(tǒng)模擬調(diào)試是把已調(diào)好的各個(gè)模塊,按照總體要求連成一個(gè)完整的整體。軟件部分 還要與所設(shè)計(jì)的硬件系統(tǒng)進(jìn)行聯(lián)機(jī)調(diào)試。在任何一個(gè)設(shè)計(jì)中,電路調(diào)試部分能夠檢驗(yàn) 設(shè)計(jì)方案的可行性和正確性。在這個(gè)過(guò)程中可能要遇到在設(shè)計(jì)中沒(méi)有考慮到的地方, 通過(guò)調(diào)試可以使設(shè)計(jì)得到更好的補(bǔ)充。首先是確保硬件的每一個(gè)
51、連接都是正確的, 沒(méi)有漏焊和虛焊的情況。還有所用的 器件都是正確的。其次,要保證軟件的編譯能通過(guò),對(duì)代碼本身來(lái)講是沒(méi)有錯(cuò)誤的。 最后完成的是最艱難的工作 一軟硬件聯(lián)調(diào)。5.1硬件調(diào)試部分硬件調(diào)試部分主要是檢查焊接點(diǎn)和確定各個(gè)功能部件無(wú)故障,從而保證后續(xù)工作的順利進(jìn)行。在整個(gè)畢業(yè)設(shè)計(jì)中,其實(shí)硬件調(diào)試部分是非常重要的一個(gè)環(huán)節(jié),因?yàn)楫?dāng)我們?cè)谧詈蟮能浻布?lián)調(diào)的時(shí)候,往往認(rèn)為問(wèn)題是軟件的問(wèn)題,而忽略了硬件本身的 問(wèn)題。這個(gè)時(shí)候我們往往是不停地去解決軟件上的問(wèn)題,殊不知軟件本身沒(méi)有什么問(wèn)題,而是因?yàn)橛布夏硞€(gè)焊接點(diǎn)沒(méi)有焊接好而造成整個(gè)系統(tǒng)不能使用。5.1.1電源模塊的調(diào)試在整個(gè)設(shè)計(jì)系統(tǒng)中,因?yàn)閚RF240
52、1需要3.3v的電壓,而單片機(jī)需要5v電源供電, 所以我需要三個(gè)3.3v和5v的電源模塊。因?yàn)楦呻姵乇旧淼脑肼曔^(guò)大,所以不能用干 電池作為單片機(jī)的供電系統(tǒng)。而AMS1117是一款很常用的穩(wěn)壓芯片,使用也很簡(jiǎn)單, 如果想要一個(gè)5v的穩(wěn)定電壓,只要在 AMS1117-5這個(gè)芯片的VIN端輸入一個(gè)大于 5v的電源,在VOUT端就可以輸出穩(wěn)定的5v電壓。3.3v的電壓原理相同。在電路連接好后,只要用電壓表測(cè)試 VOUT端的電壓,就可以確定整個(gè)電源模 塊是否可以正常工作。電源電路輸入輸出電壓如表5.1所示。圖4.3路由轉(zhuǎn)發(fā)節(jié)點(diǎn)流程圖-29 -沈陽(yáng)航空航天大學(xué)電子信息工程學(xué)院畢業(yè)設(shè)計(jì)(論文)表5.1電源模
53、塊的輸入輸出電壓模塊電壓第一個(gè)穩(wěn)壓模塊第二個(gè)穩(wěn)壓模塊第三個(gè)穩(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無(wú)線模塊在nRF2401模塊中,主要有10個(gè)外接引腳,其中:1管腳和2管腳為電源,需要接入3.3v電壓;3管腳為CE,芯片使能,其中發(fā)送模式時(shí)高電平10us接收模式為高電平,待機(jī) 模式為低電平;4管腳為CSN, SPI片選使能,低電平使能;5管腳為SCK,SPI時(shí)鐘;6管腳為MOSI,SPI串行輸入;7管腳為MISO,SPI串行輸出;8管腳為IRQ,中斷,低電平使能;9管腳和10管腳為芯片接地端。在這兩個(gè)管腳上要分別于單片機(jī)和電源共地。由于nRF2401
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- S-3-Keto-sphinganine-d18-0-hydrochloride-生命科學(xué)試劑-MCE-1677
- CP-LC-0729-生命科學(xué)試劑-MCE-3226
- Actinobolin-plus-Actinobolin-生命科學(xué)試劑-MCE-7644
- 3-4-Methylenedioxy-pyrovalerone-metabolite-2-hydrochloride-生命科學(xué)試劑-MCE-1172
- 2025年度國(guó)際貿(mào)易違約風(fēng)險(xiǎn)預(yù)防與處理合同
- 2025年度范文正式版合同文員崗位職責(zé)規(guī)范與職業(yè)素養(yǎng)培養(yǎng)協(xié)議
- 二零二五年度2025年競(jìng)業(yè)禁止及保密協(xié)議模板
- 2025年度風(fēng)力發(fā)電場(chǎng)租賃定金協(xié)議模板
- 2025年度籃球聯(lián)賽裁判員免責(zé)聲明及賽事執(zhí)行合同
- 二零二五年度自媒體合伙人合同版:自媒體平臺(tái)內(nèi)容創(chuàng)作與推廣合同
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 電力溝施工組織設(shè)計(jì)-電纜溝
- 《法律援助》課件
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- XX區(qū)XXX灌區(qū)水資源論證報(bào)告書
- 新教材教科版五年級(jí)下冊(cè)科學(xué)全冊(cè)課時(shí)練(課后作業(yè)設(shè)計(jì))(含答案)
- 電廠鋼結(jié)構(gòu)施工方案(53頁(yè))
- 7.5正態(tài)分布課件(共26張PPT)
- 水體國(guó)產(chǎn)載體固化微生物
- 七年級(jí)語(yǔ)文課外閱讀理解練習(xí)
評(píng)論
0/150
提交評(píng)論