參考程序包含多個(gè)實(shí)例_第1頁
參考程序包含多個(gè)實(shí)例_第2頁
參考程序包含多個(gè)實(shí)例_第3頁
參考程序包含多個(gè)實(shí)例_第4頁
參考程序包含多個(gè)實(shí)例_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、(相關(guān)人員如覺得本人水平低下,還請(qǐng)見諒)Nrf24L01的使用程序和使用方法和簡單操作:功能:無線對(duì)發(fā)程序。兩個(gè)模塊a,b,實(shí)現(xiàn)按下一個(gè)按鍵,會(huì)在對(duì)方的數(shù)碼管上顯示3或4,在本機(jī)上顯示1,2。當(dāng)一個(gè)模塊,比如a模塊。當(dāng)兩個(gè)按鍵按下其中一個(gè),則會(huì)在另一個(gè)模塊b上顯示數(shù)字3,4(具體根據(jù)按下哪個(gè)按鍵)。以上功能描述,B模塊按鍵按下,如同a模塊一樣的功能,不做系統(tǒng)性描述了。下面給出程序中幾個(gè)地方的解釋:#define READ_REG 0x00 / 讀寄存器指令#define WRITE_REG 0x20 / 寫寄存器指令#define RD_RX_PLOAD 0x61 / 讀取接收數(shù)據(jù)指令#def

2、ine WR_TX_PLOAD 0xA0 / 寫待發(fā)數(shù)據(jù)指令#define FLUSH_TX 0xE1 / 沖洗發(fā)送 FIFO指令#define FLUSH_RX 0xE2 / 沖洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定義重復(fù)裝載數(shù)據(jù)指令#define NOP 0xFF / 保留類似這種的描述,可以等同于READ_REG =0x00; 這個(gè)是經(jīng)過實(shí)際程序測(cè)試出來的,比如以下程序:#include<reg51.h>#define k 0xfevoid main()P1=k;則會(huì)出現(xiàn)此類結(jié)果:MOSI = (uchar & 0x80); /

3、output 'uchar', MSB to MOSIuchar = (uchar << 1); / shift next bit into MSB.SCK = 1; / Set SCK high.uchar |= MISO; / capture current MISO bitSCK = 0; 此處為spi的核心,是spi協(xié)議的編程,其中uchar |= MISO; 表示uchar |= MISO|uchar; MOSI = (uchar & 0x80);其中0x80是1000 0000,與上uchar,這種&,是按位與,故可以從uchar提取出一

4、個(gè)電平給mosi。 MOSI = (uchar & 0x80); / output 'uchar', MSB to MOSIuchar = (uchar << 1); 這兩句組合起來用,就實(shí)現(xiàn)了把uchar編程8位2進(jìn)制數(shù)后的每一位都可以發(fā)送給mosi;Uchar的只待對(duì)象,就是上面的諸如#define FLUSH_TX 0xE1 這樣的數(shù),或者是相關(guān)的發(fā)送數(shù)據(jù)。*pBuf這個(gè)并不是一個(gè)主要的問題,實(shí)際這個(gè)是涉及指針問題的,帶*的跟地址有關(guān)系,但是我們其實(shí)不需要很關(guān)心編譯的時(shí)候數(shù)據(jù)被具體存入哪個(gè)地址,即使是很重要的數(shù)據(jù)。void init_NRF24L01(

5、void) inerDelay_us(100); CE=0; / chip enable CSN=1; / Spi disable SCK=0; / SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 寫本地地址SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 寫接收端地址SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / 頻道0自動(dòng)ACK應(yīng)答允許SPI_RW_Reg(WRITE_REG + EN_RXADDR

6、, 0x01); / 允許接收地址只有頻道0,如果需要多頻道可以參考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 設(shè)置信道工作為2.4GHZ,收發(fā)必須一致SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /設(shè)置接收數(shù)據(jù)長度,本次設(shè)置為32字節(jié)SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /設(shè)置發(fā)射速率為1MHZ,發(fā)射功率為最大值0dB在整個(gè)初始化中我們看到:CE=0; / chip enable CSN=1; / Spi disable 這是設(shè)置整個(gè)的狀態(tài)。如過狀態(tài)設(shè)置成

7、待機(jī),則引腳可能變?yōu)楦咦?。(以上并非全部引腳)SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 寫本地地址SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 寫接收端地址類似以上兩句,這是應(yīng)用spi的子程序,將寄存器指令放入nrf24l01。如果需深究,請(qǐng)參考說明書,手冊(cè)等?;蛘呖梢酝ㄟ^#define READ_REG 0x00 / 讀寄存器指令 等了解大概流程。在整個(gè)無線通信過程中,初始化只需設(shè)置一次。TxBuf存放的是發(fā)送的數(shù)據(jù)。并

8、且此數(shù)據(jù)被發(fā)送時(shí),是將這個(gè)數(shù)組的數(shù)全部發(fā)送的。對(duì)方也全部接收。RxBuf接收數(shù)組,用于存放對(duì)方發(fā)來的數(shù)據(jù)。SetRX_Mode();nRF24L01_RxPacket(RxBuf);當(dāng)主程序中包含這兩個(gè)子函數(shù)時(shí),且這時(shí)某個(gè)數(shù)據(jù)被發(fā)送過來,則會(huì)被接收到。且被存放到了RxBuf;反之包含nRF24L01_TxPacket(TxBuf);且TxBuf已經(jīng)存入你想要的數(shù)據(jù)的時(shí)候,這個(gè)數(shù)據(jù)將被發(fā)送。程序部分:下面給出程序,由于收發(fā)雙方程序是完全一樣的,所以只粘貼一份。程序雖然不是自己寫的,但是經(jīng)過實(shí)際測(cè)試的,沒有任何詭異的問題。如需要利用程序做nrf24l01改動(dòng)應(yīng)用在其他設(shè)計(jì)中。我把需要改動(dòng)的地方交代出來。主程序中保留部分:unsigned char tf =0;unsigned char TxBuf20=0; / unsigned char RxBuf20=0;init_NRF24L01() ;nRF24L01_TxPacket(TxBuf);SetRX_Mode();nRF24L01_RxPacket(RxBuf);這三個(gè)部分需保留,其中最上面是初始化必須要,中間是發(fā)送,當(dāng)你寫入這個(gè)函數(shù),單片機(jī)執(zhí)行到這里,將會(huì)把Txbuf中的數(shù)發(fā)出去。最后是接收,當(dāng)執(zhí)行到此處,原先rx

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論