This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF24L01+ as MultiCeiver without ACK, is it possible?

I have a system that uses 5-byte addresses. The first 4 bytes are always the same, but the last byte has 4 different values. For test purpose I want to listen, from another unit, and without sending anything, to all the addresses in the communication. I have tried to setup the nRF24L01+ to receive the 4 addresses on pipes number 1 to 4. Pipe 1 works fine, but I never get any interrupt on pipe 2 to 4.

Is it possible to use other pipes than 0 and 1? In the documentation, pipe 0 and 1 are enabled by default, as seen in the EN_RXADDR register, but it seems without effect to enable the other pipes.

Parents
  • Hi Jan,

    I have some comments on your settings: Note: Always ensure that none of the data pipes have the same address. This must be set unique for each pipe, if not the state machine inside the radio will give you very strange behavior. At this stage, you are setting P1=P2, and P0 and P1 have equal base address. See chapter 7.6 in the datasheet for more information.

    Regarding "sniffing" operation: If you are sending with "NO_ACK" over the air, you can sniff this by setting the address equal to the primary receiver (PRX), by disabling CRC and using 4 byte on-air-address. CRC can then be re-calculated in firmware. Or you can keep to 5 byte on-air address and filter on the same settings as your PRX has.

    If your PRX is ACKing the PTX, you must do this in a different way. Unfortunately, there is no straight-forward procedure for this.

    What I recommend is that the sniffer will use the a 4 byte onair-address and ESB protocol disabled (see appendix B in datasheet on how to enable this). This will cause the "PCF" field to be present in your payload. What you then have to do is to shift your whole payload by 9 bits (size of PCF) and (optional) re-calculate CRC. The maximum payload length that you can receive is: 32 byte - 1 address byte - PCF field - CRC = 29 bytes - CRC (0/1/2 bytes).

    Best regards Håkon

  • Hi Håkon, I have success with your idea with the 4 byte address, and will work further with this in the hope to see some retransmissions and bad data. The 2 byte CRC used looks like the CCITT version, and I have a routine for byte calculation, but expect trouble because of the odd sized PCF. Do you have a hint? My original question about any use of pipe2 is still unanswered, but not relevant to me anymore, as I can use your idea.

    Best regards/venlig hilsen Jan Maltha.

Reply
  • Hi Håkon, I have success with your idea with the 4 byte address, and will work further with this in the hope to see some retransmissions and bad data. The 2 byte CRC used looks like the CCITT version, and I have a routine for byte calculation, but expect trouble because of the odd sized PCF. Do you have a hint? My original question about any use of pipe2 is still unanswered, but not relevant to me anymore, as I can use your idea.

    Best regards/venlig hilsen Jan Maltha.

Children
No Data
Related