发 帖  
原厂入驻New
[问答] 调试读取发送状态寄存器的值一直为0x1E是怎么回事
86 寄存器
分享
然后在线调试读取发送状态寄存器的值一直为0x1E,,我看网上正确的值是0x2E,这是什么原因呀?
0
2020-7-13 10:35:54   评论 分享淘帖 邀请回答
14个回答
我前几天遇到这样的问题,把自动应答和自动重发关掉,接收通道也禁止(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<len; u8_ctr++)SPI1_ReadWriteByte(*pBuf++); //写入数据         
        NRF24L01_CSN = 1;       //关闭SPI传输
  delay_us(10);
  return status;          //返回读到的状态值
}
2020-7-13 12:41:36 评论

举报

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

举报

2020-7-13 12:58:17 评论

举报

2020-7-13 13:10:22 评论

举报

我是一个接开发板,一个接无线转电脑的串口,手头没有两个开发板,所以这样弄,想串口接收显示数据
2020-7-13 13:24:24 评论

举报

我是一个接开发板,一个接无线转电脑的串口,手头没有两个开发板,所以这样弄,想串口接收显示数据。有没有这样的例程呀
2020-7-13 13:37:44 评论

举报

原子哥,帮我解答一下呗
2020-7-13 13:47:27 评论

举报

另一个用个51 啥的,要么就不启用应答吧,我今天刚发个51 stm32 通讯的例子
2020-7-13 14:04:10 评论

举报

2020-7-13 14:22:27 评论

举报

在哪里呀?给个链接呗
2020-7-13 14:33:42 评论

举报

这样的呀,那原子哥,有没有一个是开发板和电脑无线串口端之间通信的例子呀
2020-7-13 14:39:54 评论

举报

无线模块的话你需要把一些参数和开发板上的nrf24l01配置对应,我用无线可以连上开发板。
2020-7-13 14:55:34 评论

举报

你好,你是通过开发板上的无线和一个接电脑上的无线串口能够相连吗?我那个发送接收地址、校验方式这些都设置了的呢
2020-7-13 15:13:52 评论

举报

楼主,你的问题解决了嘛?我也想这么弄,没搞通
2020-7-13 15:29:59 评论

举报

只有小组成员才能发言,加入小组>>

120个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表