孫冬冬 王 玲 山東科技大學(xué)
?
NRF24L01組網(wǎng)方式
孫冬冬 王 玲 山東科技大學(xué)
【文章摘要】
【關(guān)鍵詞】
NRF24L01;多機通信; STC89C52 ;無線傳輸
NRF24L01擁有一個發(fā)送通道和六個接收通道,可以接收六路不同的數(shù)據(jù),在正常工作時只有收發(fā)地址相互對應(yīng)的NRF24L01模塊才能進行通信。NRF24L01有125個可選的工作頻道,在正常工作時也是只有頻道一致的模塊才能通信。因此,若要進行多機通信至少有兩種方式:利用地址對從機進項編號區(qū)分或者是利用地址對從機進行區(qū)分。當(dāng)把頻道當(dāng)做劃分依據(jù)時,在實際應(yīng)用中發(fā)現(xiàn)頻道相近的從機都能收到主機發(fā)送過來的數(shù)據(jù),所以實際應(yīng)用中不要選擇連續(xù)的頻道。
2.1選擇頻道為區(qū)分對象
首先提前選擇好頻道號并將它們賦給各個從機。然后就可以對主機和從機分別進行操作了。上電之后先對NRF模塊進行初始化。步驟如下。
先把模式選擇引腳拉低,讓芯片工作在待機模式下,然后才能對芯片的各個寄存器進行配置。接著寫接收通道0的數(shù)據(jù)寬度,一般情況下數(shù)據(jù)寬度選擇為32字節(jié)。然后清除接收緩沖寄存器,寫本機地址即發(fā)送地址,寫接收地址,使能接收通道0的自動應(yīng)答,使能接收通道0,設(shè)置自動重發(fā)間隔時間,選擇工作頻道0,設(shè)置發(fā)射參數(shù),配置基本工作模式的參數(shù),最后將CE引腳拉高,設(shè)置芯片工作在發(fā)送模式下。關(guān)于指令中某些語句的詳細功能,請讀者參考NEF24L01的技術(shù)手冊。NRF24L01與STC89C52單片機通信時遵循SPΙ協(xié)議,STC89C52雖然不自帶SPΙ功能,但是可以用普通ΙO口模擬。
各個從機的初始化程序與主機大體相同,但是從機的頻道不能一致。比如:
從機1選擇頻道0:NRF24L01_Write_ Reg(WRΙTE_REG+RF_CH,0);
從機2選擇頻道10:NRF24L01_Write_ Reg(WRΙTE_REG+RF_CH,10);
從機3選擇頻道20:NRF24L01_Write_ Reg(WRΙTE_REG+RF_CH,20);等。這樣配置好后,系統(tǒng)一上電只有從機一能夠與主機進行通信。其他從機由于所處的頻道和主機不一致,無法和主機進行通信。當(dāng)主機需要訪問其他從機時,只需要改變頻道號即可比如訪問從機1:
然后主機就可以和從機1進行通信了。若NRF24L01_Write_Reg(WRΙTE_REG+RF_ CH,20),主機就可以和從機2進行通信。切換到其他的頻道就可以和相應(yīng)頻道的從機進行通
信。
注意:所有主從機的地址應(yīng)設(shè)置成同一個地址即TX_ADDRESS和和RX_ADDRESS為同一個地址。區(qū)分當(dāng)前主機和哪個從機進行通信完全由頻道來決定。
2.2選擇地址為區(qū)分對象
由于NRF24L01有六個接收通道,如果給主機的六個接收通道分別賦予不同的接收地址,那么主機就可以根據(jù)地址來對從機進行訪問了。
NRF24L01共有六個接收通道,其中通道零和通道一的地址都是40位,通道二到通道五的高32位和通道一相同,只有低八位可以自由配置。這些地址可以任意取,只需要保證主從機的地址匹配即可。
由于主機根據(jù)地址對從機進行識別,所以所有主從機應(yīng)處于同一個頻道。而且使能所有的接收通道即NRF24L01_Write_Reg(WRΙTE_ REG+EN_RXADDR,0x3F)和使能所有接收通道的自動應(yīng)答。自動應(yīng)答是NRF24L01功能中自帶的,開啟此功能后,當(dāng)發(fā)送貨或接收完數(shù)據(jù)后,NRF模塊中的硬件會自動做出反應(yīng),不用再編寫額外的應(yīng)答程序。
自動應(yīng)答功能是接收方以接收到的數(shù)據(jù)的發(fā)送地址為目的地址,發(fā)送給發(fā)送方一個應(yīng)答信號,表示數(shù)據(jù)已經(jīng)接收,可以進行下一步操作。對于發(fā)送方來說,應(yīng)答信號是用通道零來接收的,因此發(fā)送方需要將發(fā)送地址和通道零的接收地址配置成同一個地址。
當(dāng)需要訪問不同的從機時只需要將發(fā)送地址和通道零的接收地址更改為從機地址即可。
如果從機數(shù)目非常多的話,可以把兩種方式結(jié)合起來。先將從機分組,每一組中的所有從機的頻道號相同,主機按照地址對從機進行區(qū)分,不同的組按照頻道號進行區(qū)分。
【參考文獻】
[1] 朱桂峰.基于nRF24L01的無線傳感局域網(wǎng)絡(luò)的研究與設(shè)計[D].保定:河北大學(xué),2011.
[2]Nordic VLSL ASA.nRF24xx Link Integrity[EB/OL].(2003-04-01) [2010-10-09]
NRF24L01是一款由NORDIC公司生產(chǎn)的無線傳輸模塊,它的工作頻段是世界上通用的頻段??罩械淖畲髠鬏斔俾士蛇_,而且功率非常低,當(dāng)工作在接收模式下時,為最大電流,工作在發(fā)送模式下時,為最大電流。沒有加功率芯片的NRF24l01模塊的傳輸距離最近:空曠條件下,傳輸?shù)木嚯x為15米,傳輸?shù)木嚯x為30米,傳輸?shù)木嚯x為50米,如果是外加天線的話傳輸距離會更遠。功率加強版的模塊NRF24L01+在空曠條件下傳輸距離可達110米。其最大的特點是不僅能實現(xiàn)一對一的點對點通信,還能實現(xiàn)最大為六對一(六個發(fā)送端一個接收端)的多機通信。本文主要介紹如何利用NRF24L01實現(xiàn)基于STC89C52單片機的無線多機通信。