I'm working with the CC2543 and am completely bewildered about the automatic ACK message returned upon a successfully received message.
The User's Guide (page 241. section 23.8.3) states that there are TWO buffers associated with each of the eight RF RAM pages that serve as FIFOs for the automatic ACK. When the receiver matches an "address", it sends one of the two buffers. The buffer that is chosen is PRF.PRF_ADDR_ENTRYn.SEQSTAT.NEXTACK, which is a single bit indicating either acknowledge buffer 0 or 1, and n is 0-7 for the eight RF RAM pages. What I can't figure out is how that bit is set, or how it is to be used.
In section 23.9.2.3.2 (page 249) the manuals states that PRF_ADDR_ENTRYn.SEQSTAT.NEXTACK is inverted each time a acknowledge payload is sent. That implies it automatically "ping-pongs" between the two buffers, and THAT implies I need to have identical information in each buffer.
There are bits of information spread seemingly randomly about the manual, discussing a "sequence number". It appears that it can somehow be used to set the NEXTACK but I can't figure it out at all. Likewise, there is something about sequence numbers being sent in the incoming message, but it equally opaque.
What I WANT TO DO is control which ACK buffer is sent back in response to a value in the transmitted messaged.
So, questions:
1. What the double buffering intended to be controlled, or was it intended to have the same information in both buffers and then just have them Ping-Pong? THIS IS A BIG QUESTION.
2. How do I control the NEXTACK bit? Am I suppose to control it? I can set it manually but the users guide implies that something else controls it.