From df62add5a2e171af81f7d15d8fedbaff5da44f8c Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Wed, 29 May 2019 01:13:33 +0800 Subject: [PATCH] [cc2538] fix radio disabled for entropy get (#3872) Restore RFCORE_XREG_FRMCTRL0 after generating random values. --- examples/platforms/cc2538/entropy.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/platforms/cc2538/entropy.c b/examples/platforms/cc2538/entropy.c index 6b6899049..2c50586e5 100644 --- a/examples/platforms/cc2538/entropy.c +++ b/examples/platforms/cc2538/entropy.c @@ -41,12 +41,15 @@ static void generateRandom(uint8_t *aOutput, uint16_t aOutputLength) { + uint32_t frmctrl0; + HWREG(SOC_ADC_ADCCON1) &= ~(SOC_ADC_ADCCON1_RCTRL1 | SOC_ADC_ADCCON1_RCTRL0); HWREG(SYS_CTRL_RCGCRFC) = SYS_CTRL_RCGCRFC_RFC0; while (HWREG(SYS_CTRL_RCGCRFC) != SYS_CTRL_RCGCRFC_RFC0) ; + frmctrl0 = HWREG(RFCORE_XREG_FRMCTRL0); HWREG(RFCORE_XREG_FRMCTRL0) = RFCORE_XREG_FRMCTRL0_INFINITY_RX; HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RXON; @@ -64,7 +67,8 @@ static void generateRandom(uint8_t *aOutput, uint16_t aOutputLength) } } - HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RFOFF; + HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RFOFF; + HWREG(RFCORE_XREG_FRMCTRL0) = frmctrl0; } void cc2538RandomInit(void)