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);
}