STM32
直播中

h1654155272.9717

8年用户 1259经验值
擅长:电源/新能源
私信 关注
[问答]

nRF24L01读STATUS寄存器发现MAX_RT位一直未清零这是为什么

nRF24L01读STATUS寄存器发现MAX_RT位一直未清零这是为什么?怎样去解决?

回帖(1)

宋宾

2021-12-17 11:52:30
调了好几天的nRF24L01,看好好多网友写的代码,基本相同,但就是调不通。
然后检查电路硬件,也没有问题。
最后,还是把DataSheet拿过来看寄存器,读STATUS寄存器,发现MAX_RT位总为‘1’;然后百度搜了一下原因
杭电王同学的解释在最下方,真实拨开云雾见青天!!!
最后的解决方法如王同学所说,在void nRF24L01_TxPacket(char * tx_buf)函数中,加上如下四行代码:
  uchar sta;
  sta=SPI_Read(STATUS);
  if(sta & 0x10 == 0x10)
  SPI_RW_Reg(WRITE_REG+STATUS,sta);

便成功解决了问题!!!

NRF24L01自动应答问题请教!

P0工作在自动应答模式下,只要开发射端的自动应答,还是接收端和发射端都要开应答? 本人已自行解决,无法自动应答是因为:在发射端数据发射完成后未清除MAX_RT中断标志,这样遇到一次通讯异常,接下来通讯就中断了(请使用SPI_RW_Reg(WRITE_REG+STATUS,sta);清楚标志)。参考24L01+ datasheet 第9章 MAX_RT:Maximum number of TX retransmits interrupt. Write 1 to clear bit.重点来了if MAX_RT is asserted it must be cleared to enable further communication.
举报

更多回帖

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