Frame Transmission (TX_ARET)

This section describes how frames are transmitted in the TX_ARET mode.


PHY_DATA_REQUEST_TX_ARET

The TX_ARET mode frame transmission combines a hardware assisted CCA followed by the frame transmission itself and the ACK frame checking. Therefore the radio transceiver switches internally between transmit and receive states.

The result of a TX_ARET transaction is stored in the sub register SR_TRAC_STATUS after the TRX_IRQ_TRX_END interrupt.

Return values:
tracstat Result of a TX_ARET transaction from sub register SR_TRAC_STATUS.
  • TRAC_SUCCESS : frame transmission was successfull and if an ACK frame was required, it was received correctly.
  • TRAC_CHANNEL_ACCESS_FAILURE : The CCA algorithm has failed and the frame could not be send.
  • TRAC_NO_ACK : A correct ACK frame was not received within the required period of time.
According to 802.15.4-2003 (see Table 71, macAckWaitDuration=54 Symbols for 2.4GHz), the ACK frame needs to be received within an interval of 864 us. The internal timing for the ACK frame processing in TX_ARET mode is shown below:

 = CCA =:=== TX ===:============== RX ====================
                   0             34  36  38  40  42  44  46          54 [time /symbols]
               +---|          |---+---+---+---+---+---+---|...........|
 -------|~~~~~~| F |----------|SFD|LEN|    ACK    |  FCS  | SW proc.  |--------------->
        |      +---|          |---o---+---+---+---+---+---|...........|
        |          |              |                       |
        t0         t1             t2                      t3

         F = last transmitted byte,
         SFD, LEN, ACK, FCS = data of the received ACK frame

 

Note:
After a TX_ARET transaction the frame is kept in the SRAM, so that it can sent out another time. The received ACK frame is processed internally and therefore it is not stored in the SRAM.

If the check for BUSY_TX_ARET after initiating the transmission fails, the transmission shall be initiated again. If the frame was downloaded before toggling pin TRX_PIN_SLP_TR, the frame shall be also downloaded again.

inline_mscgraph_61
Code example
    trx_pinset_slptr(1);
    delay_ns(65);
    trx_pinset_slptr(0);
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==BUSY_TX_ARET);
    trx_frame_write(len(frame), frame);
    /* TRX_IRQ_TRX_END occurs here */
    tracstat = trx_bit_read(SR_TRAC_STATUS);

Generated on Fri Aug 10 16:10:05 2007 for SWPM AT86RF230 Rev. A by  doxygen 1.5.2