基于NRF24L01的一对六,一对多通讯程序开发。

一、NRF24L01的通讯方式

 NRF24L01是Nordic公司研发的一款2.4G通信芯片,具备以下特性:

1、最多支持6通道接收。

2、支持自动应答功能,在EN_AA设置。

3、支持在0-125个频道下进行数据手法。

4、可设置接收数据有效宽度。

 

两个nrf24l01通讯必须满足以下条件

1、频道相同,可设置的频道为0-125,共126个频道。

2、收发地址必须相同。发送端的RX_ADDR_P0为应答通道,必须要和TX_ADDR相同;接收端的RX_ADDR_Px必须与发送端的TX_ADD相同。

3、发送的字节数和接收设置的字节数一致,默认接收长度为0。

二、通讯配置过程

接收端:

1、配置通道0-5的地址,之一,通道2-5的通道高4字节与通道1的地址共用。

2、使能全部接收的自动应答接收地址功能,都设置为0x3f。

3、设置接收端的通讯频道,0-125。

4、设置通道0-5的接收数据宽度,最大32字节。

5、设置发射增益参数。

6、配置接收工作模式。

    NRF24L01_CE=0;	  
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS0,RX_ADR_WIDTH);//写RX节点地址
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(u8*)RX_ADDRESS1,RX_ADR_WIDTH);//写RX节点地址
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P2,(u8*)RX_ADDRESS2,1);//写RX节点地址
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P3,(u8*)RX_ADDRESS3,1);//写RX节点地址
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P4,(u8*)RX_ADDRESS4,1);//写RX节点地址
	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P5,(u8*)RX_ADDRESS5,1);//写RX节点地址
	
	NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x3f);    //使能通道0的自动应答    
	NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x3f);//使能通道0的接收地址  	 
	NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);	     //设置RF通信频率		 
	
	NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度 
	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+RF_SETUP,0x0f);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
	NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 
	NRF24L01_CE = 1; //CE为高,进入接收模式 

发送端:

1、设置发送地址;接收端通道0-5的任意地址。

2、设置RX_ADDR_P0的应答地址,和步骤1地址相一致。

3、设置对应通道的自动应答功能。

4、设定最大重发次数,达到一定次数会产生中断输出。

5、设置通讯频道,0-125。

6、设置发射增益参数。

7、配置发送工作模式。

    NRF24L01_CE=0;	    
  	NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS4,TX_ADR_WIDTH);//写TX节点地址 
  	NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS4,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK	  
 
  	NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x3f);     //使能通道0的自动应答    
  	NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x3f); //使能通道0的接收地址  
  	NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
  	NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);       //设置RF通道为40
  	NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  	NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
	NRF24L01_CE=1;

注意:配置地址为5byte,SPI写入地址从低到高写入。

char addr[5] = {0x01,0x02,0x03,0x04,0x05};//其中先写入的0x01为NRF通道地址的最地位。

三、通讯测试如下:

四、一对多通讯原理

1、修改通讯频道进行通讯。发送端设置不同的频道进行通讯,接收端想要和对应通道的时候在切换过去与相应的发送端通讯。

2、修改通讯地址进行通讯。发送端设置为不同的发送地址,接收端可轮询设置RX_ADDR_P0地址,最终实现多通道通讯。

3、以上两种方式可组合使用,实现一对多通讯的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值