Transitions to State PLL_ON

This section describes how the state PLL_ON is entered. There are two commands how to get into this state.

  1. Writing CMD_PLL_ON to sub register SR_TRX_CMD requests a state change towards PLL_ON. If the radio transceiver is in one of the [BUSY] states, the ongoing transaction will be finished before the state change occurs. Otherwise, the state transition is executed immediately. The following transitions are defined:
  2. Writing CMD_FORCE_PLL_ON to sub register SR_TRX_CMD causes an immediate transition. In this case, any ongoing transaction in one of the PLL_ON states is canceled and the state change is done.


PHY_STATE_TRX_OFF__PLL_ON

If the state PLL_ON is requested from the state TRX_OFF, the PLL needs up to tTR4 to lock to the channel (see also PHY_EVENT_PLL_LOCK). The radio transceiver is only able to transmit frames after the TRX_IRQ_PLL_LOCK occured.

inline_mscgraph_30
Code example
    /* AT86RF231::TRX_OFF */
    trx_bit_write(SR_TRX_CMD, CMD_PLL_ON);
    delay(tTR4);
    /* AT86RF231::PLL_ON */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==PLL_ON);

PHY_STATE_[PLL_ACTIVE]__PLL_ON

If the state PLL_ON is requested from one of the [PLL_ACTIVE] states, the transition occurs within tTR9.

inline_mscgraph_31
Code example
    /* AT86RF231::[PLL_ACTIVE] */
    trx_bit_write(SR_TRX_CMD, CMD_PLL_ON);
    delay(tTR9);
    /* AT86RF231::PLL_ON */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==PLL_ON);

PHY_STATE_[BUSY]__PLL_ON

If the command CMD_PLL_ON is written to the sub register SR_TRX_CMD and the radio transceiver is in one of the [BUSY] states, the ongoing transmit or receive transaction is completed and the state change to PLL_ON occurs with the TRX_IRQ_TRX_END interrupt.

Note:
inline_mscgraph_32
Code example
    /* AT86RF231::[BUSY] */
    trx_bit_write(SR_TRX_CMD, CMD_PLL_ON);
    /* TRX_IRQ_TRX_END occurs here */
    /* AT86RF231::PLL_ON */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==PLL_ON);

PHY_STATE_BUSY_RX_AACK__PLL_ON

If the radio transceiver is in state BUSY_RX_AACK, an TRX_IRQ_TRX_END occurs only, if the incoming frame matches the address filter and if the FCS is correct. If the acknowledgment request bit is set in the frame control field of the frame header and an TRX_IRQ_TRX_END occurs, an automatically generated acknowledgement will be transmitted. Thus, the transceiver will stay in BUSY_RX_AACK for time tPAck after TRX_IRQ_TRX_END. Otherwise, it will return to PLL_ON at latest after tFrame.

Note:
inline_mscgraph_33
Code example
    /* AT86RF231::BUSY_RX_AACK */
    trx_bit_write(SR_TRX_CMD, CMD_PLL_ON);
    delay(tFrame);
    /* AT86RF231::PLL_ON */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==PLL_ON);

PHY_FORCE_[ACTIVE]__PLL_ON

Writing CMD_FORCE_PLL_ON to sub register SR_TRX_CMD in any of the [PLL_ACTIVE] states cancels any ongoing transmit or receive transaction and switches the radio transceiver within tTR14 to state PLL_ON.

Note:
inline_mscgraph_34
Code example
    /* AT86RF231::[ACTIVE] */
    trx_bit_write(SR_TRX_CMD, CMD_FORCE_PLL_ON);
    delay(tTR14);
    /* AT86RF231::PLL_ON */
    trxstat = trx_bit_read(SR_TRX_STATUS);
    ASSERT(trxstat==PLL_ON);

Generated on Mon Jan 12 18:32:16 2009 for SWPM AT86RF231 by  doxygen 1.5.2