Esempio n. 1
0
void Nrf_Check_Event(void)
{
    u8 sta = Nrf_Get_Sta();
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
//    if (sta & (1 << RX_DR))
//    {
//        u8 rx_len = NRF_Read_Reg(R_RX_PL_WID);
//        NRF_Read_Buf(RD_RX_PLOAD, NRF24L01_RXDATA, rx_len);
//        Sys_sPrintf(Printf_USART, NRF24L01_RXDATA, rx_len);
//        //Data_Receive_Anl(NRF24L01_RXDATA,rx_len);
//    }
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
    if (sta & (1 << TX_DS))
    {
    }
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
    if ((sta & (1 << MAX_RT)) || (sta & 0x01)) //??????????
    {
        NRF_Write_Reg(FLUSH_TX, 0xff);
    }
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
    NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}
Esempio n. 2
0
u8 xNRF_TxPacket(void *txbuf,u8 len,void *rxbuf,u8* rxlen)		//
{
	u8 sta;
	NRF_Write_Buf(WR_TX_PLOAD,txbuf,len);//写数据到TX FIFO
	NRF_CE=1; //启动发送
	while(NRF_IRQ == 1); //等待发送完成
	sta=NRF_Read_Reg(STATUS); //读取状态寄存器的值 
	NRF_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除 TX_DS或MAX_RT 中断标志
	
	if(sta&MAX_TX) //达到最大重发次数
	{
		NRF_Write_Reg(FLUSH_TX,0xff);//清除 TX FIFO 寄存器
		return MAX_TX;
	}
	if(sta&RX_OK)		//收到应答数据包
	{
		*rxlen = NRF_Read_Reg(R_RX_PL_WID);
		NRF_Read_Buf(RD_RX_PLOAD,rxbuf,*rxlen);//读取数据
		NRF_Write_Reg(FLUSH_RX,0xff);//清除 RX FIFO 寄存器 ???
		
		return RX_OK;
	}
	if(sta&TX_OK)//发送完成
	{
		return TX_OK;
	}
	return 0;//其他原因发送失败
}
//接收函数
u8 NRF24L01_RxPacket(u8 *rxbuf)
{
	u8 sta;		    							   
        //SPI2_SetSpeed(SPI_SPEED_4); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)   
	sta=NRF_Read_Reg(NRFRegSTATUS);  //读取状态寄存器的值    	 
	NRF_Write_Reg(NRF_WRITE_REG+NRFRegSTATUS,sta); //清除TX_DS或MAX_RT中断标志
	if(sta&RX_OK)//接收到数据
	{
		NRF_Write_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据
		NRF_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器 
		return 0; 
	}	   
	return 1;//没收到任何数据
}		
void Nrf_Check_Event(void)
{
	u8 sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<RX_DR))
	{	
		u8 rx_len = NRF_Read_Reg(R_RX_PL_WID);
		if(rx_len<33)
		{
			NRF_Read_Buf(RD_RX_PLOAD,NRF24L01_RXDATA,rx_len);// read receive payload from RX_FIFO buffer
			LED2_ON
			Data_Receive_Anl(NRF24L01_RXDATA,rx_len);
			
			Nrf_Erro = 0;
		}
		else
		{
			NRF_Write_Reg(FLUSH_RX,0xff);//Çå¿Õ»º³åÇø
		}
	}
	else
	{
		Nrf_Erro ++;
		if(Nrf_Erro>2000)	//³¬¹ý1sδ½ÓÊÕnrfÊý¾Ý £¬ÉÏËø
		{
			Nrf_Erro = 0;
			Rc_C.ARMED = 0;
		}
	}
	
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<TX_DS))
	{
		//LED1_ONOFF();
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<MAX_RT))
	{
		if(sta & 0x01)	//TX FIFO FULL
		{
			NRF_Write_Reg(FLUSH_TX,0xff);
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}
Esempio n. 5
0
u8 NRF_RxPacket(void *rxbuf)		//成功接收数据返回0
{
	u8 sta; 
	sta=NRF_Read_Reg(STATUS); //读取状态寄存器的值
	NRF_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除 TX_DS 或MAX_RT 中断标志
	
	if(sta&RX_OK)//接收到数据
	{
		NRF_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据
		NRF_Write_Reg(FLUSH_RX,0xff);//清除 RX FIFO 寄存器
		return 0;
	} 
	return 1;//没收到任何数据
} 
Esempio n. 6
0
/*======================================================================*/
void NRF_IRQ(void)
{
	uint8_t sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	if(sta & (1<<RX_DR))//接收中断
	{
	}
	if(sta & (1<<TX_DS))//发送完成并接收到应答信号中断
	{
		NRF_Write_Reg(0x27, 0xff);//清除nrf的中断标志位
	}
	if(sta & (1<<MAX_RT))//达到最大重发次数中断
	{
		NRF_Write_Reg(0x27, 0xff);//清除nrf的中断标志位
	}
}
Esempio n. 7
0
//接受数据时放入新数据包
u8 xNRF_RxPacket(void *rxbuf,u8* rxlen,void *txbuf,u8 txlen)
{
	u8 sta;
	
	sta=NRF_Read_Reg(STATUS); 						//读取状态寄存器的值
	NRF_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除 TX_DS 或MAX_RT 中断标志
	
	if(sta&RX_OK)//接收到数据
	{
		*rxlen = NRF_Read_Reg(R_RX_PL_WID);
		NRF_Read_Buf(RD_RX_PLOAD,rxbuf,*rxlen);//读取数据
		NRF_Write_Reg(FLUSH_RX,0xff);//清除 RX FIFO 寄存器
		NRF_Write_Buf(W_ACK_PAYLOAD,txbuf,txlen);	//写入应答时携带的数据包
		return 0;
	} 
	return 1;//没收到任何数据
}
Esempio n. 8
0
void NRF24L01_INIT(void)
{
	//这部分已经在SPI中初始化了
//	GPIO_InitTypeDef GPIO_InitStructure;

//  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
//	//24L01的IO初始化
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
//  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
//	
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);
//	
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
//  GPIO_Init(GPIOA, &GPIO_InitStructure);
	SPI_CE_L();		 //StandBy I模式	
	SPI_CE_L();
	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址 
	NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //写TX节点地址  
	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自动应答 
	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址 
	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次 
	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通道为CHANAL
	NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度 
	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x26); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启

	NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);   		 // IRQ收发完成中断响应,16位CRC,主发送
	
	SPI_CE_H();
}
//查询中断
void Nrf_Irq(void)
{
    uint8_t sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
    if(sta & (1<<RX_DR))//接收轮训标志位
    {
        NRF_Read_Buf(RD_RX_PLOAD,NRF24L01_RXDATA,RX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
        ReceiveDataFormNRF();      //自己做修改
    }
    NRF_Write_Reg(0x27, sta);//清除nrf的中断标志位
}
Esempio n. 10
0
//NRF2401+ 设置动态数据宽度,带数据包应答,
void xNRF_RX_Mode(void* txbuf,u8 len)
{
	NRF_CE=0; 
	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写入接收地址
	/*建立自动重发*/
	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道 0 的自动应答
	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道 0 的接收地址
	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1F);//设置自动重发参数:自动重发延时 500+86us,重发上限15次
	
	NRF_Write_Reg(NRF_WRITE_REG+FEATURE,0x06);	//使能动态数据宽度和带数据包应答
	NRF_Write_Reg(NRF_WRITE_REG+DYNPD,0x01);		//使能通道1的动态数据宽度(带数据包应答的功能所必须)
	
	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40);  //设置 RF 通信频率
	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);//设置 TX 发射参数:0db增益,2Mbps,低噪声增益开启
	NRF_Write_Reg(NRF_WRITE_REG+NRF_CONFIG, 0x0f); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
	NRF_Write_Reg(FLUSH_RX,0xff);	NRF_Write_Reg(FLUSH_TX,0xff);	//清空FIFO
	
	NRF_Write_Buf(W_ACK_PAYLOAD,txbuf,len);	//写入应答时携带的数据包
	NRF_CE = 1; //CE 为高,进入接收模式
}
Esempio n. 11
0
u8 NRF_TxPacket(void *txbuf)
{
	u8 sta;
	NRF_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//写数据到TX BUF 32 个字节
	
	while(NRF_IRQ == 1); //等待发送完成
	sta=NRF_Read_Reg(STATUS); //读取状态寄存器的值 
	NRF_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除 TX_DS 或MAX_RT 中断标志
	if(sta&TX_OK)//发送完成
	{
		return TX_OK;
	}
	
	if(sta&MAX_TX) //达到最大重发次数
	{
		NRF_Write_Reg(FLUSH_TX,0xff);//清除 TX FIFO 寄存器
		return MAX_TX;
	}
	return 0xff;//其他原因发送失败
}
Esempio n. 12
0
void Nrf_Check_Event(void)	//将2401接收到的数据返回串口
{
	u8 sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<RX_DR))//接收中断
	{
		u8 rx_len = NRF_Read_Reg(R_RX_PL_WID);	//2401寄存器,值为0x60
		if(rx_len<33)
		{
			NRF_Read_Buf(RD_RX_PLOAD,NRF24L01_RXDATA,rx_len);// read receive payload from RX_FIFO buffer
			Uart1_Send_Buf(NRF24L01_RXDATA,rx_len);
		}
		else 
		{
			NRF_Write_Reg(FLUSH_RX,0xff);//清空缓冲区
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<TX_DS))//发送中断
	{
		//PC_Debug_Show(1,2);
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<MAX_RT))//应该是缓存溢出中断
	{
		static u16 max_cnt = 0;
		max_cnt++;
		PC_Debug_Show(7,max_cnt);
		
		if(sta & 0x01)	//TX FIFO FULL
		{
			NRF_Write_Reg(FLUSH_TX,0xff);
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);//??nrf??????
}
Esempio n. 13
0
void Nrf_Check_Event(void)
{
	u8 sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<RX_DR))
	{
		u8 rx_len = NRF_Read_Reg(R_RX_PL_WID);
		if(rx_len<33)
		{
			NRF_Read_Buf(RD_RX_PLOAD,NRF24L01_RXDATA,rx_len);// read receive payload from RX_FIFO buffer
			//LED1_ONOFF();
			Data_Receive_Anl(NRF24L01_RXDATA,rx_len);
		}
		else 
		{
			NRF_Write_Reg(FLUSH_RX,0xff);//Çå¿Õ»º³åÇø
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<TX_DS))
	{
		Ledx_ONOFF(1);
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<MAX_RT))
	{
		if(1)//sta & 0x01)	//TX FIFO FULL
		{
			NRF_Write_Reg(FLUSH_TX,0);
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}
//接收模式
void SetRX_Mode(void)
{
    SPI_CE_L();
	  NRF_Write_Reg(FLUSH_RX,0xff);//清除TX FIFO寄存器			 
  	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(uint8_t*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
   	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);    //使能通道0的自动应答    
  	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址  	 
  	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40);	     //设置RF通信频率		  
  	NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度 	    
  	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  	NRF_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 
    SPI_CE_H();
    printf("NRF24L01设为接收模式...\r\n");
} 
//发送模式
void SetTX_Mode(void)
{
    SPI_CE_L();
    NRF_Write_Reg(FLUSH_TX,0xff);										//清除TX FIFO寄存器		  
    NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);		//写TX节点地址 
  	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); 	//设置TX节点地址,主要为了使能ACK	  
  	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);     //使能通道0的自动应答    
  	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址  
  	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
  	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40);       //设置RF通道为40
  	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  	NRF_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
    SPI_CE_H();
  
  
} 
Esempio n. 16
0
void NRF_RX_Mode(void)
{
//	u8 sta;
	NRF_CE=0; 
	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);
	
	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道 0 的自动应答
	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道 0 的接收地址
	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40);  //设置 RF 通信频率
	
	NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0 的有效数据宽度
	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);//设置 TX 发射参数,0db 增益,2Mbps,低噪声增益开启
	NRF_Write_Reg(NRF_WRITE_REG+NRF_CONFIG, 0x0f); //配置基本工作模式的参	//数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
		NRF_Write_Reg(FLUSH_RX,0xff);
	NRF_CE = 1; //CE 为高,进入接收模式
	

} 
Esempio n. 17
0
/*
*****************************************************************
* 发送模式
*****************************************************************
*/
void SetTX_Mode(void)
{
	SPI_CE_L();
	NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);   		 // IRQ收发完成中断响应,16位CRC,主发送
	SPI_CE_H();
} 
Esempio n. 18
0
void Nrf24l01_Init(u8 model, u8 ch)
{
	SPI_CE_L();
	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);	//写RX节点地址 
	NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); 		//写TX节点地址  
	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); 													//使能通道0的自动应答 
	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);											//使能通道0的接收地址 
	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);											//设置自动重发间隔时间:500us;最大自动重发次数:10次 
	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40);														//设置RF通道为CHANAL
	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); 											//设置TX发射参数,0db增益,2Mbps,低噪声增益开启
//NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x07); 										  //设置TX发射参数,0db增益,1Mbps,低噪声增益开启
/////////////////////////////////////////////////////////
	if(model==1)				//RX
	{
		NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);								//选择通道0的有效数据宽度 
		NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f);   		 // IRQ收发完成中断开启,16位CRC,主接收
	}
	else if(model==2)		//TX
	{
		NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);								//选择通道0的有效数据宽度 
		NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);   		 // IRQ收发完成中断开启,16位CRC,主发送
	}
	else if(model==3)		//RX2	伪双工
	{
		NRF_Write_Reg(FLUSH_TX,0xff);
		NRF_Write_Reg(FLUSH_RX,0xff);
		NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f);   		 // IRQ收发完成中断开启,16位CRC,主接收
		
		Spi_RW(0x50);
		Spi_RW(0x73);
		NRF_Write_Reg(NRF_WRITE_REG+0x1c,0x01);
		NRF_Write_Reg(NRF_WRITE_REG+0x1d,0x07);
	}
	else								//TX2	伪双工
	{
		NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);   		 // IRQ收发完成中断开启,16位CRC,主发送
		NRF_Write_Reg(FLUSH_TX,0xff);
		NRF_Write_Reg(FLUSH_RX,0xff);
		
		Spi_RW(0x50);
		Spi_RW(0x73);
		NRF_Write_Reg(NRF_WRITE_REG+0x1c,0x01);
		NRF_Write_Reg(NRF_WRITE_REG+0x1d,0x07);
	}
	SPI_CE_H();
}
Esempio n. 19
0
void xNRF_TX_Mode()
{
	NRF_CE=0; 
	NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);		//发送地址
	/*建立自动应答*/
	NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); //设置 TX 节点地址,主要为了使能 ACK
	NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道 0 的自动应答
	NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1F);//设置自动重发参数:自动重发延时 500+86us,重发上限15次
	
	NRF_Write_Reg(NRF_WRITE_REG+FEATURE,0x06);	//使能动态数据宽度和带数据包应答
	NRF_Write_Reg(NRF_WRITE_REG+DYNPD,0x01);		//使能通道1的动态数据宽度(带数据包应答的功能所必须)

	NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10 次
	NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置 RF 通道为 40
	NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置 TX 发射参数,0db增益,2Mbps,低噪声增益开启
	NRF_Write_Reg(NRF_WRITE_REG+NRF_CONFIG,0x0e); //配置基本工作模式的参数;上电,,EN_CRC,16BIT_CRC,发送模式,开启所有中断
	NRF_Write_Reg(FLUSH_TX,0xff);	NRF_Write_Reg(FLUSH_TX,0xff);
	
	NRF_CE=1;//CE 为高,10us 后启动发送
}