I want to disable the dynamic power saving during inter-chirp IDLE times.
I have done the following changes to the SDK demo code:
I have added a function for setting the chirp configuration internally from the function MmwDemo_initTask . There i set the chirp configuration and before sending sensorStart I call
rlRfDynamicPowerSave(RL_DEVICE_MAP_INTERNAL_BSS, 0)
The 0 should disable all power saving.
The rlRfDynamicPowerSave call returns a suceess.
The code works fine for starting up the IWR6843 and selfconfiguring itself and it works as expected, just like configuring it using the normal way (not automatically from inside the firmware).
But the code does not result in the Tx being always on, which is what I want, Instead it results in the Tx always being off, the signal at least is much weaker now once I added the call to
rlRfDynamicPowerSave
Here is the code :
MmwDemo_initTask(....)
..
..
..
/*****************************************************************************
* Initialize the Profiler
*****************************************************************************/
Cycleprofiler_init();
/*****************************************************************************
* Initialize the CLI Module:
*****************************************************************************/
MmwDemo_CLIInit(MMWDEMO_CLI_TASK_PRIORITY);
CLI_inject("sensorStop\n");
CLI_inject("flushCfg\n");
CLI_inject("dfeDataOutputMode 1\n");
CLI_inject("channelCfg 15 6 0\n");
CLI_inject("adcCfg 2 1\n");
CLI_inject("adcbufCfg -1 0 1 1 1\n");
CLI_inject("lowPower 0 0\n");
CLI_inject("profileCfg 0 61 23.656 7 74 0 0 6.662 1 128 2000 0 0 36\n");
CLI_inject("chirpCfg 0 0 0 0 0 0 0 2\n");
CLI_inject("chirpCfg 1 1 0 0 0 0 0 4\n");
CLI_inject("frameCfg 0 1 128 0 100 1 0\n");
CLI_inject("guiMonitor -1 1 1 1 0 0 1\n");
CLI_inject("cfarCfg -1 0 2 8 4 3 0 15 0\n");
CLI_inject("cfarCfg -1 1 0 4 2 3 1 15 0\n");
CLI_inject("multiObjBeamForming -1 1 0.5\n");
CLI_inject("calibDcRangeSig -1 0 -5 8 256\n");
CLI_inject("clutterRemoval -1 0\n");
CLI_inject("compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0\n");
CLI_inject("measureRangeBiasAndRxChanPhase 0 1. 0.2\n");
CLI_inject("aoaFovCfg -1 -90 90 -90 90\n");
CLI_inject("cfarFovCfg -1 0 0 45\n");
CLI_inject("cfarFovCfg -1 1 -12 12\n");
CLI_inject("extendedMaxVelocity -1 0\n");
CLI_inject("CQRxSatMonitor 0 3 4 63 0\n");
CLI_inject("CQSigImgMonitor 0 127 4\n");
CLI_inject("analogMonitor 0 0\n");
CLI_inject("lvdsStreamCfg -1 0 0 0\n");
CLI_inject("bpmCfg -1 0 0 0\n");
rlDynPwrSave_t johan_power_save_data_struct;
//* @brief Enable dynamic power saving during inter-chirp IDLE times by \n
//* turning off various circuits e.g. TX, RX, LO. 3 LSB is vaild \n
//* b0 Enable power save by switching off TX during inter-chirp IDLE period \n
//* 0 Disable \n
//* 1 Enable \n
//* b1 Enable power save by switching off RX during inter-chirp IDLE period \n
//* 0 Disable \n
//* 1 Enable \n
//* b2 Enable power save by switching off LO distribution during inter-chirp IDLE\n
//* period \n
//* 0 Disable \n
//* 1 Enable \n
//*/
// rlUInt16_t blkCfg;
johan_power_save_data_struct.blkCfg = 0;
/* Set Dynamic power save configuration */
rlReturnVal_t ret_val = rlRfDynamicPowerSave(RL_DEVICE_MAP_INTERNAL_BSS, &johan_power_save_data_struct);
if(ret_val != 0)
{
/* Error: Link reported an issue. */
CLI_write("Error: rlRfDynamicPowerSave ret_val=%d\n", ret_val);
}
else
CLI_write("Success: rlRfDynamicPowerSave ret_val=%d\n", ret_val);
CLI_inject("sensorStart\n");
return;
Can you tell if I am missing something? Since my current code results in Tx always being off, have I missunderstood the documentation and should it be the opposite? Or is there a way to simply disable the whole power save feature?