前言
环境:
芯片:STM32F103C8T6
Keil:V5.24.2.0
调试时我们会尝试读取STATUS寄存器状态来了解模块目前的状态,但是我们在读取时至为0x1E,这就很纳闷,根据寄存器描述
0x1E:对应寄存器4:1,关系有:达到最大重发次数
RX FIFO为空,
第四位很好理解也很好判断,达到了最大重发次数报错.可以将最大重发次数关闭,一直进行重发
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x00); //失能自动重发
第1到3位就很难理解了,我只是发送,关接收什么关系?
实际是应答信号反馈,如果关闭应答信号,就不会是这个值了
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x00); //失能接收通道0
失能这两个状态,再次获取状态值就不是1E了.
到这里,大家看看是否可以调试通顺.
如果还是不行,接着往下看
可能的原因还是出在 RX_P_NO 这个状态寄存器上.因为之前是关闭了,所以功能正常了,但是打开并不代表我们就能正常接收到接收端的反馈信号.这就需要我们调试好接收端的代码,并且一定带上自动应答后,再次回来调试,如果还是不行,建议使用源码和配套的开发板进行验证,之后更改为自己的代码.
标签:RW,接收端,失能,STM32,NRF24L01,报错,寄存器,调试 From: https://blog.csdn.net/2301_80596293/article/details/145027060