mirror of
https://github.com/espressif/openthread.git
synced 2026-08-12 21:57:47 +00:00
[cc13x2_cc26x2] fix runtime issue with RF patching (#2971)
This commit is contained in:
committed by
Jonathan Hui
parent
8d2184a4e7
commit
ef31de69c1
@@ -57,10 +57,14 @@
|
|||||||
#include <inc/hw_fcfg1.h>
|
#include <inc/hw_fcfg1.h>
|
||||||
#include <inc/hw_memmap.h>
|
#include <inc/hw_memmap.h>
|
||||||
#include <inc/hw_prcm.h>
|
#include <inc/hw_prcm.h>
|
||||||
|
#include <rf_patches/rf_patch_cpe_ieee_802_15_4.h>
|
||||||
|
#include <rf_patches/rf_patch_mce_ieee_802_15_4.h>
|
||||||
|
#include <rf_patches/rf_patch_rfe_ieee_802_15_4.h>
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CC1352_RECEIVE_SENSITIVITY = -100, // dBm
|
CC1352_RECEIVE_SENSITIVITY = -100, // dBm
|
||||||
|
CC1352_RF_CMD0 = 0x0607,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* phy state as defined by openthread */
|
/* phy state as defined by openthread */
|
||||||
@@ -867,8 +871,10 @@ static uint_fast8_t rfCorePowerOn(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Let CPE boot */
|
/* Let CPE boot */
|
||||||
HWREG(RFC_PWR_NONBUF_BASE + RFC_PWR_O_PWMCLKEN) =
|
RFCClockEnable();
|
||||||
(RFC_PWR_PWMCLKEN_RFC_M | RFC_PWR_PWMCLKEN_CPE_M | RFC_PWR_PWMCLKEN_CPERAM_M);
|
|
||||||
|
/* Enable ram clocks for patches */
|
||||||
|
RFCDoorbellSendTo(CMDR_DIR_CMD_2BYTE(CC1352_RF_CMD0, RFC_PWR_PWMCLKEN_MDMRAM | RFC_PWR_PWMCLKEN_RFERAM));
|
||||||
|
|
||||||
/* Send ping (to verify RFCore is ready and alive) */
|
/* Send ping (to verify RFCore is ready and alive) */
|
||||||
return rfCoreExecutePingCmd();
|
return rfCoreExecutePingCmd();
|
||||||
@@ -907,6 +913,19 @@ static void rfCorePowerOff(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies CPE, RFE, and MCE patches to the radio.
|
||||||
|
*/
|
||||||
|
static void rfCoreApplyPatch(void)
|
||||||
|
{
|
||||||
|
rf_patch_cpe_ieee_802_15_4();
|
||||||
|
rf_patch_mce_ieee_802_15_4();
|
||||||
|
rf_patch_rfe_ieee_802_15_4();
|
||||||
|
|
||||||
|
/* disable ram bus clocks */
|
||||||
|
RFCDoorbellSendTo(CMDR_DIR_CMD_2BYTE(CC1352_RF_CMD0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the setup command string to the radio core.
|
* Sends the setup command string to the radio core.
|
||||||
*
|
*
|
||||||
@@ -963,6 +982,8 @@ static uint_fast16_t rfCoreSendEnableCmd(void)
|
|||||||
|
|
||||||
interruptsWereDisabled = IntMasterDisable();
|
interruptsWereDisabled = IntMasterDisable();
|
||||||
|
|
||||||
|
rfCoreApplyPatch();
|
||||||
|
|
||||||
doorbellRet = (RFCDoorbellSendTo((uint32_t)&sStartRatCmd) & 0xFF);
|
doorbellRet = (RFCDoorbellSendTo((uint32_t)&sStartRatCmd) & 0xFF);
|
||||||
otEXPECT_ACTION(CMDSTA_Done == doorbellRet, ret = doorbellRet);
|
otEXPECT_ACTION(CMDSTA_Done == doorbellRet, ret = doorbellRet);
|
||||||
|
|
||||||
|
|||||||
@@ -55,10 +55,15 @@
|
|||||||
#include <inc/hw_fcfg1.h>
|
#include <inc/hw_fcfg1.h>
|
||||||
#include <inc/hw_memmap.h>
|
#include <inc/hw_memmap.h>
|
||||||
#include <inc/hw_prcm.h>
|
#include <inc/hw_prcm.h>
|
||||||
|
#include <inc/hw_rfc_pwr.h>
|
||||||
|
#include <rf_patches/rf_patch_cpe_ieee_802_15_4.h>
|
||||||
|
#include <rf_patches/rf_patch_mce_ieee_802_15_4.h>
|
||||||
|
#include <rf_patches/rf_patch_rfe_ieee_802_15_4.h>
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CC2652_RECEIVE_SENSITIVITY = -100, // dBm
|
CC2652_RECEIVE_SENSITIVITY = -100, // dBm
|
||||||
|
CC2652_RF_CMD0 = 0x0607,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* phy state as defined by openthread */
|
/* phy state as defined by openthread */
|
||||||
@@ -865,8 +870,10 @@ static uint_fast8_t rfCorePowerOn(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Let CPE boot */
|
/* Let CPE boot */
|
||||||
HWREG(RFC_PWR_NONBUF_BASE + RFC_PWR_O_PWMCLKEN) =
|
RFCClockEnable();
|
||||||
(RFC_PWR_PWMCLKEN_RFC_M | RFC_PWR_PWMCLKEN_CPE_M | RFC_PWR_PWMCLKEN_CPERAM_M);
|
|
||||||
|
/* Enable ram clocks for patches */
|
||||||
|
RFCDoorbellSendTo(CMDR_DIR_CMD_2BYTE(CC2652_RF_CMD0, RFC_PWR_PWMCLKEN_MDMRAM | RFC_PWR_PWMCLKEN_RFERAM));
|
||||||
|
|
||||||
/* Send ping (to verify RFCore is ready and alive) */
|
/* Send ping (to verify RFCore is ready and alive) */
|
||||||
return rfCoreExecutePingCmd();
|
return rfCoreExecutePingCmd();
|
||||||
@@ -905,6 +912,19 @@ static void rfCorePowerOff(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies CPE, RFE, and MCE patches to the radio.
|
||||||
|
*/
|
||||||
|
static void rfCoreApplyPatch(void)
|
||||||
|
{
|
||||||
|
rf_patch_cpe_ieee_802_15_4();
|
||||||
|
rf_patch_mce_ieee_802_15_4();
|
||||||
|
rf_patch_rfe_ieee_802_15_4();
|
||||||
|
|
||||||
|
/* disable ram bus clocks */
|
||||||
|
RFCDoorbellSendTo(CMDR_DIR_CMD_2BYTE(CC2652_RF_CMD0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the setup command string to the radio core.
|
* Sends the setup command string to the radio core.
|
||||||
*
|
*
|
||||||
@@ -961,6 +981,8 @@ static uint_fast16_t rfCoreSendEnableCmd(void)
|
|||||||
|
|
||||||
interruptsWereDisabled = IntMasterDisable();
|
interruptsWereDisabled = IntMasterDisable();
|
||||||
|
|
||||||
|
rfCoreApplyPatch();
|
||||||
|
|
||||||
doorbellRet = (RFCDoorbellSendTo((uint32_t)&sStartRatCmd) & 0xFF);
|
doorbellRet = (RFCDoorbellSendTo((uint32_t)&sStartRatCmd) & 0xFF);
|
||||||
otEXPECT_ACTION(CMDSTA_Done == doorbellRet, ret = doorbellRet);
|
otEXPECT_ACTION(CMDSTA_Done == doorbellRet, ret = doorbellRet);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user