NRF24L01的多对一通信
一、一对一通信
要弄懂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的多对一通信相关推荐
- STM32控制NRF24L01无线模块进行通信
一.NRF2401无线模块 1.模块介绍 功能介绍 (1)2.4Ghz 全球开放ISM 频段免许可证使 2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合 (3)126 ...
- NRF52832之ESB功能与NRF24L01进行2.4G通信
NRF52之ESB学习笔记 目的:为了能与NRF24L01通信,工程中加入nrf_esb.c, nrf_esb.h 先了解RADIO的各种工作状态及流程 1状态 RADIO的工作状态: DISABLE ...
- java实现局域网内单对单和多对多通信的设计思路
这个看起来是很简单的,不就是socket吗,但是,要想有一个好的用户体验,还是很难的,主要问题有: 既然是局域网,那么就必然没有一个固定的IP地址作为主机,这个问题怎么解决? 好吧,有 ...
- VB6 通过winsock控件数组实现客户端和服务器多对一通信
说明:我是在最近开发一个考试系统过程中搜索到上面文章的,它提供的思想非常实用.当然,这篇文章仅提供了一个基本思路,详细的实现在人民邮电出版社出版的<Visual Basic网络通信协议分析与应用 ...
- STM32F103C8T6实验代码之NRF24L01P 多发一收
NRF24L01P的多发一收 NRF24L01P简介 模块硬件 代码格式 多通道(多发一收) 单通道通信 多发一收 主机的接收模式函数 主机的接收数据包函数 从机的发送模式函数 总结 NRF24L01 ...
- NRF24L01模块多发一收通信(STM32)
NRF24L01模块多发一收通信(STM32) 目录 NRF24L01模块多发一收通信(STM32) 前言 一.解决思路 二.实验过程 1.设备ID号定义 2.数据打包发送 3.数据接收拆解 总结 前 ...
- arduino笔记34:nRF24l01模块使用 通信地址 数据通道 校验码 PID
最近再arduino中文社区看到了一篇介绍nrf24l01基本原理的帖子,内容感觉蛮不错的,学习一下,记录一下学习笔记. 大部分内容都是Arduino中文社区的帖子,附上自己的一点点体会. 目录 一. ...
- nrf52832与nrf24L01+通信
使用2.4G无线芯片nrf24L01+与蓝牙芯片nrf52832通信,nrf52832工作在2.4G模式. nrf24L01+使用以前调试通过程序,两个nrf24L01+通信良好. nrf52832模 ...
- arduino的nrf24L01收发通信
最近弄了两个nrf24l01的模块,想试试之后往智能家居上用,正好之前有一个小车用来验证导航算法的,还有一个小四轴的控制手柄,所以萌生了结合三者弄个遥控车玩一玩.小四轴基于STC15系列主控,51架构 ...
最新文章
- 微型计算机有什么电路组成,第二章 微型计算机的基本电路组成
- FLEX 动态添加事件
- 【转摘】Office三剑客之间的格式互换
- boost::hana::drop_back用法的测试程序
- 实例讲解如何通过Oracle成功发送邮件-入门基础
- MS-SQL CLR 扩展函数包 CLR_FunctionS!
- Day-4: Python函数
- 北语19秋计算机应用基础作业答案,北语18秋《计算机应用基础》练习1满分答案...
- 以太网和路由设置,内网和外网同时上
- 椭圆形中间一个大写的v_静安区椭圆形桥梁空心板橡胶气囊,方形桥梁板橡胶气囊_冠桥橡胶...
- 【转载】使用tf.py_func函数增加Tensorflow程序的灵活性
- python123第七周测验编程题答案_Python第七周编程题
- Flash必要的系统组件未能正常运行
- 在AJAX中可以使用的Response.Redirect 的冲突解决办法
- spark数据查询语句select_Spark-SQL之DataFrame操作大全
- C# winform窗体实现图片轮播
- 计算机在条形码的应用,条码应用
- 操作系统和内核有什么区别?
- 领导科学 读书笔记(一)
- 铁道部网站扩容投诉与建议