參考了很多程式,經過測試,才看懂nrf24l01的狀態機,在看資料手冊時很多地方都不懂後來看了關於除錯的文章
再自己測試了一下某些功能,只測試了一邊傳送,一邊接收的功能,做的很妥跟網上的程式相差無幾。
#include
#include "nrf24l01.h"
#define tx_addr_width 5
//本地發射位址寬度
#define rx_addr_width 5 //本地接收位址寬度
#define tx_data_width 3
//傳送資料位元組數
最大位元組數為32位元組
#define rx_data_width 3
//接收資料位元組數
unsigned char code tx_address[tx_addr_width]=;
//發射通道位址
unsigned char code rx_address_p0[rx_addr_width]=;
//接收通道位址
unsigned char bdata status;
//定義乙個位與位元組都可以訪問的變數用來監控irq中斷訊號
sbit rx_dr=status^6;
//當接收到有效資料後變為1
sbit tx_dr=status^5;
//當資料傳送完成後產生中斷,在自動應答模式中接收到應答訊號後為1
sbit max_rt=status^4;
//當達到最大重發次數後變為1,產生此中斷後必須清零後才能再次通訊
void usdelay(void) //誤差 -0.149305555556us
12us
void usdelay130(void) //誤差 -0.451388888889us
unsigned char spi_rw(unsigned char uchar)
//spi協議
return uchar;
//返回讀取的值
}unsigned char spi_read(unsigned char reg)
//spi讀操作 兩個位元組完成讀一次 reg:讀指令
unsigned char spi_write(unsigned char reg,unsigned char value)
//spi寫操作 寫乙個位元組的資料 先寫指令說明往哪個暫存器寫資料,reg:指令,value:資料
unsigned char spi_read_more(unsigned char reg,unsigned char *puf_read,unsigned char width)
//讀取多個資料
reg:指令,*puf儲存資料的指標,width:要讀取資料的長度
csn=1;
return status;
}unsigned char spi_write_more(unsigned char reg,unsigned char *puf_write,unsigned char width)
//寫多個資料 reg:指令,*puf:要寫的資料,width:資料長度
csn=1;
return status;
}void receive_model()
//接收模式初始化配置
void send_model()
//發射模式初始化配置
void send_data(unsigned char *parray)
//傳送資料
unsigned char read_data(unsigned char *parray)
//讀取接收的資料 *parray:傳入存放資料的陣列
spi_write(write_reg+status,status);
//清除中斷標誌位
return mark;
void main()
mark=0;
}spi_read(status); //讀狀態暫存器
spi_read(fifo_status);//讀fifo狀態
led0=1;}}
NRF24L01的通訊距離
nrf24l01模組的傳輸距離由 使用什麼天線 是否加了功率晶元 程式中選擇的傳輸速率 空曠和有障礙物 四個因素決定。目前市場上的nrf24l01有三種模組。1.天線在pcb上 零售價6元 15元 該模組的天線在pcb上,沒有加功率晶元,屬於傳輸距離最短的模組。空曠條件下,經過實測,2m傳輸速率下1...
nRF24L01 使用說明
bit0 prim rx設定工作模式,傳送或接收,0 傳送 1 接收。bit1 pwm up設定是否上電,晶元在傳送或接收完成後根據此位判斷是進入powerdown模式 0 還是進入standby模式 1 bit2 crco設定crc的位元組數,0 1byte 1 2byte。bit3 en crc...
nRF24L01無線溫度檢測
在當今的工農業生產中,需要進行溫濕度採集的場合越來越多,準確方便地測量溫度變得至關重要。傳統的有線測溫方式存在著佈線複雜,線路容易老化,線路故障難以排查,裝置重新布局要重新佈線等問題。特別是在有線網路不通暢或由於現場環境因素的限制而不便架設線路的情況下,給溫濕度的資料採集帶來了很大的麻煩。要想監測到...