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

How can I determine if a packet is sent with W_TX_PAYLOAD_NOACK command? (nRF24L01+)

I'm trying to use the NOACK mode for some packets on the transmitter side, and W_ACK_PAYLOAD on the receiver side. My problem is that if the receiver gets a packet with the NOACK flag, then it won't send an ACK response packet back, and in this case I don't know what happens if I try to send a packet back with W_ACK_PAYLOAD. Please help, I have no idea how to check if a packet is received with NOACK flag. I hope there is a good solution for that and I'm just missing something in the datasheet. Maybe the IC is that smart it detects inside if there is nothing to ACK and convert it to a regular TX command?

Parents
  • Hi,

    There's a "NO_ACK" bit in the "Packet Control Field", which is a part of the on-air payload. The hardware will mask this bit, and not send an ACK if it's set.

    So, your assumption is correct. There is added logic for handling of this. If you try to upload a packet with "W_ACK_PAYLOAD" it will sit in the FIFO until it receives a payload which is sent with "W_TX_PAYLOAD" on the radio pipe that you uploaded the ACK-payload. Then your PRX will give you a "TX_DS" interrupt when the ACK-packet is successfully sent.

    You will not get any indication that this packet is sent with "NO_ACK" on your PRX. If you need to know if this was sent with NO_ACK, then you can setup a specific RF pipe for this.

    Best regards Håkon

Reply
  • Hi,

    There's a "NO_ACK" bit in the "Packet Control Field", which is a part of the on-air payload. The hardware will mask this bit, and not send an ACK if it's set.

    So, your assumption is correct. There is added logic for handling of this. If you try to upload a packet with "W_ACK_PAYLOAD" it will sit in the FIFO until it receives a payload which is sent with "W_TX_PAYLOAD" on the radio pipe that you uploaded the ACK-payload. Then your PRX will give you a "TX_DS" interrupt when the ACK-packet is successfully sent.

    You will not get any indication that this packet is sent with "NO_ACK" on your PRX. If you need to know if this was sent with NO_ACK, then you can setup a specific RF pipe for this.

    Best regards Håkon

Children
Related