⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf24l01.h

📁 C51驱动nrf24l01无线发送
💻 H
字号:
#include "config.h"
#ifndef _NRF24L01_H_
#define _NRF24L01_H_

/************************************NRF24L01端口定义***********************************/
/*
sbit    NC     =P2^0;	 //没用,不接也可
sbit 	MISO	=P2^5;	 //数字输出(从 SPI 数据输出脚)
sbit 	MOSI	=P2^4;	 //数字输入(从 SPI 数据输入脚)
sbit	SCK	    =P1^7;	 //数字输入(SPI 时钟)
sbit	CE	    =P2^1;	 //数字输入(RX 或 TX 模式选择)
sbit	CSN		=P2^2;	 //数字输入(SPI片选信号)
sbit	IRQ		=P2^6;	 //数字输入(可屏蔽中断)
*/
/************************************按键***********************************************/
/*
sbit	KEY1=P3^3;//按键S1
sbit	KEY2=P3^2;//按键S2
*/
/************************************数码管位选******************************************/
/*
sbit	led1=P1^0;	//LED0
sbit	led2=P1^1;	//LED1
sbit    led3 =P1^2; //LED2 
sbit    led4 =P1^3;	//LED3
sbit    led5 =P1^4;	//LED4
*/
/******************************************************************************************/
/*********************************************NRF24L01***********************************/
#define TX_ADR_WIDTH    5   	// 5 unsigned ints TX address width
#define RX_ADR_WIDTH    5   	// 5 unsigned ints RX address width
#define TX_PLOAD_WIDTH  16  	// 20 unsigned ints TX payload
#define RX_PLOAD_WIDTH  16  	// 20 unsigned ints TX payload
/***************************************NRF24L01寄存器指令*******************************/
#define READ_REG        0x00  	// 读寄存器指令
#define WRITE_REG       0x20 	// 写寄存器指令
#define RD_RX_PLOAD     0x61  	// 读取接收数据指令
#define WR_TX_PLOAD     0xA0  	// 写待发数据指令
#define FLUSH_TX        0xE1 	// 冲洗发送 FIFO指令
#define FLUSH_RX        0xE2  	// 冲洗接收 FIFO指令
#define REUSE_TX_PL     0xE3  	// 定义重复装载数据指令
#define NOP             0xFF  	// 保留
/*************************************SPI(nRF24L01)寄存器地址***********************/
#define CONFIG          0x00  // 配置收发状态,CRC校验模式以及收发状态响应方式
#define EN_AA           0x01  // 自动应答功能设置
#define EN_RXADDR       0x02  // 可用信道设置
#define SETUP_AW        0x03  // 收发地址宽度设置
#define SETUP_RETR      0x04  // 自动重发功能设置
#define RF_CH           0x05  // 工作频率设置
#define RF_SETUP        0x06  // 发射速率、功耗功能设置
#define STATUS          0x07  // 状态寄存器
#define OBSERVE_TX      0x08  // 发送监测功能
#define CD              0x09  // 地址检测           
#define RX_ADDR_P0      0x0A  // 频道0接收数据地址
#define RX_ADDR_P1      0x0B  // 频道1接收数据地址
#define RX_ADDR_P2      0x0C  // 频道2接收数据地址
#define RX_ADDR_P3      0x0D  // 频道3接收数据地址
#define RX_ADDR_P4      0x0E  // 频道4接收数据地址
#define RX_ADDR_P5      0x0F  // 频道5接收数据地址
#define TX_ADDR         0x10  // 发送地址寄存器
#define RX_PW_P0        0x11  // 接收频道0接收数据长度
#define RX_PW_P1        0x12  // 接收频道0接收数据长度
#define RX_PW_P2        0x13  // 接收频道0接收数据长度
#define RX_PW_P3        0x14  // 接收频道0接收数据长度
#define RX_PW_P4        0x15  // 接收频道0接收数据长度
#define RX_PW_P5        0x16  // 接收频道0接收数据长度
#define FIFO_STATUS     0x17  // FIFO栈入栈出状态寄存器设置
//#define	MAX_RT  		0x10  	// Max #of TX retrans interrupt
//#define TX_DS   		0x20  	// TX data sent interrupt
//#define RX_DR   		0x40  	// RX data received

/*************************************函数声明****************************************/
void Delay(unsigned int s);		     //大延时
void inerDelay_us(unsigned char n);	 //小延时
void SetRX_Mode(void);		  //数据接收配置
void init_NRF24L01(void);	  //NRF24L01 初始化
void nRF24L01_TxPacket(unsigned char * tx_buf);			  //发送 tx_buf中数据
unsigned int SPI_RW(unsigned int dat);		  //根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01读出一字节
unsigned int SPI_RW_Reg(unsigned char reg, unsigned char value);	//写数据value到reg寄存器
unsigned int SPI_Read_Buf(unsigned char reg, unsigned char *pBuf,	//从reg寄存器读出bytes个字节,通常用来
						unsigned char uchars);				//读取接收通道数据或接收/发送地址
unsigned int SPI_Write_Buf(unsigned char reg, unsigned char *pBuf,	//把pBuf缓存中的数据写入到nRF24L01,通常用来写入发
						unsigned char uchars);				//射通道数据或接收/发送地址
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);	  //数据读取后放入rx_buf接收缓冲区中
unsigned char SPI_Read(unsigned char reg);	  //从reg寄存器读一字节

void nRF24L01_Initial(void);
void RX_Mode(void);
void TX_Mode(unsigned char *Rf_Send_Buf);
void rec_rf_data(unsigned char *Rf_Rec_Buf);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -