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.
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); }
Hi Chris
低功耗Demo是可以工作的 (进入&离开) ,我要尝试的是当进入低功耗的模式时,UART 仍要可以正常接收及发送资料
你能提供我什么建议吗?
你好,
在low power demo的user guide里,你可以找到下面的信息,所以当mss时钟变为40Mhz的时候,UART是不能正常工作的。你可以尝试不要降低mss的时钟(保持200Mhz),当然这样功耗会增加一些。
/mmwave_industrial_toolbox_4_9_0/labs/out_of_box_demo/68xx_low_power_demo/docs/68xx_low_power_demo_user_guide.html
This component slows MSS_VCLK by sourcing from the 40 MHz external crystal instead of the 200 MHz APLL. While saving significant power, this renders a majority of device peripherals non-operable. (Notable exceptions to this are the CAN_FD and QSPI peripherals which run on slower clock speeds.) One must also ungate the MSS_VCLK in order to resume normal device operation. While in this mode running timers and sequences will be slowed by a factor of 5.
This is achieved by calling the xWR6843_mss_vclk_40M() function in the custom libsleep_xwr68xx.aer4f library and can be reversed by calling xWR6843_mss_vclk_200M().
Hi Chris
我尝试过重新初始化UART ,使其clockFrequency 设为 200MHZ or 40MHZ, 如附的code , UART_ReInit_to40M
但它仍无法正常工作
所以我能否肯定的说 当进入LOW Power Mode 后, 无论是否重新初始化UART or 更改UART 的uartParams.clockFrequency 为40Mhz or 200Mhz ,UART 仍无法工作
Hi Chris
在LowPowerMode 下不调用 xWR6843_mss_vclk_40M()
UART 运作非常良好
但这样功耗无法达到需求
主要是希望雷达在LowPower模式下时,若发生异常,可以透过 UART 通知上位机
TI 有做过类似的方式或是有什么建议可以提供吗?
你好,
建议使用CAN_FD。
Notable exceptions to this are the CAN_FD and QSPI peripherals which run on slower clock speeds
Hi Chirs
我已经解决了这个问题
由于我没考虑到的UART 频率须为BaudRate的16倍
导致我要设定的BaudRate远大于VCLK 40M能处理的范围