Buffer Underrun Interrupt


PHY_EVENT_TRX_UR_TX

If the interrupt TRX_IRQ_TRX_UR occurs during a frame tranmission, the entire transaction has to be repeated, because the transmitted data are invalid. This interrupt happens under the condition, that the frame download is started after the transmission is initiated (see PHY_DATA_REQUEST_PINSTART, PHY_DATA_REQUEST_REGSTART, PHY_DATA_REQUEST_TX_ARET) and the SPI transfer speed is lower then the on-air data rate of the radio transceiver. In this case the SRAM read pointer moves beyond the SRAM write pointer, which is controlled by the trx_frame_write function. If the SPI data rate of the system is generally lower then on-air data rate of the radio transceiver, the entire frame has to be downloaded before the transmission is initiated.

inline_mscgraph_21
Code example
    trx_frame_write(len(frm), frm);
    /* TRX_IRQ_TRX_UR occurs here */
    cause = trx_reg_read(RG_IRQ_STATUS);
    proc_txur();

PHY_EVENT_TRX_UR_RX

The interrupt TRX_IRQ_TRX_UR can occur when the frame upload is started while the frame reception is in progress (see PHY_DATA_INDICATION_FAST). In this case the SPI data rate is higher then the data rate of the radio transceiver or the initially computed wait time twait is to small. In this case, the SPI read pointer, which is controlled by the trx_frame_read function, moves beyond the SPI write pointer and the data read from the SRAM are invalid. The receive transaction is not affected by this interrupt and the frame can be uploaded again.

inline_mscgraph_22
Code example
    frm = trx_frame_read();
    /* TRX_IRQ_TRX_UR occurs here */
    cause = trx_reg_read(RG_IRQ_STATUS);
    proc_rxur();
    /* TRX_IRQ_TRX_END occurs here */

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