Other Parts Discussed in Thread: ENERGYTRACE
Tool/software:
Hi,
I am using CC1314 custom board. I want to use standby mode to reduce power consumption when there is no activity on UART.
My application is using freeRTOS. I ahve following questions
1. Can I use Power_sleep(PowerCC26XX_STANDBY); manually
2. Did I need to suspend task before entering int standby mode
3. What are the steps to put device into standby mode?
4. I have tried but device is not entering into standby mode
static void EnterStandbyMode(void)
{
trx_off(); // close RF
CloseUart();//closeUART
StopTimer();//stop timer
TaskDelay(pdMS_TO_TICKS(1000)); // Let system settle
closeWatchdogTimer();
/* Configure the UART Rx pin as GPIO pin as input with falling-edge interrupt*/
GPIO_setConfig(CONFIG_GPIO_UART2_1_RX, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);
// Register the callback function
GPIO_setCallback(CONFIG_GPIO_UART2_1_RX, GpioWakeUpCallback);
// Enable GPIO interrupts
GPIO_enableInt(CONFIG_GPIO_UART2_1_RX);
printf("cc1314 is in entering into standby mode \r\n");
// Suspend the FreeRTOS scheduler
vTaskSuspendAll();
int retVal = Power_sleep(PowerCC26XX_STANDBY); // Manually enter standby
if(WakeupFlag)
{
// Resume the FreeRTOS scheduler after waking up
xTaskResumeAll();
OpenUart();
WakeupFlag = false;
printf("cc1314 is in Active mode \r\n");
}
}
void GpioWakeUpCallback(uint_least8_t index) {
// Set the wake-up flag
WakeupFlag = true;
printf("cc1314 is wake up from standby \r\n");
}