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

NO_ACK reverted from nRF24L01+ to nRF51822 with dynamic length?

Hi, In my application I want to communicate nRF24L01+ with nRF51822 with dynamic length. Some settings are:

In nRF24L01+ side (reference: devzone.nordicsemi.com/.../):
1. EN_AA = 1
2. EN_DPL = 1
3. EN_DYN_ACK = 1
4. Use "W_TX_PAYLOAD_NOACK" instead of "W_TX_PAYLOAD"

In nRF51822 side:
1. PCNF0.LFLEN = 6 
2. PCNF0.S0LEN = 0
3. PCNF0.S1LEN = 3 (Bit 2:1 for PID and Bit0 for NO_ACK)

So in the Rx side (nRF51822), byte0 if the received packet will be LENGTH, and byte1 is for PID (bit2:1) and NO_ACK(bit0).

nRF51822 could receive the packet and everything is correct up till now, except that I found NO_ACK is always '0' in this setup. I think it should be '1' indicating that ack is not required for PRX, because I use 'W_TX_PAYLOAD_NOACK' in PTX.
And if I use 'W_TX_PAYLOAD', I found NO_ACK is '1'.
So it seems that the bit is reverted from PTX to PRX.

Is my conclusion TRUE? When sending packets from 'nRF51822' to nRF24L01+, what should be the value for this bit if ack is NOT required?

I tried to get some hints from "github.com/.../nrf51-micro-esb", and found that:
1. PTX should set this bit to 0 for ack not required and to 1 for ack required. That is, my conclusion above is correct.
2. PRX is not supported yet (micro_esb.h, line 64). So I didn't see how PRX processes this bit.
Related