![無線收發(fā)模塊nrf2401編程指南_第1頁](http://file4.renrendoc.com/view/ff82a31932949488c4ec476440fcf73e/ff82a31932949488c4ec476440fcf73e1.gif)
![無線收發(fā)模塊nrf2401編程指南_第2頁](http://file4.renrendoc.com/view/ff82a31932949488c4ec476440fcf73e/ff82a31932949488c4ec476440fcf73e2.gif)
![無線收發(fā)模塊nrf2401編程指南_第3頁](http://file4.renrendoc.com/view/ff82a31932949488c4ec476440fcf73e/ff82a31932949488c4ec476440fcf73e3.gif)
![無線收發(fā)模塊nrf2401編程指南_第4頁](http://file4.renrendoc.com/view/ff82a31932949488c4ec476440fcf73e/ff82a31932949488c4ec476440fcf73e4.gif)
![無線收發(fā)模塊nrf2401編程指南_第5頁](http://file4.renrendoc.com/view/ff82a31932949488c4ec476440fcf73e/ff82a31932949488c4ec476440fcf73e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、nRF2401編程指南接口方式nRF2401 與單片機接口可以采用 I/O 口直接連接或 SPI 接口兩種方式1I/O 口直接連接方式這種方式的特點是可以方便地與各種高低速單片機接口方便簡單I/O 直接接口方式圖編程上電設(shè)置 CS 低延時 3ms 后CE 低 PWR_UP 高nRF2401 完成上電 進入待機模式配置 nRF2401設(shè)置 CS 高CE 低 進入配置模式延時 5s 以上單片機將配置數(shù)據(jù)通過 I/O 口寫入 nRF2401參考下面的子程序設(shè)置 CS 為低 完成配置主機通過 nRF2401 發(fā)送數(shù)據(jù)先配置 nRF2401 為 ShockBurstTX 模式設(shè)置 CE 為高 使 240
2、1 進入 TX 模式延時 5s 以上單片機將待發(fā)送的數(shù)據(jù)通過 I/O 口寫入 nRF2401 的 FIFO 緩沖區(qū)中設(shè)置 CE 為低 開始 ShockBurst模式發(fā)送參考下面的 WRITE 子程序主機通過 nRF2401 接收數(shù)據(jù)先配置 nRF2401 為 ShockBurstRX 模式設(shè)置 CE 為高 202s 后 2401 進入 RX 模式當(dāng) DR1 引腳變?yōu)闀r 表明 nRF2401 的 FIFO 緩沖區(qū)已經(jīng)收到有效數(shù)據(jù) 主機可以通過查詢或者中斷方式進入讀數(shù)據(jù)子程序 將 nRF2401 中的數(shù)據(jù)讀出參考下面的程序全部數(shù)據(jù)讀完后DR1 變?yōu)榈碗娖较旅娼o出了 51 系列單片機讀寫 nRF24
3、01 子程序 供參考/*/WRITE通過 I/O 接口方式寫 1 字節(jié)數(shù)據(jù) C 語言子程序名 稱功 能參數(shù)出口參數(shù)影響資源unsigned char byte無ACC待送出的數(shù)據(jù)/*/#include = ACC7;= P1.0;= P1.1;sbit sbit sbitBIT7 DATA CLK1/*DATA 定義為與 nRF2401 DATA 引腳相連的 I/O 腳*/* CLK1 定義為與 nRF2401 CLK1 引腳相連的 I/O 腳*/void WRITE(unsigned char byte)unsigned char i;ACC = byte; i = 8;while(i)DA
4、TA = BIT7; CLK1 = 1;/*待發(fā)送的數(shù)據(jù)送到 ACC*/*共 8 位*/*送出 ACC 最到 DATA 腳*/*將時鐘信號置高*/*需要根據(jù) CPU 運行速度調(diào)整 NOP 指令的數(shù)量*/_nop_nop_;ACC = 1;CLK1 = 0; i-;/*ACC一次*/*將時鐘信號置低*/*送下一位*/*/*/名 稱功 能參數(shù)出口參數(shù)影響資源READ通過 I/O 接口方式讀 1 字節(jié)數(shù)據(jù) C 語言子程序無unsigned char ACC讀回的數(shù)據(jù)/*/#include = ACC0;= P10;= P11;sbit sbit sbitBIT0 DATA CLK1/*DATA 定義
5、為與 nRF2401 DATA 引腳相連的 I/O 腳*/* CLK1 定義為與 nRF2401 CLK1 引腳相連的 I/O 腳*/unsigned char READ(void)unsigned char i; i = 8;while(i)CLK1 = 1;/*共 8 位*/*將時鐘信號置高*/*需要根據(jù) CPU 運行速度調(diào)整 NOP 指令的數(shù)量*/_nop_;ACC = 1;/*ACC一位*/一位數(shù)據(jù)到 ACC 最低位*/BIT0 = DATA;/*從 DATA 腳CLK1 = 0; i-;/*將時鐘信號置低*/下一位*/return ACC;/*返回數(shù)據(jù)*/*/*/名 稱功 能參數(shù)出口
6、參數(shù)影響資源WRITE通過 I/O 接口方式寫 1 字節(jié)數(shù)據(jù)匯編子程序ACC待送出的數(shù)據(jù)無R2ACC/*/DATAEQUCLK1EQU WRITE:P1.0 ;DATA 定義為與 nRF2401 DATA 引腳相連的 I/O 腳P1.1 ; CLK1 定義為與 nRF2401 CLK1 引腳相連的 I/O 腳MOV WRITE1:RLCA MOV SETB NOP NOPR2, #08; ACC一位,最進入 CYDATA , C CLK1;將 CY 送到 DATA 引腳;將時鐘信號置高;需要根據(jù) CPU 運行速度調(diào)整 NOP 指令的數(shù)量CLR CLK1;將時鐘信號置低, WRITE1DJNZ
7、RETR2/*/*/READ通過 I/O 接口方式讀 1 字節(jié)數(shù)據(jù)匯編子程序無ACC讀回的數(shù)據(jù)R2ACC名 稱功 能參數(shù)出口參數(shù)影響資源/*/DATAEQUCLK1EQU READ:P1.0 ;DATA 定義為與 nRF2401 DATA 引腳相連的 I/O 腳P1.1 ; CLK1 定義為與 nRF2401 CLK1 引腳相連的 I/O 腳SETB MOVREAD1:SETB NOP RLC A MOVDATA R2 ,#08CLK1;將時鐘信號置高;需要根據(jù) CPU 運行速度調(diào)整 NOP 指令的數(shù)量; ACC一位,CY 進入最低位C , DATA;從 DATA 腳;將時鐘信號置低一位數(shù)據(jù)到
8、 CYCLRCLK1DJNZ RETR2 , READ1/*/2SPI 接口連接方式這種方式的特點是可以充分發(fā)揮 SPI 接口的高效以及 nRF2401 高速無線傳輸?shù)膬?yōu)勢SPI 接口方式硬件連接圖具有大數(shù)據(jù)吞吐量說明MCU 通過 MOSI 輸出數(shù)據(jù) 同時通過 CLK1 送出 SPI 時鐘信號從 MISO 讀入數(shù)據(jù)因為圖中有兩個 10K 電阻MOSI 送出的數(shù)據(jù)不會影響 nRF2401 輸出的數(shù)據(jù)編程流程與上面 I/O 直接連接方式相同讀寫 nRF2401 子程序下面給出帶 51 內(nèi)核的 P89LPC913 單片機的 SPI 讀寫子程序 供參考/*/名 稱功 能參數(shù)出口參數(shù)影響資源Spi_In
9、itP89LPC913 單片機 SPI 接口初始化 C 語言子程序無無無/*/sfr sfr sfr sfr sbitSPS SPCTL SPDAT IEN1 ESPI= 0 xE1;= 0 xE2;= 0 xE3;= 0 xE8;= IEN13 ;void Spi_Init(void)SPCTL =0 xd1;/bit7 :SSIG =1忽略 SS 信號/ bit6 :SPEN=1 ,允許 SPI/bit5 :DROD=0/bit4 :MASTER =1 主模式/bit3 :CPOL=0 , SPI_CLK 空閑時為低電平/bit2 :CPHA =0 , 前時鐘上升沿驅(qū)動輸出及采樣方式/bi
10、t10 :01CCLK/16SPI 時鐘頻率 1MHz maxESPI = 0;SPI 中斷/ 清除 SPI 傳輸完成標(biāo)志及寫SPS= 0 xc0;標(biāo)志/*/*/Spi_InitP89LPC913 單片機 SPI 接口初始化匯編子程序無無無名 稱功 能參數(shù)出口參數(shù)影響資源/*/SPS SPCTL SPDAT IEN1 ESPIEQU EQU EQU EQU EQU0 xE1;0 xE2;0 xE3;0 xE8; IEN1.3 ;Spi_Init:MOVSPCTL ,#0d1H;bit7 :SSIG =1忽略 SS 信號;bit6 :SPEN=1 ,允許 SPI;bit5 :DROD=0;bit
11、4 :MASTER =1 主模式;bit3 :CPOL=0 , SPI_CLK 空閑時為低電平;bit2 :CPHA =0 , 前時鐘上升沿驅(qū)動輸出及采樣方式;bit10 :01CCLK/16SPI 時鐘頻率 1MHz maxCLR MOVESPI SPS;SPI 中斷,# 0c0H;清除 SPI 傳輸完成標(biāo)志及寫標(biāo)志/*/*/名 稱功 能參數(shù)出口參數(shù)影響資源Spi_Read_Write通過 SPI 接口方式讀/寫 1 字節(jié)數(shù)據(jù) C 語言子程序unsigned char byte待送出的數(shù)據(jù)unsigned char讀回的數(shù)據(jù)/*/sfr sfr sfr sfr sbitSPS SPCTL S
12、PDAT IEN1 ESPI= 0 xE1;= 0 xE2;= 0 xE3;= 0 xE8;= IEN13 ;unsigned char Spi_Read_Write (unsigned char byte)SPS= 0 xc0;/清除 SPI 中斷標(biāo)志及寫標(biāo)志SPDAT = byte;while(SPS& 0 x80) =0); return SPDAT;/將數(shù)據(jù)寫入 SPI 數(shù)據(jù)寄存器等待 SPI 結(jié)束傳送將從 SPI 讀到的數(shù)據(jù)返回調(diào)用程序/*/*/名稱功能參數(shù)出口參數(shù)Spi_Read_Write通過 SPI 接口方式讀/寫 1 字節(jié)數(shù)據(jù)匯編子程序ACC ACC待送出的數(shù)據(jù)讀回的數(shù)據(jù)影響
13、資源ACC/*/SPSEQU EQU EQU EQU EQU0 xE1;0 xE2;0 xE3;0 xE8; IEN1.3 ;SPCTL SPDAT IEN1 ESPISpi_Read_Write:MOV MOVSPS,#11000000B;清除 SPI 傳輸完成標(biāo)志及寫;將數(shù)據(jù)寫入 SPI 數(shù)據(jù)寄存器標(biāo)志SPDAT,ASpi_Read_Write1:MOVA , SPS;取 SPI 傳送標(biāo)志位;等待 SPI 結(jié)束傳送;將從 SPI 讀到的數(shù)據(jù)返回調(diào)用程序JNB ACC.7 , Spi_Read_Write1MOV RETA , SPDAT/*/應(yīng)用實例下面給出一個以 P89LPC913 單片
14、機和 nRF2401的應(yīng)用系統(tǒng) 單片機和 nRF2401 之間采用 SPI 接口方式 該系統(tǒng)由兩套相同的電路板功能是上電后將 nRF2401 設(shè)置為接收模式并掃描按鍵 如果任何一塊板上的按鍵被按下 則LED 點亮 單片機將nRF2401 設(shè)置為發(fā)送模式后將一個數(shù)據(jù)包通過nRF2401發(fā)送出去 另外一塊板上的 nRF2401 成功收到數(shù)據(jù)包后由單片機讀出并檢查正確后將 LED 點亮原理圖程序流程圖源代碼/* nRF2401 2.4GHz 參考源代碼功能1 nRF2401 的初始化控制2 nRF2401 的數(shù)據(jù)發(fā)射與數(shù)據(jù)接收3.SPI 方式通訊* 4.CPU=P89LPC9135.由 Keil C
15、51 V7.20 編譯通過*迅通科技保留/*/*/ #include #include /*/struct RFConfigunsigned char n; unsigned char buf15;/nRF2401 配置字結(jié)構(gòu)體定義/配置字長度/配置字?jǐn)?shù)組typedef struct RFConfig RFConfig;#define ADDR_INDEX #define ADDR_COUNT84/ RFConfig.buf 中的地址開始字節(jié)索引/ 地址字節(jié)數(shù)code RFConfig tconf =15,0 x50,0 x50,0 x00, 0 x00, 0 x00, 0 x00, 0 x0
16、0,0 x00,0 xaa, 0 xbb, 0 x12, 0 x34, 0 x83,/nRF2401 發(fā)送模式配置字/配置字長度/接收通道 2 有效數(shù)據(jù)長度值 80bit(10byte)/接收通道 1 有效數(shù)據(jù)長度值 80bit(10byte)/接收通道 2 地址值 最多 40bit(5 bytes),少于 40bit 的部分設(shè)置為 0/接收通道 1 地址值 最多 40bit(5 bytes),少于 40bit 的部分設(shè)置為 0/32 bit 地址長度(bit7-bit2) 16bit CRC(bit1 0:8bit CRC/1:16bit CRC) ;/CRC 允許(bit0 0: 0 x6
17、f,CRC/1:允許 CRC)/單通道接收(bit7 0:單通道接收/1:雙通道接收)/ShockBurst 模式(bit6 0:Direct 模式/1:ShockBurst 模式)/1Mbps 速率(bit5 0:250Kbps/1:1Mbps) 16MHz 晶振頻率(bit42)/RF 輸出功率(bit10)0 x04/02 頻道(bit71) 發(fā)送(bit0 0 發(fā)送:/1:接收);code RFConfig rconf =15,0 x50,0 x50,0 x00, 0 x00, 0 x00, 0 x00, 0 x00,0 x00, 0 xaa, 0 xbb, 0 x12, 0 x34,
18、 0 x83,0 x6f, 0 x05;/nRF2401 接收模式配置字/02 頻道(bit71接收(bit0 0 發(fā)送:/1:接收)/*/unsigned char unsigned char unsigned charTXData14; RXData10;/4 字節(jié)地址+10 字節(jié)待發(fā)送的數(shù)據(jù)/10 字節(jié)接收數(shù)據(jù)Data1=0 xff;/*/sbit sbit sbit sbitCS=P11;CE =P04; DR1 =P06;PWR_UP =P02;/與 nRF2401 的接口定義/*/ sbit KEY =P05;sbit LED =P10;/*/ void init(void);vo
19、id nRF2401_ON(void); void Init_Receiver(void); void Init_Transmitter(void); void Set_TXmode(void); void Set_RXmode(void); void Delay10us(void);void Delay100us(unsigned char i);void TX_Packet void RX_Packet;unsigned char Spi_Read_Write (unsigned char byte); void CheckButtons(void);/*init void init(vo
20、id)/IO INITSTART */P0M1=0 x00; P0M2=0 x00; P1M1=0 x00; P1M2=0 x00; P2M1=0 x00; P2M2=0 x00;/P0 配置為準(zhǔn)雙向模式/P1 配置為準(zhǔn)雙向模式/P2 配置為準(zhǔn)雙向模式P0=0Xff;P1=0 xff; P2=0 xff;/SPI INITSPCTL =0 xd1;/bit7 :SSIG =1 忽略 SS 信號/bit6 :SPEN=1 ,允許 SPI/bit5 :DROD=0/bit4 :MASTER =1 主模式/bit3 :CPOL=0 , SPI_CLK 空閑時為低電平/bit2 :CPHA =0 ,
21、前時鐘上升沿驅(qū)動輸出及采樣方式/bit10 :01 CCLK/16 SPI 時鐘頻率SPI 中斷ESPI = 0;SPS= 0 xc0;/ 清除 SPI 傳輸完成標(biāo)志及寫標(biāo)志LED=0;Delay100us(200); LED=1;/LED 點亮/延時讓LED 保持點亮狀態(tài)/LED 熄滅/*initEND */*nRF2401_ON START*/ void nRF2401_ON(void)CE = 0;CS = 0; PWR_UP=1;Delay100us(30);/CE 初始化/CS 初始化/nRF2401 上電/延時 3ms 后 nRF2401 進入待機模式/*nRF2401_ON EN
22、D */*Init_Receiver START */ void Init_Receiver(void)unsigned char b;CE = 0;CS = 1;Delay10us/進入配置模式/延時 5us 以上/將接收模式配置字的全部 15 字節(jié)寫入 nRF2401 中;for(b=0;brconf.n;b+)Spi_Read_Write(rconf.bufb);CS = 0;CE = 1;/配置完成 進入待機狀態(tài)/激活接收模式 經(jīng)過 202us延時后 nRF2401 開始接收空中的高頻信號/*Init_Receiver END */*Init_Transmitter START */
23、void Init_Transmitter(void)unsigned char b;CE = 0;CS = 1;Delay10us/進入配置模式/延時 5us 以上/將發(fā)送模式配置字的全部 15 字節(jié)寫入 nRF2401 中;for(b=0;brconf n;b+)Spi_Read_Write(tconf.bufb);CS = 0;/配置完成 進入待機狀態(tài)/*Init_Transmitter END */*Set_RXmode START */void Set_RXmode(void)CE = 0;CS = 1;Delay10us/用于 nRF2401 上電后 已經(jīng)配置好了地址 數(shù)據(jù)長度等
24、快速切換到接收模式/進入配置模式/延時 5us 以上/僅將接收模式配置字的第 15 個字節(jié)寫入 nRF2401 中/配置完成 進入待機狀態(tài);Spi_Read_Write(rconf.buf14); CS = 0;CE = 1;/激活接收模式 經(jīng)過 202us延時后 nRF2401 開始接收空中的高頻信號/*Set_RXmode END */*Set_TXmode START */void Set_TXmode(void)CE = 0;CS = 1;Delay10us/用于 nRF2401 上電后 已經(jīng)配置好了地址 數(shù)據(jù)長度等 快速切換到發(fā)送模式/進入配置模式/延時 5us 以上/僅將發(fā)送模式配
25、置字的第 15 個字節(jié)寫入 nRF2401 中/配置完成 進入待機狀態(tài);Spi_Read_Write(tconf.buf14); CS = 0;/*Set_RXmode END */*Delay10us void Delay10us(void)unsigned char y;START */for(y=0;y10;y+)_nop_;/*Delay10us/*Delay100us void Delay100us(unsigned char i)unsigned char x; unsigned char y; for(x=0;xi;x+)for(y=0;y100;y+)END */ START
26、*/_nop_;/*Delay100usEND */*TX_Packet START */ void TX_Packetunsigned char i;TXData0=0 xaa; TXData1=0 xbb; TXData2=0 x12; TXData3=0 x34;TXData4=Data1; TXData5=0 x02; TXData6=0 x03; TXData7=0 x04; TXData8=0 x05; TXData9=0 x06; TXData10=0 x07; TXData11=0 x08; TXData12=0 x09; TXData13=0 x10;/地址高字節(jié) MSB/地址/地址/地址低字節(jié)/數(shù)據(jù) 0 :發(fā)送的鍵值/數(shù)據(jù) 1/數(shù)據(jù) 2/數(shù)據(jù) 3/數(shù)據(jù) 4/數(shù)據(jù) 5/數(shù)據(jù) 6/數(shù)據(jù) 7/數(shù)據(jù) 8/數(shù)據(jù) 9LSBCS=0; CE=1;Delay10us/將 CE 置高/延時 5us 以上 將地址和數(shù)據(jù)送到 nRF2401 的 FIFO 中;for (i=0;i14;i+)Spi_Read_Write(TXDatai);CE=0; /將 CE 置低 經(jīng)過 195us延時后 nRF2401 開始高頻發(fā)送 發(fā)送完成后進入待機模式/* TX_Packet END */* RX_Packet START */ void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- N-Nitroso-clonidine-生命科學(xué)試劑-MCE-2307
- IRF1-IN-1-生命科學(xué)試劑-MCE-6527
- 二零二五年度文化場館消毒防疫服務(wù)合同
- 二零二五年度電動助力車租賃與充電樁安裝合同
- 2025年度房屋買賣合同變更及產(chǎn)權(quán)過戶補充協(xié)議
- 2025年度理發(fā)店入股與客戶滿意度提升合作協(xié)議
- 施工現(xiàn)場施工防塌陷制度
- 施工單位關(guān)于施工設(shè)備的工作聯(lián)系函
- 綠色校園教學(xué)樓電氣節(jié)能與環(huán)保方案
- 食堂的應(yīng)急預(yù)案
- GB/T 44143-2024科技人才評價規(guī)范
- 對醫(yī)院領(lǐng)導(dǎo)的批評意見怎么寫更合適范文(6篇)
- 賬期協(xié)議書賬期合同書
- 2024年常德職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- 天津市河?xùn)|區(qū)2023-2024學(xué)年九年級上學(xué)期期末數(shù)學(xué)試題
- 工程防滲漏培訓(xùn)課件
- 黑龍江省哈爾濱市2024年數(shù)學(xué)八年級下冊期末經(jīng)典試題含解析
- 牛津3000核心詞匯表注釋加音標(biāo)1-4 完整版
- 高中英語以讀促寫教學(xué)策略與實踐研究課件
- 金屬表面處理中的冷噴涂技術(shù)
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量檢測化學(xué)試題(解析版)
評論
0/150
提交評論