/************************************************************************************************** * @fn macRadioTurnOnPower * * @brief Logic and sequence for powering up the radio. * * @param none * * @return none ************************************************************************************************** */ void macRadioTurnOnPower(void) { /* Enable RF error trap */ MAC_MCU_RFERR_ENABLE_INTERRUPT(); #if defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590) /* AGCCTRL1 for CC2590 or CC2591 */ AGCCTRL1 = 0x16; /* CC2591 PA/LNA control configuration * P0_7 -> HGM * P1_1 -> PA_EN * P1_4 -> EN */ /* P0_7 */ HAL_PA_LNA_RX_HGM(); /* P1_1 */ RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV; OBSSEL1 = OBSSEL1_OBS_CTRL0; /* P1_4 */ RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV; OBSSEL4 = OBSSEL4_OBS_CTRL4; #endif /* defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590) */ if (macChipVersion <= REV_B) { /* radio initializations for disappearing RAM; PG1.0 and before only */ MAC_RADIO_SET_PAN_ID(macPib.panId); MAC_RADIO_SET_SHORT_ADDR(macPib.shortAddress); MAC_RADIO_SET_IEEE_ADDR(macPib.extendedAddress.addr.extAddr); } }
/************************************************************************************************** * @fn MAC_RfFrontendSetup * * @brief Setup RF frontend. * * @param none * * @return none ************************************************************************************************** */ void MAC_RfFrontendSetup(void) { /* CC2591 HGM pin control configuration. * P0_7 -> HGM */ HAL_PA_LNA_RX_HGM(); /* Raises the CCA threshold to about -70 dBm input level. */ CCACTRL0 = CCA_THR_HGM; /* Select power register value table and RSSI adjustment value table */ #if (defined MAC_RUNTIME_CC2591 && defined MAC_RUNTIME_CC2590) /* Select power register value table and RSSI adjustment value table. * Note that this file selected CC2591. The file has to be modified * if the target board has CC2590 instead. */ MAC_SetRadioRegTable(MAC_CC2591_TX_PWR_TABLE_IDX, MAC_CC2591_HGM_RSSI_ADJ_IDX); #elif defined (MAC_RUNTIME_CC2591) || defined (MAC_RUNTIME_CC2590) /* Select power register value table and RSSI adjustment value table */ MAC_SetRadioRegTable(MAC_CC259X_TX_PWR_TABLE_IDX, MAC_CC259X_HGM_RSSI_ADJ_IDX); #elif defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590) /* No need to do anything here because by default macRadioDefsRefTableId = 0 hence, * automatically setup for HGM. However if you want LGM modify this file and call * MAC_SetRadioRegTable(0, MAC_PA_LNA_LGM_RSSI_ADJ_IDX); */ #endif }
/*********************************************************************************** * @fn halRfSetGain * * @brief Set gain mode - only applicable for units with CC2590/91. * * @param uint8 - gain mode * * @return none */ void halRfSetGain(uint8 gainMode) { if (gainMode == HAL_RF_GAIN_LOW) { HAL_PA_LNA_RX_LGM(); rssiOffset = RSSI_OFFSET_LNA_LOWGAIN; } else { HAL_PA_LNA_RX_HGM(); rssiOffset = RSSI_OFFSET_LNA_HIGHGAIN; } }
/************************************************************************************************** * @fn MAC_RfFrontendSetup * * @brief Setup RF frontend. * * @param none * * @return none ************************************************************************************************** */ void MAC_RfFrontendSetup(void) { /* CC2591 HGM pin control configuration * P0_7 -> HGM */ HAL_PA_LNA_RX_HGM(); /* Select power register value table and RSSI adjustment value table */ MAC_SetRadioRegTable(MAC_CC2591_TX_PWR_TABLE_IDX, MAC_CC2591_HGM_RSSI_ADJ_IDX); }
/************************************************************************************************** * @fn macRadioTurnOnPower * * @brief Logic and sequence for powering up the radio. * * @param none * * @return none ************************************************************************************************** */ MAC_INTERNAL_API void macRadioTurnOnPower(void) { /* Enable RF error trap */ MAC_MCU_RFERR_ENABLE_INTERRUPT(); #if defined MAC_RUNTIME_CC2591 || defined MAC_RUNTIME_CC2590 || \ defined MAC_RUNTIME_SE2431L || defined MAC_RUNTIME_CC2592 /* table ID is referenced only when runtime configuration is enabled */ if (macRadioDefsRefTableId & 0xf0) #endif /* defined MAC_RUNTIME_CC2591 || defined MAC_RUNTIME_CC2590 */ #if defined MAC_RUNTIME_CC2591 || defined MAC_RUNTIME_CC2590 || \ defined MAC_RUNTIME_SE2431L || defined MAC_RUNTIME_CC2592 || \ defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590 || \ defined HAL_PA_LNA_SE2431L || defined HAL_PA_LNA_CC2592 { /* either if compound statement or non-conditional compound statement */ /* (Re-)Configure PA and LNA control signals to RF frontend chips. * Note that The register values are not retained during sleep. */ if (paLnaChip == PA_LNA_SE2431L) { /* CPS or P0_7 maps closely to the HGM line */ HAL_PA_LNA_RX_HGM(); /* EN or CSD line is controlled via software so setting it high here to start the SE2431L frontend */ HAL_PA_LNA_RX_CSD_HIGH(); /* CTX or P1_1 maps closely to PAEN */ RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV; OBSSEL1 = OBSSEL_OBS_CTRL0; } else if(paLnaChip == PA_LNA_CC2592) { /* P1_1 -> PAEN */ RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV; OBSSEL1 = OBSSEL_OBS_CTRL0; /* P1_0 -> EN (LNA control) */ RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV; OBSSEL0 = OBSSEL_OBS_CTRL1; } else { /* P1_1 -> PAEN */ RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV; OBSSEL1 = OBSSEL_OBS_CTRL0; /* P1_4 -> EN (LNA control) */ RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV; OBSSEL4 = OBSSEL_OBS_CTRL1; } /* For any RX, change CCA settings for CC2591 compression workaround. * This will override LNA control if CC2591_COMPRESSION_WORKAROUND * flag is defined. */ } #endif /* defined MAC_RUNTIME_CC2591 || ... || defined HAL_PA_LNA_SE2431L... */ if (macChipVersion <= REV_B) { /* radio initializations for disappearing RAM; PG1.0 and before only */ MAC_RADIO_SET_PAN_ID(macPib.panId); MAC_RADIO_SET_SHORT_ADDR(macPib.shortAddress); MAC_RADIO_SET_IEEE_ADDR(macPib.extendedAddress.addr.extAddr); } /* Turn on frame filtering */ MAC_RADIO_TURN_ON_RX_FRAME_FILTERING(); }