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: IWR6843 RunTimeCalibConfig

Part Number: IWR6843

I am jaewoo lim.

I am using out_of_box_demo with iwr6843.
I have question.

I got information from codes's comment as follow.

" TI mmWave radar devices include a mmwave front end or BIST (Built-in Self-Test) processor, which
is responsible to configure the RF/Analog and digital front-end in real-time, as well as to
periodically schedule calibration and functional safety monitoring.This enables the mmwave
front-end(BIST processor) to be self-contained and capable of adapting itself to handle
temperature and ageing effects, and to enable significant ease-of-use from an external host
perspective. "

I want to know if this operation runs only when RunTimeCalibConfig is set.

And I want to know if RunTimeCalibConfig is set at out_of_box_demo of iwr6843.

Because, when looking at the FFT signal, it sometimes seems to jump up suddenly.

And I wonder if the temperature is for monitoring purposes, or if it is out of a certain temperature, what setting value is changed.

thank you.

  • Hi Jaewoo,

    1) I want to know if this operation [BIST] runs only when RunTimeCalibConfig is set.

    • mmWave API, by default, enables all init/boot time time calibrations for mmWave Front End. Moreover, when application requests the one-time and periodic calibrations in MMWave_start API call, mmWave API enables all the available one-time and periodic calibrations for mmWave Front End.

    2)  I want to know if RunTimeCalibConfig is set at out_of_box_demo of iwr6843

    • all calibrations are enabled by default

    3)  I wonder if the temperature is for monitoring purposes, or if it is out of a certain temperature, what setting value is changed

    • The CLI command compRangeBiasAndRxChanPhase takes into account the temperature at the time of calibration, and sets the baseline for future measurements.  The automatic RF calibration procedure will adjust for temperature changes in future measurements.
    • Measured temperature, based on average of temperature sensors near all enabled TX and RX channels at the time of calibration will be updated only when a runtime calibration is executed due to a change in temperature by more than 10 deg C.

    Regards,

    Brennan

  • Hi, Brennan Hartigan

    Thanks for your kind reply. It's helping a lot.
    I have a new question for your answer.

    1) I want to know if this operation [BIST] runs only when RunTimeCalibConfig is set.
    < Your Answer >
    - mmWave API, by default, enables all init/boot time calibrations for mmWave Front End.
      Moreover, when application requests the one-time and periodic calibrations in MMWave_start API call,
      mmWave API enables all the available one-time and periodic calibrations for mmWave Front End.

    < New Question >
      init time calibration is using rlRfInitCalibConfig fuction and one-time or periodic calibration is using rlRfRunTimeCalibConfig fuction. is it right?
      Even if rlRfInitCalibConfig is not commanded, is init time calibration enabled by default?
      And Even if rlRfRunTimeCalibConfig is not commanded, is one time calibration enabled by default?
      And Even if rlRfRunTimeCalibConfig is not commanded, is periodic time calibration enabled by default?


    2) I want to know if RunTimeCalibConfig is set at out_of_box_demo of iwr6843
    < Your Answer >
    - all calibrations are enabled by default

    < New Question >
      Are init-time calibration, one-time calibration and periodic-time calibration enabled by default at out_of_box_demo of iwr6843?
      I don't find command for rlRfInitCalibConfig and rlRfRunTimeCalibConfig at the codes of out_of_box_demo.
      If periodic-time calibration is enabled by default without sending command, do I need to send the rlRfRunTimeCalibConfig command to disable periodic-   time calibration?
      I want to disable Tx power calibation and Rx gain calibration of periodic-time calibration.
      During testing, sometimes all bins in the Range FFT suddenly level up.
      I am asking this question because I want to test if the cause is related to Tx Power Calibration and Rx Gain Calibration.
      Is there anything that you think has other causes?

      And, If I test for a long time with tx power calibration and Rx gain calibration disabled, could there be a problem with the IWR6843 Chip?
      (For example, there is damage to the chip because the TX power is output too strongly.)

    3) I wonder if the temperature is for monitoring purposes, or if it is out of a certain temperature, what setting value is changed
    < Your Answer >
    - The CLI command compRangeBiasAndRxChanPhase takes into account the temperature at the time of calibration, and sets the baseline for future  measurements.
     The automatic RF calibration procedure will adjust for temperature changes in future measurements.

    < New Question >
     According to the answer above, it seems to calibrate not only Rx Gain but also Phase.
     I can disable Rx Gain Calibration with rlRfRunTimeCalibConfig command, but I didn't find anything to disable Rx phase calibration.
     Is Rx Phase calibration unconditionally enabled?

      By any chance, does the above mean APLL and SYNTH calibration?

    < Your Answer >
    - Measured temperature, based on average of temperature sensors near all enabled TX and RX channels at the time of calibration will be updated
    only when a runtime calibration is executed due to a change in temperature by more than 10 deg C.

    < New Question >
     According to the answer above, I was wondering if the answers above mean that the runtime calibration only works when the temperature changes by 10  degrees during runtime calibration,
     or does it mean that the runtime calibration works but the temperature information is updated when the temperature changes by more than 10 degrees?
     Could you please elaborate on the above answer?

    thank you.

  • 1) 

    init time calibration is using rlRfInitCalibConfig fuction and one-time or periodic calibration is using rlRfRunTimeCalibConfig fuction. is it right?

    • rlRfInitCalibConfig sets the RF init calibration
    • rlRfRunTimeCalibConfig sets the one-time and periodic calibration of various RF/analog aspects and trigger

    Reference: file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/control/mmwavelink/docs/doxygen/html/group___sensor.html


    Even if rlRfInitCalibConfig is not commanded, is init time calibration enabled by default?

    • yes, init time calibration is enabled by default

    And Even if rlRfRunTimeCalibConfig is not commanded, is one time calibration enabled by default?

    • yes, one time calibration is enabled by default


    And Even if rlRfRunTimeCalibConfig is not commanded, is periodic time calibration enabled by default?

    • yes, periodic time calibration is enabled by default

    Please refer to this thread to see where in the code this is hardcoded to enable these calibrations by default:

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1051278/iwr6843aop-how-we-verify-the-calibration-result-or-compare-the-performance-with-or-without-calibration

    2)

    Are init-time calibration, one-time calibration and periodic-time calibration enabled by default at out_of_box_demo of iwr6843?
    I don't find command for rlRfInitCalibConfig and rlRfRunTimeCalibConfig at the codes of out_of_box_demo.

    • You can't find these commands in the SDK because they are a part of the mmWaveLink, a framework that provides APIs that generate messages to send to the mmWave front-end over mailbox
      • You can find the mentioned commands in the mmWaveLink Framework Doxygen: file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/control/mmwavelink/docs/doxygen/html/index.html
    • The calibration commands in the SDK can be found at file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr64xx/mmw/docs/doxygen/html/index.html, in the section titled, "Range Bias and Rx Channel Gain/Phase Measurement and Compensation"

    If periodic-time calibration is enabled by default without sending command, do I need to send the rlRfRunTimeCalibConfig command to disable periodic-  time calibration?

    I want to disable Tx power calibation and Rx gain calibration of periodic-time calibration.

    3) 

    According to the answer above, it seems to calibrate not only Rx Gain but also Phase.
    I can disable Rx Gain Calibration with rlRfRunTimeCalibConfig command, but I didn't find anything to disable Rx phase calibration.
    Is Rx Phase calibration unconditionally enabled?

    By any chance, does the above mean APLL and SYNTH calibration?

    According to the answer above, I was wondering if the answers above mean that the runtime calibration only works when the temperature changes by 10  degrees during runtime calibration,
    or does it mean that the runtime calibration works but the temperature information is updated when the temperature changes by more than 10 degrees?

    • This means that temperature information is updated when the temp changes by >10 degrees C.
    • Runtime calibration enables the mmWave front-end to be self-contained and capable of adapting itself to handle temperature and ageing effects, and to enable significant ease-of-use from an external host perspective. Features/enhancements information can be found in the platform specific release notes under mmwave_sdk_\firmware\radarss
    • Additionally:
      • Some of the calibrations are just temperature and process based look-up-tables, which are used to update the RF/Analog components
      • Built-in temperature sensors enable the device to monitor the temperature every few seconds and update the relevant components accordingly
      • Reference: file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/control/mmwavelink/docs/doxygen/html/group___sensor.html

    This should be sufficient to answer your questions.

    Regards,

    Brennan

  • Hi, Brennan Hartigan

    Thanks for your kind reply.
    I have another question.

    I want to operate only one-time calibration without periodic calibration.
    I will disable run-time calibration at init phase.
    and when i want to calibrate, i will sent CLI command made by myself for one-time calibrating.
    then I want to operate one-time calibration.
    How must i do?
    must i sent config for one-time calibration?
    does it support at out_of_box_demo of iwr6843?

    thank you.

  • Hi,

    I believe all resources I sent in my previous reply should help answer these questions:

    1) I want to operate only one-time calibration without periodic calibration

    One time calibration is enabled by default, so all you need to do is disable periodic calibration.  

    Please refer to this thread to see where in the code this is hardcoded to disable these calibrations by default:

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1051278/iwr6843aop-how-we-verify-the-calibration-result-or-compare-the-performance-with-or-without-calibration

    2) when i want to calibrate, i will sent CLI command made by myself for one-time calibrating.
    then I want to operate one-time calibration

    Do this as you would send any other CLI command to the device.  You will have to modify the mmw_cli.c file and rebuild the demo so your custom CLI command is included:

    C:\ti\mmwave_sdk_03_05_00_04\packages\ti\demo\xwr68xx\mmw\mss\mmw_cli.c

    The resources in my previous reply and these follow up answers should point you in the right direction.

    Regards,

    Brennan

  • Hi, Brennan Hartigan

    Thanks for your kind reply.
    I have some question.

    I set as follows for disabling run time calibarton.

    calibrationCfg.u.chirpCalibrationCfg.enableCalibration = false;
    calibrationCfg.u.chirpCalibrationCfg.enablePeriodicity = false;

    And I make CLI command for one-time calibration as follows.

    ********************************************************************************************************************
    cliCfg.tableEntry[cnt].cmd = "setOneTimeCal";
    cliCfg.tableEntry[cnt].helpString = "<RF one time calibration>";
    cliCfg.tableEntry[cnt].cmdHandlerFxn = RBT_CLISetOneTimeCalibration;

    static int32_t RBT_CLISetOneTimeCalibration(int32_t argc, char* argv[])
    {
    if (argc != 1)
    {
    CLI_write ("Error: Invalid usage of the CLI command\n");
    return -1;
    }

    extern int32_t MmwDemo_setProfileConfig (void);
    extern int32_t MmwDemo_setRunTimeCalibConfig (void);

    if(MmwDemo_setProfileConfig() != 0)
    {
    CLI_write ("Error: Profile config\n");
    return -1;
    }

    if (MmwDemo_setRunTimeCalibConfig () != 0)
    {
    CLI_write ("Error: RunTimeCal config\n");
    return -1;
    }
    return 0;
    }

    int32_t MmwDemo_setProfileConfig (void)
    {
    int32_t retVal;
    /* Set Profile configuration */
    retVal = rlSetProfileConfig(RL_DEVICE_MAP_INTERNAL_BSS, 1, (rlProfileCfg_t*)&gProfileCfg);

    /* Check for mmWaveLink API call status */
    if(retVal != 0)
    {
    /* Error: Link reported an issue. */
    System_printf("Error: rlSetProfileConfig retVal=%d\n", retVal);
    return -1;
    }
    return 0;
    }


    int32_t MmwDemo_setRunTimeCalibConfig (void)
    {
    int32_t retVal;
    rlRunTimeCalibConf_t runTimeCalib;

    runTimeCalib.oneTimeCalibEnMask = 0x710;
    runTimeCalib.periodicCalibEnMask = 0;
    runTimeCalib.calibPeriodicity = 0;
    runTimeCalib.reportEn = 1;

    /* Set Run time calibration configuration */
    retVal = rlRfRunTimeCalibConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlRunTimeCalibConf_t*)&runTimeCalib);

    if (retVal != 0)
    {
    System_printf ("Error: rlRfRunTimeCalibConfig [Error %d]\n", retVal);
    return -1;
    }else
    {
    System_printf ("rlRfRunTimeCalibConfig OK \n");
    }
    return 0;
    }

    ********************************************************************************************************************

    And when it is running normally, i send CLI command with tool made by myself.
    but error occured at rlRfRunTimeCalibConfig
    Error code is 286. but 286's Error code don't exist at Error code list.
    I wonder Error code 286 is what error?

    current dfeDataOutputMode is frame based chirps.
    Maybe the one-time calibration I want is only supported in continuous chirping mode?

    There is code as follows at mmwave_link.c

    /******************************************************************************
    * Continuous Mode: Is calibration enabled?
    ******************************************************************************/
    if (ptrMMWaveMCB->calibrationCfg.u.contCalibrationCfg.enableOneShotCalibration == true)
    {
    /* Configure the calibrations: */
    retVal = rlRfRunTimeCalibConfig(RL_DEVICE_MAP_INTERNAL_BSS, &runTimeCalib);
    .
    .
    .
    *************************************************************************************************************

    I only want to use one-time calibration without periodic-time calibration when i want to calibrate.

    please help me.
    thank you.

  • Hello,

    Can you please take a screenshot of the error and send it in this thread?  Include mmWave error & subsystem error.

    Regards,

    Brennan

  • Hi, Brennan Hartigan

    I can't upload images for company security, so I write in text as follows.
    <  console at CCS >

    [Cortex_R4_0] **********************************************

    Debug: Launching the MMW Demo on MSS

    **********************************************

    Debug: Launched the Initialization Task

    Debug: mmWave Control Initialization was successful

    Debug: mmWave Control Synchronization was successful

    [C674X_0] Debug: DPM Module Sync is done

    [Cortex_R4_0] Debug: CLI is operational

    Debug: Sending rlRfSetLdoBypassConfig with 0 0 0

    Starting Sensor (issuing MMWave_start)

    Error: rlRfRunTimeCalibConfig [Error 286]

    An error occurred on the last line.
    Maybe,  Error Code is from BSS.
    I sent one-time config command on runtime with CLI command made by myself.
    However, the above error occurred.
    The function used to enable one time calibration is as follows.

    int32_t MmwDemo_setRunTimeCalibConfig (void)

    {

        int32_t         retVal;

        rlRunTimeCalibConf_t runTimeCalib;

        runTimeCalib.oneTimeCalibEnMask = 0x710;

        runTimeCalib.periodicCalibEnMask = 0;

        runTimeCalib.calibPeriodicity = 0;

        runTimeCalib.reportEn = 1;

        /* Set Run time calibration configuration */

        retVal = rlRfRunTimeCalibConfig(RL_DEVICE_MAP_INTERNAL_BSS,

                                    (rlRunTimeCalibConf_t*)&runTimeCalib);

        if (retVal != 0)

        {

            System_printf ("Error: rlRfRunTimeCalibConfig [Error %d]\n", retVal);

            return -1;

        }else

        {

            System_printf ("rlRfRunTimeCalibConfig OK \n");

        }

        return 0;

    }

    I couldn't find any documentation or code on how to use only one-time corrections at runtime.
    Is it not supported?
    please help me.  thank you.
  • Hello,

    I am looking into your issue and will get back to you as soon as I have a sufficient answer.

    Regards,

    Brennan

  • Hi, Brennan Hartigan

    Thank you for caring me.

    I'm curious about the progress.
    When can I get a answer?

  • Hi, Brennan Hartigan

    I'm waiting for your reply.

    please answer current progress.


    When can I get a answer?

  • Hello, 

    My apologies for the delayed response, as I have been out of the office.

    1) please open a new thread with your query.  As the original intent of this thread has been solved, I encourage you to open a new thread with this issue.

    2) In regards to the current inquiry, mmWave demo examples are intended to show the capabilities of TI's mmWave devices.  These demos use mmWave radar data  processing and algorithm techniques which are available publicly.   As such the GUI, plots, processing examples, algorithm information are provided 'as is' for demonstration purpose.   We may be able to guide you further with device specific details but the details of customization routes and addressing specific corner cases are outside the scope of E2E forum support.  

    I invite you to look at examples of CLI commands in:

    C:\ti\mmwave_sdk_03_05_00_04\packages\ti\demo\xwr68xx\mmw\mss\mmw_cli.c

    Closing this thread, 

    Regards,

    Brennan