为什么nrf24l01只能在上电后接收一次啊?
unsigned char NRF24L01_RxPacket(unsigned char *rxbuf)
{
unsigned char state;
state=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值
printf("\n status:%x",state);
NRF24L01_Write_Reg(SPI_WRITE_REG+STATUS,state); //清除TX_DS或MAX_RT中断标志//0x80
if(state&TX_OK)
{
printf("RX send ack!\r\n");
}
if(state&RX_OK) //接收到数据
{
NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//读取数据
NRF24L01_Write_Reg(FLUSH_RX,0xff); //末尾清除RX FIFO寄存器 ---尝试放在readbuff里
return 0;
}
return 1; //没收到数据
}//这是接收端的接收函数
unsigned char NRF24L01_TxPacket(unsigned char *txbuf)
{
unsigned char state;
Clr_NRF24L01_CE;
NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//写数据到TX BUF 32个字节
Set_NRF24L01_CE; //启动发送
while(READ_NRF24L01_IRQ!=0);//等待发送完成
state=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值
NRF24L01_Write_Reg(SPI_WRITE_REG+STATUS,state); //清除TX_DS或MAX_RT中断标志
if(state&MAX_TX) //达到最大重发次数
{
NRF24L01_Write_Reg(FLUSH_TX,0xff); //清除TX FIFO寄存器
// debug_out("TX MAX_TX error!\r\n");
return MAX_TX;
}
if(state&TX_OK) //发送完成
{
// debug_out("TX OK!\r\n");
return TX_OK;
}
// debug_out("TX other error!\r\n");
return 0xff; //其他原因发送失败
}//这是发送端的发送函数
试了一下网上的办法都不行。。。。