First byte of payload interpreted as device address, changing BALEN has no effect

Hi,

I'm transmitting using the nRF24L01P and using the nRF52810 as the receiver, 5 byte address.

We send a 2 byte packet usually 0x00, 0x00 until data is ready.
If I set any bits on the 2nd byte it receives fine but setting bits on the first byte, it stops receiving any data until those bits are set back to 0x00.

I think it's just luck that the receiver is working due to the payload first byte is 0x00 and the PREFIX is also 0x00. Changing BALEN from 4 to 3 or 2 makes no difference.
On the nRF24 TX side the prefix/LSB of the address is actually 0x01 but somehow the nRF52 is ignoring that and I also don't know where the nRF24 Packet Address Field 9bit is going, might be ignored too. I set PCNF0 to 0 to try and see if any of that data shows up in the PACKETPTR but it doesn't.

NRF52 setup:

NRF_RADIO->BASE0 = 0xEEE6464E;
NRF_RADIO->PREFIX0 = 0x00;
NRF_RADIO->PCNF0 = 0;
NRF_RADIO->PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos) | (RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos) | (4 << RADIO_PCNF1_BALEN_Pos) | (4 << RADIO_PCNF1_STATLEN_Pos) | (2 << RADIO_PCNF1_MAXLEN_Pos);
  • I have some nRF24 receivers that work with our nRF24 TX and if we change any byte of the 5 byte RX address on the RX side, I can confirm that those nRF24 receivers stop working so it does sound like we are indeed sending a 5 byte address.

    On the nRF52, I can change some bits of the end byte of BASE0 address (4E) to another value and it still receives the packet but changing any of the first 3 bytes and it doesn't work. If I change PREFIX0 from 0x00 to 0x80 and send 0x01 as the first payload byte then receiving also works so I think my theory of what is happening might be correct.

    Another thing I have just noticed when debugging is that RXMATCH is always 0x00000000 but packets are still received

Related