Transitions to State RX_AACK_ON [22]

This section describes, how the state RX_AACK_ON is entered. In this state, the radio transceiver listens to incoming frames, checks if the received frame matches with the address filter settings and has a valid FCS and transmits an acknowledge frame, if necesarry. The state RX_AACK_ON can generally be reached by writing the value CMD_RX_AACK_ON to the sub register SR_TRX_CMD. In case of any pending transmit or receive operation, e.g. if the radio transceiver is in one of the basic operating mode states [BUSY_BASIC], the state RX_AACK_ON is reached after the completion of these transactions.
Note:
It is not recommended to switch directly from one of the states TRX_OFF, TX_ARET_ON or BUSY_TX_ARET to the state RX_AACK_ON. Instead a transition over one of the basic mode states [PLL_BASIC] shall be used.
The following state transitions are defined:

PHY_STATE_TRX_OFF__RX_AACK_ON

If the state RX_AACK_ON is requested from the state TRX_OFF, the transition occurs typical within 180 us.

Note:
This state transition is not recommended, because the TRX_IRQ_PLL_LOCK interrupt is internally masked in this case, which means that there is no hardware indication, if the radio transceiver is ready to operate. Instead it is recommended to use a combination of the sequences PHY_STATE_TRX_OFF__PLL_ON or PHY_STATE_TRX_OFF__RX_ON followed by the sequence PHY_STATE_[PLL_BASIC]__RX_AACK_ON.
inline_mscgraph_39
Code example
    trx_bit_write(SR_TRX_CMD, CMD_RX_AACK_ON);
    delay_us(180);
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==RX_AACK_ON);

PHY_STATE_[PLL_BASIC]__RX_AACK_ON

If the state RX_AACK_ON is requested from one of the [PLL_BASIC] states, the transition occurs within 1 us, because the PLL does not need to relock.

inline_mscgraph_40
Code example
    trx_bit_write(SR_TRX_CMD, CMD_RX_AACK_ON);
    delay_us(1);
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==RX_AACK_ON);

PHY_STATE_[BUSY_BASIC]__RX_AACK_ON

If the command CMD_RX_AACK_ON is written to the sub register SR_TRX_CMD, while the radio transceiver is in one of the [BUSY_BASIC] states, the ongoing transmit or receive transaction is completed and the state change to RX_AACK_ON occurs 1 us after the TRX_IRQ_TRX_END interrupt.
Note:
It is allowed to write CMD_RX_AACK_ON in state BUSY_RX_AACK. However, this is a trivial command, since the radio transceiver will automatically return to RX_AACK_ON after the frame reception is completed.
inline_mscgraph_41
Code example
    trx_bit_write(SR_TRX_CMD, CMD_RX_AACK_ON);
    /* TRX_IRQ_TRX_END occurs here */
    delay_us(1);
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==RX_AACK_ON);

PHY_STATE_(BUSY_RX_AACK_MATCH)__RX_AACK_ON

The TRX_IRQ_TRX_END interrupt is generated in the state BUSY_RX_AACK after the reception of a frame, that matches the address filter and has a valid FCS. If the received frame requires to send an acknowledge frame, the fall back to the state RX_AACK_ON occurs 576 us after the interrupt.

inline_mscgraph_42
Code example
    /* TRX_IRQ_TRX_END occurs here */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==RX_AACK_ON);

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