NRF24L01——工作原理(關於發送接收通道地址)解讀

轉載自:NRF24L01——工作原理解讀

1、一個發送通道,6個接收通道。發送端發送通道地址寄存器中的地址指向的就是接收端哪個接收通道接收發送端的數據,所以發送端地址寄存器的值要與接收端需要接受數據的通道地址相同。

看一下無線數據傳輸的數據幀格式

第二部分的地址,就是接收端接收數據的通道地址,這個地址由發送端TX_ADDR寄存器搞定。


2、必須要搞清楚發送地址和接收地址的意義。下面兩端描述的是一個意思。我的兩次理解。

要先搞清楚TX_ADD和RRX_ADDR_PX。TX_ADD就一個,是發送數據幀格式中發送的地址信息,如上1所示,這個地址指定了向接收端接收數據通道的地址。

發送端的職責:1、發送:發送數據給接收端。2接收:接收某接收端的應答信號。


接收端的職責:1、接收:接收發送端發送的數據。2發送:發送應答信號給發送端。


所以整個過程發送端接收端都有發送和接收的功能。只是發送和接收的東西不一樣。



NRF24L01發送端把數據發送給接收端,接收端在確認收到數據後記錄發送端的地址,並以此地址爲目標地址發送應答信號(這個是自動的,不是程序設置的,應屬於硬件實現),(就是說接收端的發送地址寄存器TX_ADDR中存的地址就是發送端TX_ADDR中的地址,而發送端要以又要用通道0來接收應答,所以需要將通道0的地址設置爲該地址,即發送端TX_ADDR中的值)。發送端,數據通道0被用作接收應答信號因此發送端通道0的接收地址要與發送地址端地址相等,以確保接收到正確的應答信號。

注意每個NRF24L01只有一個發送通道,用來指示向接收端NRF24l01的哪個接收通道發送數據,即TX_ADDR(即只有一個發送目標地址寄存器)不要被TX5迷惑,這裏5是指第五個NRF24l01.但一個NRF24L01是有6個接收通道的,每個通道有自己的地址。所以一個2401可以接收6個2401發送來的數據。在發送模式下,發送端的2401會用自己接收通道0來接受 接收端的2401發送來的相應信號。但是接收端的2401發送應答信號的時候,也發送的地址就是接收端的某個接受通道的地址。所以發送端的接收通道0的地址要設置成這個地址。


例子:

TX5:TX_ADDR=0xB3B4B5B605

TX5:RX_ADDR_P0=0xB3B4B5B605

RX:RX_ADDR_P5=0xB3B4B5B605


3、

兩種數據雙方向的通訊方式:

如果想要數據在雙方向上通訊,PRIM_RX 寄存器必須緊隨芯片工作模式的變化而變化。處理器必須保證PTXPRX端的同步性。在RX_FIFOTX_FIFO寄存器中可能同時存有數據。




另外還有自己的查閱的一些資料:


這是使用手冊上的關於地址的圖。

對於發送方他的Rx通道0要和他的發送地址配成一樣的。對於接收方0~6必有的哥通道的地址配置爲發送發的地址。就是其實所有的地址都是自己設置的,但是要配對的進行設置。


也有人這樣理解:

發送方發送了一段代碼,代碼中攜帶地址(看做代碼的身份證),

接收方接收代碼,但接受方設置成了只接收特定身份代碼的數據,也就是主機TX_ADDR和從機RX_ADDR要求設置成相同的原因吧。

從機接受完數據之後,將應答信號還發送給剛纔設置的那個地址,

主機還是隻識別與發送數據時攜帶的地址相同的數據。

其實,這麼理解之後,發現主機和從機根本就沒有地址,只是數據攜帶的地址(數據的身份證)將主機和從機聯繫起來的。


發佈了40 篇原創文章 · 獲贊 59 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章