Skip to content

Commit

Permalink
drivers/cc2538_rf: disable RX detection during CCA
Browse files Browse the repository at this point in the history
  • Loading branch information
jia200x committed Aug 9, 2021
1 parent 39d27c2 commit 3fce21a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cpu/cc2538/include/cc2538_rf.h
Expand Up @@ -110,6 +110,8 @@ extern "C" {
#define CC2538_STATE_SFD_WAIT_RANGE_MAX (0x06U) /**< max range value of SFD wait state */
#define CC2538_FRMCTRL1_PENDING_OR_MASK (0x04) /**< mask for enabling or disabling the
frame pending bit */
#define CC2538_FRMCTRL0_RX_MODE_DIS (0xC) /**< mask for disabling RX Chain during
CCA */

#define RFCORE_ASSERT(expr) (void)( (expr) || RFCORE_ASSERT_failure(#expr, __FUNCTION__, __LINE__) )

Expand Down
4 changes: 4 additions & 0 deletions cpu/cc2538/radio/cc2538_rf_radio_ops.c
Expand Up @@ -104,6 +104,8 @@ static int _request_transmit(ieee802154_dev_t *dev)
else {
cc2538_cca = false;

/* Disable RX Chain for CCA (see CC2538 RM, Section 29.9.5.3) */
RFCORE_XREG_FRMCTRL0 |= CC2538_FRMCTRL0_RX_MODE_DIS;
RFCORE_SFR_RFST = ISRXON;
/* Clear last program */
RFCORE_SFR_RFST = ISCLEAR;
Expand Down Expand Up @@ -314,6 +316,8 @@ static int _request_set_trx_state(ieee802154_dev_t *dev, ieee802154_trx_state_t
case IEEE802154_TRX_STATE_RX_ON:
RFCORE_XREG_RFIRQM0 |= RXPKTDONE;
RFCORE_SFR_RFST = ISFLUSHRX;
/* Enable RX Chain */
RFCORE_XREG_FRMCTRL0 &= ~CC2538_FRMCTRL0_RX_MODE_DIS;
RFCORE_SFR_RFST = ISRXON;
break;
}
Expand Down

0 comments on commit 3fce21a

Please sign in to comment.