This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IWR6843: UART CAN not receive when Low Power Demo Mode

Part Number: IWR6843


I try Overview of 68xx Low Power Demo

But when Enter Low Power Mode (VCLK to 40M , RF OFF , APLL OFF)

UART Can not Receive data

I try reInit UART to Freq 40Mhz

But is not work

void Enter_LowPower(void)
{
    int32_t errCode;

   int32_t retVal;

   rlPowerSaveModeCfg_t data_rf_down;
   rlPowerSaveModeCfg_t data_apll_down;

   xWR6843_dss_clock_gate();

   xWR6843_mss_vclk_40M();

   data_rf_down.lowPwrStateTransCmd = 1;
   retVal = rlSetPowerSaveModeConfig(RL_DEVICE_INDEX_INTERNAL_DSS_MSS, &data_rf_down);
   if (retVal != 0)
   {
       //System_printf("RF Off Failed Err: %d\n", retVal);
       CLI_write("RF Off Failed Err: %d\n", retVal);
       return;

   }

   data_apll_down.lowPwrStateTransCmd = 3;
    retVal = rlSetPowerSaveModeConfig(RL_DEVICE_INDEX_INTERNAL_DSS_MSS, &data_apll_down);
    if (retVal != 0)
    {
      //System_printf("APLL Off Failed Err: %d\n", retVal);
      CLI_write("APLL Off Failed Err: %d\n", retVal);
      return;

    }


   retVal = SOC_haltBSS(gMmwMssMCB.socHandle, &errCode);

   if (retVal < 0)
   {
      CLI_write("SOC_haltBSS Err \r\n");
   }


   UART_ReInit_to40M();

      uint8_t ackData[16];
      memset(ackData,0x31,sizeof(ackData));
      ackData[14]=0x0D;
      ackData[15]=0x0A;
             UART_writePolling (gMmwMssMCB.commandUartHandle,
                                (uint8_t*)ackData,
                                sizeof(ackData));

}


void UART_ReInit_to40M()
{
       CLI_close();
       UART_close(gMmwMssMCB.commandUartHandle);
       gMmwMssMCB.commandUartHandle=NULL;

       UART_Params uartParams;
    /* Setup the default UART Parameters */
       UART_Params_init(&uartParams);
       uartParams.writeDataMode = UART_DATA_BINARY;
       uartParams.readDataMode = UART_DATA_BINARY;
       uartParams.clockFrequency = 40000000U;//(gMmwMssMCB.cfg.platformCfg.sysClockFrequency)/5;
       uartParams.baudRate = gMmwMssMCB.cfg.platformCfg.commandBaudRate;
       uartParams.isPinMuxDone = 1;


       /* Open the UART Instance */
       gMmwMssMCB.commandUartHandle = UART_open(0, &uartParams);
       if (gMmwMssMCB.commandUartHandle == NULL)
       {
           MmwDemo_debugAssert(0);
           return;
       }

       /* Setup the default UART Parameters */
       UART_Params_init(&uartParams);
       uartParams.writeDataMode = UART_DATA_BINARY;
       uartParams.readDataMode = UART_DATA_BINARY;
       uartParams.clockFrequency = 40000000U;//gMmwMssMCB.cfg.platformCfg.sysClockFrequency/5;
       uartParams.baudRate       = gMmwMssMCB.cfg.platformCfg.loggingBaudRate;
       uartParams.isPinMuxDone   = 1U;
       uartParams.readEcho        = UART_ECHO_OFF;


       if (gMmwMssMCB.loggingUartHandle == NULL)
       {
           System_printf("Error: Unable to open the Logging UART Instance\n");
           MmwDemo_debugAssert(0);
           return;
       }

       cliCfg.cliBanner=NULL;

       CLI_open (&cliCfg);

}