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); }
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不正常连接 }
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); }