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

How to setup nrf51(PTX) to nrf24L01+(PRX) ?

I'm trying to set up communication between an nrf51422, and an nrf24l01+. The nrf51 is supposed to be the PTX device, and the nrf24 the PRX device. Communication from PRX to PTX should go through ack-payloads.

On the nrf51 side I am using the code from this[1] thread, namely the main.c[2] file.

With the nrf51 code on two PCA10003 boards, the communication works fine. The only code difference between the two are the line(20) specifying PTX is changed to specify PRX.

In this way I have confirmed that the nrf51 side is configured "correctly", at least for communication between two identical boards.

The problem is when I try to configure an nrf24 to be the PRX. I simply cannot get it to work.

What I would like is a simple example of which registers need to be configured to which values, on the nrf24, for it to be able to act as a PRX device. Alternatively, which changes need to be done to the nrf51 code to make it work together with the nrf24 chip.

Thanks in advance.

[1] devzone.nordicsemi.com/.../

[2] devzone.nordicsemi.com/.../df8df00f7f159b460e130f48f2327817

  • Hi,

    On the nRF24L-side you have to ensure that the configuration matches what you've set on the nRF51-side.

    I would recommend starting with the "plain" example in the SDK (more or less what you have now), then start modifying your nRF24L-side to match the settings on the nRF51-side. In your example, you're sending on PIPE3, try with PIPE0 instead.

    Proposed configuration changed (should be equal on both sides):

    • Setting 2 byte CRC
    • Setting payload length on your PIPE0 to 32 bytes
    • Setting RF channel to '15'
    • Enabling dynamic ACK (See FEATURE register, field "EN_DPL" in nRF24L01+ datasheet)
    • Setting the RF Address equal (by default; 0xE7E7E7E7 in both examples)

    Cheers, Håkon

Related