NRF24L01
轉(zhuǎn)http://blog.csdn.net/wangshenzhen123/article/details/47207837
?
1、一個(gè)發(fā)送通道,6個(gè)接收通道。發(fā)送端發(fā)送通道地址寄存器中的地址指向的就是接收端哪個(gè)接收通道接收發(fā)送端的數(shù)據(jù),所以發(fā)送端地址寄存器的值要與接收端需要接受數(shù)據(jù)的通道地址相同。
看一下無線數(shù)據(jù)傳輸?shù)臄?shù)據(jù)幀格式
第二部分的地址,就是接收端接收數(shù)據(jù)的通道地址,這個(gè)地址由發(fā)送端TX_ADDR寄存器搞定。
?
2、必須要搞清楚發(fā)送地址和接收地址的意義。下面兩端描述的是一個(gè)意思。我的兩次理解。
?
要先搞清楚TX_ADD和RRX_ADDR_PX。TX_ADD就一個(gè),是發(fā)送數(shù)據(jù)幀格式中發(fā)送的地址信息,如上1所示,這個(gè)地址指定了向接收端接收數(shù)據(jù)通道的地址。
發(fā)送端的職責(zé):1、發(fā)送:發(fā)送數(shù)據(jù)給接收端。2接收:接收某接收端的應(yīng)答信號。
?在發(fā)送完數(shù)據(jù)后NRF24L01轉(zhuǎn)到接收模式并等待終端的應(yīng)答信號
接收端的職責(zé):1、接收:接收發(fā)送端發(fā)送的數(shù)據(jù)。2發(fā)送:發(fā)送應(yīng)答信號給發(fā)送端。
?
所以整個(gè)過程發(fā)送端接收端都有發(fā)送和接收的功能。只是發(fā)送和接收的東西不一樣。
?
?
NRF24L01發(fā)送端把數(shù)據(jù)發(fā)送給接收端,接收端在確認(rèn)收到數(shù)據(jù)后記錄發(fā)送端的地址,并以此地址為目標(biāo)地址發(fā)送應(yīng)答信號(這個(gè)是自動的,不是程序設(shè)置的,應(yīng)屬于硬件實(shí)現(xiàn)),(就是說接收端的發(fā)送地址寄存器TX_ADDR中存的地址就是發(fā)送端TX_ADDR中的地址,而發(fā)送端要以又要用通道0來接收應(yīng)答,所以需要將通道0的地址設(shè)置為該地址,即發(fā)送端TX_ADDR中的值)。在發(fā)送端,數(shù)據(jù)通道0被用作接收應(yīng)答信號,因此發(fā)送端通道0的接收地址要與發(fā)送地址端地址相等,以確保接收到正確的應(yīng)答信號。
注意每個(gè)NRF24L01只有一個(gè)發(fā)送通道,用來指示向接收端NRF24l01的哪個(gè)接收通道發(fā)送數(shù)據(jù),即TX_ADDR(即只有一個(gè)發(fā)送目標(biāo)地址寄存器)不要被TX5迷惑,這里5是指第五個(gè)NRF24l01.但一個(gè)NRF24L01是有6個(gè)接收通道的,每個(gè)通道有自己的地址。所以一個(gè)2401可以接收6個(gè)2401發(fā)送來的數(shù)據(jù)。在發(fā)送模式下,發(fā)送端的2401會用自己接收通道0來接受 接收端的2401發(fā)送來的相應(yīng)信號。但是接收端的2401發(fā)送應(yīng)答信號的時(shí)候,也發(fā)送的地址就是接收端的某個(gè)接受通道的地址。所以發(fā)送端的接收通道0的地址要設(shè)置成這個(gè)地址。
?
例子:
TX5:TX_ADDR=0xB3B4B5B605
TX5:RX_ADDR_P0=0xB3B4B5B605
RX:RX_ADDR_P5=0xB3B4B5B605
?IRQ 引腳會在以下三種情況變低:
Tx FIFO 發(fā)完并且收到ACK(使能ACK 情況下)
Rx FIFO 收到數(shù)據(jù)
達(dá)到最大重發(fā)次數(shù)
將 IRQ 接到外部中斷輸入引腳,通過中斷程序進(jìn)行處理。
3 Tx 與Rx 的配置過程
3、
兩種數(shù)據(jù)雙方向的通訊方式:
如果想要數(shù)據(jù)在雙方向上通訊,PRIM_RX?寄存器必須緊隨芯片工作模式的變化而變化。處理器必須保證PTX和PRX端的同步性。在RX_FIFO和TX_FIFO寄存器中可能同時(shí)存有數(shù)據(jù)。
?
?
?
另外還有自己的查閱的一些資料:
這是使用手冊上的關(guān)于地址的圖。
對于發(fā)送方他的Rx通道0要和他的發(fā)送地址配成一樣的。對于接收方0~6必有的哥通道的地址配置為發(fā)送發(fā)的地址。就是其實(shí)所有的地址都是自己設(shè)置的,但是要配對的進(jìn)行設(shè)置。
?
也有人這樣理解:
發(fā)送方發(fā)送了一段代碼,代碼中攜帶地址(看做代碼的身份證),
接收方接收代碼,但接受方設(shè)置成了只接收特定身份代碼的數(shù)據(jù),也就是主機(jī)TX_ADDR和從機(jī)RX_ADDR要求設(shè)置成相同的原因吧。
從機(jī)接受完數(shù)據(jù)之后,將應(yīng)答信號還發(fā)送給剛才設(shè)置的那個(gè)地址,
主機(jī)還是只識別與發(fā)送數(shù)據(jù)時(shí)攜帶的地址相同的數(shù)據(jù)。
其實(shí),這么理解之后,發(fā)現(xiàn)主機(jī)和從機(jī)根本就沒有地址,只是數(shù)據(jù)攜帶的地址(數(shù)據(jù)的身份證)將主機(jī)和從機(jī)聯(lián)系起來的。
總結(jié)
- 上一篇: 前端基础html
- 下一篇: virsh KVM管理工具