NRF24L01在初始化时出现错误

NRF24L01在初始化时出现错误,具体表现为向24L01的CONF寄存器写入0x0B,再读出来是0x08,这种情况是偶发性的,出现此种情况时24L01也确实无法通信(不出现这种情况是可以正常通信的),偶尔是其他寄存器出现问题,也会导致无法通信,下面是spi通信及写寄存器的代码

uint8_t SPI1_ReadWriteByte(uint8_t TxData)
{    
    u8 i;
    for(i=0;i<8;i++)
    {
        if(TxData & 0x80)
        {
            MOSI_H;//拉高mosi
        }
        else
        {
            MOSI_L;//拉低mosi
        }
        
        delay_us(1);
        
        TxData = TxData<<1;
        
        SCK_H;//时钟线拉高
        delay_us(1);
        TxData |= (uint8_t)MISO; 
        
        SCK_L;//时钟线拉低
        delay_us(1);
    }
    
    return (TxData);


}

//SPI写寄存器
//reg:指定寄存器地址
//value:写入的值
uint8_t NRF24L01_write_reg(uint8_t reg, uint8_t reg_val)
{
    uint8_t status;
       NRF24L01_CSN(0);                 //使能SPI传输
      status = SPI1_ReadWriteByte(reg);//发送寄存器号
      SPI1_ReadWriteByte(reg_val);      //写入寄存器的值
      NRF24L01_CSN(1);                 //禁止SPI传输
      return status;                   //返回状态值
}

重新初始化一次也能解决问题,感觉像是spi通信失败了,导致初始化错误,但是为啥会失败呢,而且出现次数也挺多的