nrf24l01是适合初学入门的无线模块

上传人:飞*** 文档编号:40297473 上传时间:2018-05-25 格式:DOC 页数:18 大小:75.50KB
返回 下载 相关 举报
nrf24l01是适合初学入门的无线模块_第1页
第1页 / 共18页
nrf24l01是适合初学入门的无线模块_第2页
第2页 / 共18页
nrf24l01是适合初学入门的无线模块_第3页
第3页 / 共18页
nrf24l01是适合初学入门的无线模块_第4页
第4页 / 共18页
nrf24l01是适合初学入门的无线模块_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《nrf24l01是适合初学入门的无线模块》由会员分享,可在线阅读,更多相关《nrf24l01是适合初学入门的无线模块(18页珍藏版)》请在金锄头文库上搜索。

1、24l01 的多机通信采用频分多子的方法,只需要在接受端对不同的通道配置地址即可。发 送端使用相应的地址作为本机地址。接受数据时通过读取 STATUS 中相关位即可得知接收的 是哪个通道的数据。以下仅给出多对一的通信代码。至于一对多,以及多对多等情况读者可以自行研究了。只给出相关部分,其他部分请参考前两篇文章-接受端-uint const ADDRESS0ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /频道 0 接收地址 uint const ADDRESS1ADR_WIDTH= 0xc4,0xc3,0xc2,0xc1,0xc0; /频道 1 接收地址uchar w

2、ho=0xff; /* * /*NRF24L01 初始化/* */ void init_NRF24L01(void) us(100);CE=0; / chip enableCSN=1; / Spi disable SCK=0; / Spi clock line init high /SPI_Write_Buf(WRITE_REG + TX_ADDR,ADDRESS0, ADR_WIDTH); / 写本地地址SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,ADDRESS0,ADR_WIDTH); / 频道 0 地址 SPI_Write_Buf(WRITE_REG + R

3、X_ADDR_P1,ADDRESS1,ADR_WIDTH); / 频道 1 地址SPI_RW_Reg(WRITE_REG + EN_AA, 0x03); /频道 0、1 自动应答 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x03); /允许频道 0、1 SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 设置信道工作为 2.4GHZ,收发必须一 致SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /0 接收数据长度 SPI_RW_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD

4、_WIDTH); /1 接收数据长度SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率为 1MHZ,发射功率为 最大值 0dB/* */ /*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) /*功能:数据读取后放如 rx_buf 接收缓冲区中/* */ unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) unsigned char revale=0; sta=SPI_Read(STATUS); / 读取状态寄存其来判断数据接收

5、状况 if(RX_DR) / 判断是否接收到数据CE = 0; SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);revale =1;who=stawho|=0xf0; /通道 0:who=0xf0;通道 1:who=0xf2 SPI_RW_Reg(WRITE_REG+STATUS,0xff); /接收到数据后 RX_DR,TX_DS,MAX_PT 都置高为 1,通过写 1 来清楚中断标志CSN=0; SPI_RW(FLUSH_RX); CSN=1; return revale; void main(void) uchar i; uchar RxB

6、ufTX_PLOAD_WIDTH; init_NRF24L01() ;StartUART(); ms(6000); while(1) /如果接收到数据,发往 PCSetRX_Mode();if(nRF24L01_RxPacket(RxBuf)R_S_Byte(who);ms(10000);for(i=0;i/模式选择 /#define RMODE#define TMODEtypedef unsigned char uchar; typedef unsigned char uint; /*SPI-IO 端口 * sbit CE = P10;/3 sbit SCK = P11;/5 sbit MI

7、SO = P12;/7 sbit CSN = P15;/4 sbit MOSI = P16;/6 sbit IRQ = P17;/8/*地址、数据长度 * #define TX_ADR_WIDTH 5 / 5 uints TX address width #define RX_ADR_WIDTH 5 / 5 uints RX address width #define TX_PLOAD_WIDTH 32 / 20 uints TX payload #define RX_PLOAD_WIDTH 32 / 20 uints TX payload /*NRF24L01 寄存器指令 * #define

8、 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 0

9、x00 / 配置收发状态,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 0

10、x09 / 地址检测 #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

11、接收数据长度 #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 栈入栈出状态寄存器设置 /* * void init_NRF24L01(void); uint SPI_RW(uint uchar); uch

12、ar SPI_Read(uchar reg); void SetRX_Mode(void); uint SPI_RW_Reg(uchar reg, uchar value); uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars); uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars); unsigned char nRF24L01_RxPacket(unsigned char* rx_buf); void nRF24L01_TxPacket(unsigned char * tx_buf); /* * #endif/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号