CC26xx - fully shutdown the rf-core & abort rx op
Prior to this patch, the ieee radio driver did not explicitly abort the rx operation or power down the analog components of the radio prior to shutting down the rf-core. The result of this was that the rf-core continued to use a lot of power even while "off". This patch fixes this problem.
This commit is contained in:
parent
552408b241
commit
324d03b53c
2 changed files with 27 additions and 0 deletions
|
@ -201,6 +201,28 @@ rf_core_wait_cmd_done(void *cmd)
|
|||
== RF_CORE_RADIO_OP_STATUS_DONE_OK;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
fs_powerdown(void)
|
||||
{
|
||||
rfc_CMD_FS_POWERDOWN_t cmd;
|
||||
uint32_t cmd_status;
|
||||
|
||||
rf_core_init_radio_op((rfc_radioOp_t *)&cmd, sizeof(cmd), CMD_FS_POWERDOWN);
|
||||
|
||||
if(rf_core_send_cmd((uint32_t)&cmd, &cmd_status) != RF_CORE_CMD_OK) {
|
||||
PRINTF("fs_powerdown: CMDSTA=0x%08lx\n", cmd_status);
|
||||
return RF_CORE_CMD_ERROR;
|
||||
}
|
||||
|
||||
if(rf_core_wait_cmd_done(&cmd) != RF_CORE_CMD_OK) {
|
||||
PRINTF("fs_powerdown: CMDSTA=0x%08lx, status=0x%04x\n",
|
||||
cmd_status, cmd.status);
|
||||
return RF_CORE_CMD_ERROR;
|
||||
}
|
||||
|
||||
return RF_CORE_CMD_OK;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
rf_core_power_up()
|
||||
{
|
||||
|
@ -256,6 +278,9 @@ rf_core_power_down()
|
|||
if(rf_core_is_accessible()) {
|
||||
HWREG(RFC_DBELL_NONBUF_BASE + RFC_DBELL_O_RFCPEIFG) = 0x0;
|
||||
HWREG(RFC_DBELL_NONBUF_BASE + RFC_DBELL_O_RFCPEIEN) = 0x0;
|
||||
|
||||
/* need to send FS_POWERDOWN or analog components will use power */
|
||||
fs_powerdown();
|
||||
}
|
||||
|
||||
/* Shut down the RFCORE clock domain in the MCU VD */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue