天线|RF射频
直播中

赵丽

7年用户 205经验值
私信 关注
[问答]

调试读取发送状态寄存器的值一直为0x1E是怎么回事

然后在线调试读取发送状态寄存器的值一直为0x1E,,我看网上正确的值是0x2E,这是什么原因呀?

回帖(14)

吴银红

2020-7-13 12:41:36
我前几天遇到这样的问题,把自动应答和自动重发关掉,接收通道也禁止(EN_AA、SETUP_RETR、EN_RXADDR都配置为0x00),发送后取得的STATUS值为30,也就是0x1e,改了很多次配置寄存器,都这样没有变化,后来就用串口把所有寄存器的值都打印出来,发现值和我配置的没有丝毫关系,大多数都是缺省值,说明SPI通讯有问题,只有极少数和我配置的值一样,如     CONFIG,说明模块没有问题,。。。。。。。。。。。最后,我的解决方法是每次通过SPI发送数据后,要在NRF24L01_CSN=1; 后面加一个延时 delay_us(10);  这个延时需要加在NRF24L01_Write_Reg()和NRF24L01_Write_Buf()里面
u8 NRF24L01_Write_Reg(u8 reg,u8 value)
{
        u8 status;       
  NRF24L01_CSN=0;                 //使能SPI传输
  status =SPI1_ReadWriteByte(reg);//发送寄存器号
  SPI1_ReadWriteByte(value);      //写入寄存器的值
  NRF24L01_CSN=1;                 //禁止SPI传输
  delay_us(10);       
  return (status);                               //返回状态值
}
u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len)
{
  u8 status,u8_ctr;            
        NRF24L01_CSN = 0;          //使能SPI传输
  status = SPI1_ReadWriteByte(reg);//发送寄存器值(位置),并读取状态值
  for(u8_ctr=0; u8_ctr         NRF24L01_CSN = 1;       //关闭SPI传输
  delay_us(10);
  return status;          //返回读到的状态值
}
举报

王琴

2020-7-13 12:47:34
应该是开启了应答,必须收发同时运行才可以
举报

杨雨凡

2020-7-13 12:58:17
有两个板子测试么?
举报

李明烨

2020-7-13 13:10:22
有两个板子测试么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分