STATUS Register

Address

0x07

Description

The STATUS register is used to read the interrupt status, get the number of the pipe that received a packet, and get the Tx FIFO status.

Contents

This table is copied from the nRF24L01 product specification (page 55).

Name
Bit
Reset Value
Type Description
Reserved 7 0 R/W Only ‘0’ allowed
RX_DR 6 0 R/W Data Ready RX FIFO interrupt. Asserted when new data arrives RX FIFO.
Write 1 to clear bit.
TX_DS 5 0 R/W Data Sent TX FIFO interrupt. Asserted when packet transmitted on TX. If AUTO_ACK is activated, this bit is set high only when ACK is received.
Write 1 to clear bit.
MAX_RT 4 0 R/W Maximum number of TX retransmits interrupt.  Write 1 to clear bit.  If MAX_RT is asserted it must be cleared to enable further communication.
RX_P_NO 3:1 111 R Data pipe number for the payload available for reading from RX_FIFO
000-101: Data Pipe Number
110: Not Used
111: RX FIFO Empty
TX_FULL 0 0 R TX FIFO full flag.
1: TX FIFO full.
0: Available locations in TX FIFO.

Comments

The contents of this register are returned over SPI when an instruction byte is clocked into the radio.  The NOP instruction can be clocked in to retrieve this register quickly.

The RX_DR and TX_DS interrupt bits might both be set, if the radio receives an ack packet that includes a payload.  The TX_DS and MAX_RT interrupts will never be fired at the same time.  The interrupt bits must be cleared manually by writing “1”s to them after the interrupts have been handled.  (See this FAQ for a discussion on why interrupt bits are commonly cleared by writing “1”s to them despite the rule seeming counterintuitive at first.)

The RX_P_NO field holds the number of the Rx pipe that received the packet at the head of the Rx FIFO.  When that packet is removed from the FIFO (using the R_RX_PAYLOAD instruction), RX_P_NO holds the number of the Rx pipe that received the next packet, or 111 if there are no more packets in the FIFO.

The radio driver doesn’t currently take advantage of the Tx FIFO to load multiple packets for transmission, so it doesn’t use TX_FULL.