Good day,
I am unable to read the default values in the register map. The values I get are not similar to the ones in the datasheet.
I am assuming the SPI between the PIC18F4550 and the nRF24L0+ is working fine, as the Status register and the Config register default values (0x0E and 0x08) are correct.
Below is the C code used to read the nRF24L0+
PORTDbits.RD0 = 0;// LED OFF
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_CONFIG); //Read config
while(SSPSTATbits.BF == 0){};
NRFData[0] = 0xF0 ;
NRFData[1] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from Config
while(SSPSTATbits.BF == 0){};
NRFData[2] = SSPBUF; //value in Config reg
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1; //LED ON
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_EN_AA); //Read EN_AA
while(SSPSTATbits.BF == 0){};
NRFData[3] = 0xF1 ;
NRFData[4] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from EN_AA
while(SSPSTATbits.BF == 0){};
NRFData[5] = SSPBUF; //value in EN_AA
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_Rx_ADDR ); //Read REG_Rx_ADDR
while(SSPSTATbits.BF == 0){};
NRFData[6] = 0xF2 ;
NRFData[7] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_Rx_ADDR
while(SSPSTATbits.BF == 0){};
NRFData[8] = SSPBUF; //value in REG_Rx_ADDR
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_SETUP_AW); //Read REG_SETUP_AW
while(SSPSTATbits.BF == 0){};
NRFData[9] = 0xF3 ;
NRFData[10] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_SETUP_AW
while(SSPSTATbits.BF == 0){};
NRFData[11] = SSPBUF; //value in REG_SETUP_AW
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_SETUP_RETR); //Read REG_SETUP_RETR
while(SSPSTATbits.BF == 0){};
NRFData[12] = 0xF4 ;
NRFData[13] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_SETUP_RETR
while(SSPSTATbits.BF == 0){};
NRFData[14] = SSPBUF; //value in REG_SETUP_RETR
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_RF_CH); //Read REG_RF_CH
while(SSPSTATbits.BF == 0){};
NRFData[15] = 0xF5 ;
NRFData[16] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_RF_CH
while(SSPSTATbits.BF == 0){};
NRFData[17] = SSPBUF; //value in REG_RF_CH
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_RF_SETUP); //Read REG_RF_SETUP
while(SSPSTATbits.BF == 0){};
NRFData[18] = 0xF6 ;
NRFData[19] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_RF_SETUP
while(SSPSTATbits.BF == 0){};
NRFData[20] = SSPBUF; //value in REG_RF_SETUP
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_OBSERVE_Tx); //Read REG_OBSERVE_Tx
while(SSPSTATbits.BF == 0){};
NRFData[21] = 0xF7 ;
NRFData[22] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_OBSERVE_Tx
while(SSPSTATbits.BF == 0){};
NRFData[23] = SSPBUF; //value in REG_OBSERVE_Tx
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_CD); //Read REG_CD
while(SSPSTATbits.BF == 0){};
NRFData[24] = 0xF8 ;
NRFData[25] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_CD
while(SSPSTATbits.BF == 0){};
NRFData[26] = SSPBUF; //value in REG_CD
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_Rx_PW_P0); //Read REG_Rx_PW_P0
while(SSPSTATbits.BF == 0){};
NRFData[27] = 0xF9 ;
NRFData[28] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_Rx_PW_P0
while(SSPSTATbits.BF == 0){};
NRFData[29] = SSPBUF; //value in REG_Rx_PW_P0
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_FIFO_STATUS); //Read REG_FIFO_STATUS
while(SSPSTATbits.BF == 0){};
NRFData[30] = 0xFA ;
NRFData[31] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REGFIFO_STATUS
while(SSPSTATbits.BF == 0){};
NRFData[32] = SSPBUF; //value in REG_FIFO_STATUS
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG |REG_DYNPD); //Read REG_DYNPD
while(SSPSTATbits.BF == 0){};
NRFData[33] = 0xFB ;
NRFData[34] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_DYNPD
while(SSPSTATbits.BF == 0){};
NRFData[35] = SSPBUF; //value in REG_DYNPD
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 1;
SPI_CSN = LOW;
Twenty5Micro_Sec_Delay();
SSPSTATbits.BF = 0;
SSPBUF = (CMD_READ_REG | REG_FEATURE); //Read REG_FEATURE
while(SSPSTATbits.BF == 0){};
NRFData[36] = 0xFC ;
NRFData[37] = SSPBUF; //Read status
SSPSTATbits.BF = 0;
SSPBUF = 0x00; //Provide clock to get the data from REG_FEATURE
while(SSPSTATbits.BF == 0){};
NRFData[38] = SSPBUF; //value in REG_FEATURE
SPI_CSN = HIGH;
Twenty5Micro_Sec_Delay();
PORTDbits.RD0 = 0;
user();
This is the data received via the USB port

Register Actual Expected Address
CONFIG 0x08 0x08 0x00 F0
EN_AA 0x08 0x3F 0x01 F1
EN_RXADDR 0x3F 0x03 0x02 F2
SETUP_AW 0x3F 0x03 0x03 F3
SETUP_RETR 0x03 0x03 0x04 F4
RF_CH 0x03 0x02 0x05 F5
RF_SETUP 0x03 0x0F 0x06 F6
OBSERVE_TX 0x03 0x00 0x08 F7
CD 0x03 0x00 0x09 F8
Rx_PW_P0 0x00 0x00 0x11 F9
FIFO_STATUS 0xC2 0x11 0x17 FA
DYNDP 0xC5 0x00 0x1C FB
FEATURE 0xC5 0x00 0x1D FC
below are the break out boards I am using, I tried both the nRF24L0 and nRF24L0+. I get the same results


