nrf2401接收数据后状态寄存器STATUS值为0X0E是怎么回事

发送完全正常,但接收不到
接收部分代码:
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
u8 status;

//sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况
status=SPI_Read(READ_REG1+STATUS);          // 读取状态寄存其来判断数据接收状况

if(status & 0x40)               // 判断是否接收到数据
{
    MODE_CE(0);             //SPI使能
    //SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
    SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);  //从接收缓冲区里读出数据

    //rx_buf[1]=1;
    revale =1;          //读取数据完成标志
}
//SPI_RW_Reg(WRITE_REG+STATUS,sta);   //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
SPI_RW_Reg(WRITE_REG1+STATUS, status);       //清除07寄存器标志
return revale;

}

1个回答

时序问题或者加长延迟时间
数据手册上CE端拉高,延迟130us后就可以完成发射/接收,发射模式和接收模式切换保证在1.5ms以上
其实亲测这个时间根本不行
所有延时全部提升至ms级,可以去试试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!