![Texas Instruments CC2533 Скачать руководство пользователя страница 325](http://html.mh-extra.com/html/texas-instruments/cc2533/cc2533_user-manual_1094592325.webp)
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
. 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
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 (
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
Copyright
©
2009
–
2012, Texas Instruments Incorporated