void ANO_NRF::Check_Event(void)
{
	u8 sta = Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<RX_DR))//接收中断
	{
		u8 rx_len = Read_Reg(R_RX_PL_WID);
		Read_Buf(RD_RX_PLOAD,NRF24L01_2_RXDATA,rx_len);
		Usart1_Send_Buf(NRF24L01_2_RXDATA,rx_len);
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<TX_DS))
	{
		
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<MAX_RT))
	{
		if(sta & 0x01)	//TX FIFO FULL
		{
			Write_Reg(FLUSH_TX,0xff);
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);//??nrf??????
	sta = Read_Reg(NRF_READ_REG + NRFRegSTATUS);
}
예제 #2
0
u8 ANO_NRF::NRF_Tx_Dat(u8 *txbuf,u8 *AckPacket)
{
	u8 state;  
 
	 /*ce为低,进入待机模式1*/
	CE_L();

	/*写数据到TX BUF 最大 32个字节*/						
   Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);

      /*CE为高,txbuf非空,发送数据包 */   
 	 CE_H();
	  	
	  /*等待发送完成中断 */                            
	while(NRF_Read_IRQ()!=0);

	 state = Read_Reg(NRFRegSTATUS);/*读取状态寄存器的值 */  
	 Write_Reg(NRF_WRITE_REG+NRFRegSTATUS,state); 	
	 
   if(state&RX_DR)
	 {
		 
		 Read_Buf(RD_RX_PLOAD, AckPacket, 32);
	 }
	 Write_Reg(FLUSH_TX,NOP);//清除TX FIFO寄存器 
	 
	 
	return state;   	 


} 
bool ANO_NRF::Check(void)
{ 
	u8 buf1[5]; 
	u8 i; 
	/*写入5个字节的地址. */ 
	Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,5); 
	/*读出写入的地址 */ 
	Read_Buf(TX_ADDR,buf1,5); 
	/*比较*/ 
	for(i=0;i<5;i++) 
	{ 
		if(buf1[i]!=TX_ADDRESS[i]) 
			break; 
	} 
	if(i==5)
		return true; //MCU与NRF成功连接 
	else
		return false; //MCU与NRF不正常连接 
}
예제 #4
0
void ANO_NRF::Check_Event(void)
{
	u8 sta = Read_Reg(NRF_READ_REG + NRFRegSTATUS);
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<RX_DR))
	{
		u8 rx_len = Read_Reg(R_RX_PL_WID);
		if(rx_len<33)
		{
			Read_Buf(RD_RX_PLOAD,NRF24L01_2_RXDATA,rx_len);// read receive payload from RX_FIFO buffer
			dt.Data_Receive_Anl(NRF24L01_2_RXDATA,rx_len);
		}
		else 
		{
			Write_Reg(FLUSH_RX,0xff);//清空缓冲区
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<TX_DS))
	{
		
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	if(sta & (1<<MAX_RT))
	{
		if(sta & 0x01)	//TX FIFO FULL
		{
			Write_Reg(FLUSH_TX,0xff);
		}
	}
	////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////
	Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}