IRQ引脚由Nrf24l01模块控制,并不是由MCU控制的;
具体来说是由NRF内部的这几个寄存器控制的;
中断标志位:(写“1”清除)
RX_DR:接收数据中断。当接收到有效数据后置一。
TX_DS:数据发送完成中断。当数据发送完成后产生中断。如果工作在自动应答模式下,只有当接 收到应答信号后此位置一。
MAX_RT:达到最多次重发中断。
控制中断是否屏蔽(1:屏蔽,0:产生中断)
MASK_RX_DR:可屏蔽接收到数据时产生的中断;
MASK_TX_DS:可屏蔽发送完成时产生的中断;
MASK_MAX_RT:可屏蔽达到最多重发次数时产生的中断;
所有中断产生的基础条件都有两条:对应的中断没有被屏蔽(默认所有中断的初始状态都是被屏蔽的)
对应的中断标志位没有被置位;
NRF收发的条件是相应的缓存区被清空后才可以继续进行收发的;
凡是遇到诸如IRQ引脚一直为低或者IRQ引脚一直为高此类的问题,1)先断电复位,断电复位,断电复位之后进行收发数据时观察IRQ引脚的输出波形情况,如果波形正常,那就检查是否在初始化的时候将FIFO寄存器清空,因为通过按键复位时NRF模块自带的寄存器的值是不会被清空的。如果FIFO没有被清空是无法进行收发操作的,自然IRQ引脚是不会变化的。2)如果仍然没有解决,检查是否开启对应的中断(MASK_RX_DR,MASK_TX_DS,MASK_MAX_RT)3)如果还是没有解决,那很有可能就是你在收发之后没有清FIFO或者没有清除对应的标志位