问题描述:
nRF24L01初次上电没有任何问题,单片机复位或者更新程序之后,nRF24L01接收模式不工作。但是给电路板重新上电之后问题得以解决。
问题产生原因:
单片机突然停止对nRF24L01的SPI操作,中断之后产生了一些莫名的现象。比如我遇到的情况是,接受缓冲器有数据,而中断管脚则不再响应。
由于电路板不断电,那说明nRF24L01不会存在上电复位这一环节。不幸的是,这玩意居然没有软件复位功能。
解决方案:
第一, 读取STATUS寄存器内容,然后写进去。用来清状态寄存器的标志位。此时要注意RXFIFO的状态。出问题了一般不会是111.
第二, 既然数据缓冲区有数据,那说明需要把数据读出来。读完之后无论是FIFO状态寄存器还是STATUS寄存器,都会有响应的变化。
第三, 既然知道问题所在了,就应该在初始化的时候检测一遍缓冲区状况。把里面的残留的数据给释放掉。这是一劳永逸的方法。
问题描述:
nRF24L01初次上电没有任何问题,单片机复位或者更新程序之后,nRF24L01接收模式不工作。但是给电路板重新上电之后问题得以解决。
问题产生原因:
单片机突然停止对nRF24L01的SPI操作,中断之后产生了一些莫名的现象。比如我遇到的情况是,接受缓冲器有数据,而中断管脚则不再响应。
由于电路板不断电,那说明nRF24L01不会存在上电复位这一环节。不幸的是,这玩意居然没有软件复位功能。
解决方案:
第一, 读取STATUS寄存器内容,然后写进去。用来清状态寄存器的标志位。此时要注意RXFIFO的状态。出问题了一般不会是111.
第二, 既然数据缓冲区有数据,那说明需要把数据读出来。读完之后无论是FIFO状态寄存器还是STATUS寄存器,都会有响应的变化。
第三, 既然知道问题所在了,就应该在初始化的时候检测一遍缓冲区状况。把里面的残留的数据给释放掉。这是一劳永逸的方法。
举报