一、一对一通信
要弄懂NRF的多对一通信,我们先要清楚NRF的一对一通信的地址设置,为了解说通俗我们将NRF24L01之间的通信比作两个人写信交流:首先寄信方将信件寄给收信方,收信方收到信件之后回信给寄信方确认收到信件。(以上为NRF24L01一次通信的过程,即发送端T发送信息给接收端R的流程)要完成双方的信件互通,那么双方都要知道对方的地址。这对应着NRF24L01作为发送端T时要设置1、发送地址:TX_ADDR。2、应答信号地址:RX_ADDR_P0(通道0用来接收接收端R的应达信号)。而接收端R要设置接收地址:RX_ADDR_Px(x取值为0到5,一个NRF24L01有6个通道,每一个通道都能设置作为接收信号的通道)
以上三个地址都要设置为相同的值。因为A发送信息给B,B把A的发送地址作为目标地址发回一个应答信号ACK,所以发送地址=应答信号地址=接收地址。注意:只有发送端的通道0才能接收应答信号。

二、多对一通信
多对一通信是指多个NRF24L01无线传输模块对一个NRF24L01无线传输模块进行数据传输,NRF24L01之所以能够进行多对一通信是因为:一个NRF24L01具有6个通道,每一个通道都能够接收信息。
对于接收端R:我们将NRF24L01接收端R的6个数据通道的地址设置为不同的值,注意: 接收端通道0 RP0和接收端通道1 RP1的地址能随意设置,但是Rp2,Rp3,Rp4,Rp5的地址前地址前四个字节要和Rp1一致,只有最后一个字节能随意取值。
对于其他的6个发送端T1,T2,T3,T4,T5,T6,我们只需将他们的发送地址设置为对应的接收端的6个通道地址,当然6个发送端的应答信号地址即发送端通道0的地址要和自身的发送地址一致。
接收端 接收模式对应代码

void NRF24L01_RX_Mode(void)
{NRF24L01_CE=0;  /*将六个通道的地址写进NRF*/  NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS0,RX_ADR_WIDTH);NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(u8*)RX_ADDRESS1,RX_ADR_WIDTH);NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P2,(u8*)RX_ADDRESS2,RX_ADR_WIDTH);NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P3,(u8*)RX_ADDRESS3,RX_ADR_WIDTH);NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P4,(u8*)RX_ADDRESS4,RX_ADR_WIDTH);NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P5,(u8*)RX_ADDRESS5,RX_ADR_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);  NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P3,RX_PLOAD_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P4,RX_PLOAD_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P5,RX_PLOAD_WIDTH);NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x3f);    NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x3f);  NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);             NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);  NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);NRF24L01_CE = 1;
}
发送端
**发送端X 发送模式设置函数**

void NRF24L01_TX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)RX_ADDRESSX,TX_ADR_WIDTH); //设置发送地址 对应接收端的通道X地址
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESSX,RX_ADR_WIDTH);//设置应答信号接收地址 与自身发送地址一致

NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);
NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);
NRF24L01_CE=1;
}

