www.ti.com
Link Layer Engine
After receiving an acknowledgment, the LLE raises an interrupt to the MCU. Depending on the CRC
result, the payload length, and whether the received packet had the same sequence number as the
transmitted one, the interrupts are generated as shown in Table 25-19. It also shows which of the counters
among the RAM registers that are to be updated.
Table 25-19. Interrupt and Counter Operation for Received ACK Packets
CRC Result Length Counter Incremented Interrupt Raised
OK > 0 RXOK
PRF_ADDR_ENTRYn.N_RXOK
OK = 0 RXEMPTY
PRF_ADDR_ENTRYn.N_RXIGNORED
NOK X RXNOK
PRF_ADDR_ENTRYn.N_RXNOK
If an acknowledgment was not received (because no sync was obtained in time, the address did not
match, the sequence number was wrong, the CRC check failed, or the ACK did not fit in the Rx FIFO and
was not otherwise to be discarded) the LLE sends a retry Tx FIFO command. If the number of
retransmissions already performed (not including the original transmission) is equal to
PRF_RETRANS_CNT, the task ends. Otherwise, the packet is retransmitted. The time from the end of the
previous transmission to the start of the retransmission is given in units of 62.5 ns by
PRF_RETRANS_DELAY.
If the received packet was a valid acknowledgment, or if a packet was transmitted and no
acknowledgment was expected, the LLE sends a deallocate Tx FIFO command if
PRF_ADDR_ENTRYn.REUSE is 0. Otherwise, the MCU must issue either a deallocate Tx FIFO (to send a
new packet) or a retry Tx FIFO (to reuse) before sending again. The PRF_ADDR_ENTRYn.NTXDONE
counter is incremented. A TXDONE interrupt to the MCU is raised. If
PRF_ADDR_ENTRYn.CONF.FIXEDSEQ = 0, PRF_ADDR_ENTRYn.SEQSTAT.SEQ is incremented by 1
modulo 4. The next action is as given in Section 25.9.2.3.3.
If the task ends because of a maximum number of retransmissions, a retry Tx FIFO command is sent
before the task ends, and PRF_ADDR_ENTRYn.SEQSTAT.SEQ is not incremented. This means that by
default, the packet retransmission is attempted in the next task. If this is not desired, the packet must be
removed from the FIFO. This can be done either by issuing a CMD_TXFIFO_RESET (this also removes
any subsequent packets in the Tx FIFO), by reading out the packet using the RFTXFRD register and
issuing a CMD_TX_FIFO_DEALLOC command, or by Tx FIFO pointer manipulation (Section 25.3.1.3).
PRF_ADDR_ENTRYn.SEQSTAT.SEQ should then be incremented by one. These operations should only
take place between tasks (i.e., while the LLE does not have SEMAPHORE1).
25.9.2.4.3 Continuation and Ending of Transmit Tasks
When a task ends, a TASKDONE interrupt is raised and an end cause is then available in PRF_ENDCAUSE.
After a packet has been transmitted and potentially a valid acknowledgment has been received, the next
action depends on PRF_TASK_CONF.REPEAT. If this value is 0, the task ends. In this case, the
PRF_ENDCAUSE register is set to TASK_ENDOK.
If PRF_TASK_CONF.REPEAT is 1, the Tx FIFO status is checked. If the Tx FIFO has no available data, the
task ends with TASK_ENDOK as the end cause. Otherwise, transmission restarts. If
PRF_TASK_CONF.START_CONF is 1, it behaves as if the task was started again with the LLE waiting for
Timer 2 event 1, then performing a synthesizer calibration and starting to transmit. If
PRF_TASK_CONF.START_CONF is 0, the transmitter restarts PRF_TX_DELAY after the end of the
previously transmitted packet, with synthesizer recalibration only if there is enough time, but in other
respects as starting a new task. The PRF_TX_DELAY register gives the wait time in units of 62.5 ns. If the
value is too small to fulfill, the transmission starts as soon as possible.
If a CMD_SHUTDOWN or a command starting a new task is observed while the task is running, it ends
immediately with TASK_ABORT as the end cause. If the transmitter or receiver was running, an RXTXABO
interrupt is also raised.
325
SWRU191C–April 2009–Revised January 2012 CC2541 Proprietary Mode Radio
Submit Documentation Feedback
Copyright © 2009–2012, Texas Instruments Incorporated