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: How to turn off Dynamic power saving during inter-chirp IDLE times

Part Number: IWR6843

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?