“`

NRF24L01的多对一通信相关推荐

  1. STM32控制NRF24L01无线模块进行通信

    一.NRF2401无线模块 1.模块介绍 功能介绍 (1)2.4Ghz 全球开放ISM 频段免许可证使 2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合 (3)126 ...

  2. NRF52832之ESB功能与NRF24L01进行2.4G通信

    NRF52之ESB学习笔记 目的:为了能与NRF24L01通信,工程中加入nrf_esb.c, nrf_esb.h 先了解RADIO的各种工作状态及流程 1状态 RADIO的工作状态: DISABLE ...

  3. java实现局域网内单对单和多对多通信的设计思路

    这个看起来是很简单的,不就是socket吗,但是,要想有一个好的用户体验,还是很难的,主要问题有:         既然是局域网,那么就必然没有一个固定的IP地址作为主机,这个问题怎么解决? 好吧,有 ...

  4. VB6 通过winsock控件数组实现客户端和服务器多对一通信

    说明:我是在最近开发一个考试系统过程中搜索到上面文章的,它提供的思想非常实用.当然,这篇文章仅提供了一个基本思路,详细的实现在人民邮电出版社出版的<Visual Basic网络通信协议分析与应用 ...

  5. STM32F103C8T6实验代码之NRF24L01P 多发一收

    NRF24L01P的多发一收 NRF24L01P简介 模块硬件 代码格式 多通道(多发一收) 单通道通信 多发一收 主机的接收模式函数 主机的接收数据包函数 从机的发送模式函数 总结 NRF24L01 ...

  6. NRF24L01模块多发一收通信(STM32)

    NRF24L01模块多发一收通信(STM32) 目录 NRF24L01模块多发一收通信(STM32) 前言 一.解决思路 二.实验过程 1.设备ID号定义 2.数据打包发送 3.数据接收拆解 总结 前 ...

  7. arduino笔记34:nRF24l01模块使用 通信地址 数据通道 校验码 PID

    最近再arduino中文社区看到了一篇介绍nrf24l01基本原理的帖子,内容感觉蛮不错的,学习一下,记录一下学习笔记. 大部分内容都是Arduino中文社区的帖子,附上自己的一点点体会. 目录 一. ...

  8. nrf52832与nrf24L01+通信

    使用2.4G无线芯片nrf24L01+与蓝牙芯片nrf52832通信,nrf52832工作在2.4G模式. nrf24L01+使用以前调试通过程序,两个nrf24L01+通信良好. nrf52832模 ...

  9. arduino的nrf24L01收发通信

    最近弄了两个nrf24l01的模块,想试试之后往智能家居上用,正好之前有一个小车用来验证导航算法的,还有一个小四轴的控制手柄,所以萌生了结合三者弄个遥控车玩一玩.小四轴基于STC15系列主控,51架构 ...

最新文章

  1. 微型计算机有什么电路组成,第二章 微型计算机的基本电路组成
  2. FLEX 动态添加事件
  3. 【转摘】Office三剑客之间的格式互换
  4. boost::hana::drop_back用法的测试程序
  5. 实例讲解如何通过Oracle成功发送邮件-入门基础
  6. MS-SQL CLR 扩展函数包 CLR_FunctionS!
  7. Day-4: Python函数
  8. 北语19秋计算机应用基础作业答案,北语18秋《计算机应用基础》练习1满分答案...
  9. 以太网和路由设置,内网和外网同时上
  10. 椭圆形中间一个大写的v_静安区椭圆形桥梁空心板橡胶气囊,方形桥梁板橡胶气囊_冠桥橡胶...
  11. 【转载】使用tf.py_func函数增加Tensorflow程序的灵活性
  12. python123第七周测验编程题答案_Python第七周编程题
  13. Flash必要的系统组件未能正常运行
  14. 在AJAX中可以使用的Response.Redirect 的冲突解决办法
  15. spark数据查询语句select_Spark-SQL之DataFrame操作大全
  16. C# winform窗体实现图片轮播
  17. 计算机在条形码的应用,条码应用
  18. 操作系统和内核有什么区别?
  19. 领导科学 读书笔记(一)
  20. 铁道部网站扩容投诉与建议

热门文章

  1. 《领导沟通艺术与真实影响力》感想二
  2. 回味无穷:历史名人的幽默隽语[转自人民网]
  3. 微信视频号打造带货闭环:主播叫苦连天
  4. android分享截屏到微信,Android 微信分享长图 ScrollView 生成长截图 View变bitmap
  5. 使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱
  6. 打印机一页内容总是有空白
  7. HDU1234 开门人和关门人【水题】
  8. 最高效的学习方法——逆向学习法
  9. 2023MyBatis全新面试题【30题】
  10. 顺序图-循环和分支-操作符的使用