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, How can I change the temperature step of calibration trigger?

Part Number: IWR6843

My device is IWR6843.
My software is "\mmwave_industrial_toolbox_4_7_0__win\mmwave_industrial_toolbox_4_7_0\labs\gesture_recognition\68xx_multi_gesture_and_motion_det\src\ods".


Now, TI SourceCode is doing calibration when temperature changes ±10°C.
I want to change this 10°C step to, for example, 1°C.

Which variable(perhaps a value of 10) in which file should I change to calibrate in 1°C steps?
I have already read the following paper, and I haven't resolved it yet.
" Application Note Self-Calibration in TI’s mmWave Radar Devices "
" 1205.AWR1xx_Radar_Interface_Control.pdf "



Best Regards,
Morimoto

PS: 
I want to see and fix the API "AWR_RUN_TIME_CALIBRATION_CONF_AND_TRIGGER_SB", but I don't know which file in which folder it is located.

  • Hello,

    What exactly do you mean calibration is happening when the temp changes 10 degrees? Typically this calibration happens periodically every second, not based on temperature. Do you see different behavior in the gesture demo?

    Regards,

    Jackson

  • Thank you for reply.

    As temperature increases, strength of the received signal gradually decreases.
    However, when temperature changed 10 degreeC, strength of received signal jumps up.
    This was menthoned by IWR6843: IWR6843 RunTimeCalibConfig - Sensors forum - Sensors - TI E2E support forums too.


    I changed calibration setting in mss&dss code because signal is out of control.

    calibrationCfg.u.chirpCalibrationCfg.enableCalibration = true; -> false
    calibrationCfg.u.chirpCalibrationCfg.enablePeriodicity = true; -> false

    This change method was menthoned by IWR6843AOP: How we verify the calibration result or compare the performance with or without calibration - Sensors forum - Sensors - TI E2E support forums.
    When I changed it, it stopped jumping.
    However, I don't want to turn off calibration.

    Best Regards,
    Morimoto







    I found AWR_RF_INIT_CALIBRATION_CONF_SB API and AWR_RUN_TIME_CALIBRATION_CONF_AND_TRIGGER_SB API in "AWR1xx_Radar_Interface_Control.pdf".
    These are radarss API.
    But radarss folder in sdk has only bin files and user_guide.
    Where can I find source code that created this bin file?
    I am thinking that AWR...._SB API is a function in radarss for jump (calibration)  that's happening with a 10degreeC temperature change.
    I would like to know how to cause a sudden jump when temperature changes and strength of received signal drops enough.I believe I would know more if I could read inside source code.

    Thanks

  • Add Information,

    6. Scheduling of Runtime Calibration and Monitoring Every CALIBRATION_PERIODICITY, the processor reads the temperature and performs a calibration update if needed. This update is done only if the temperature deviates by ±10 degrees compared to the temperature when the last calibration was done. LO Distribution calibration updates are done only if the temperature deviates by ±20 degrees from the temperature at last update.

    ↑↑↑

    This is "calibration" that I am saying .

    This says "update is done only if the temperature deviates by ±10 degrees", and I am also observing this with my device.

  • I see. I understand now, as the calibration will be 'updated' every second, but may only change values after 10 degrees. Some of the look up tables are fixed in firmware, so these cannot change. Some of them can be changed manually but still only support updates in 10 degree increments. Because these LUTs have fixed memory there doesn't appear to be any way to change the scaling to be more than 10 degree increments.

    What exactly do you see as being an issue with the jumps in Rx gain? are they large enough to cause problems with detections? The calibration should keep them inside a common level.

    Regards,

    Jackson

  • Thank you for reply.

    >>Some of the look up tables are fixed in firmware, so these cannot change.
    I could change the value of LUT of Tx and Rx by rlTxGainTempLutSet() and rlRxGainTempLutSet.
    Is this correct?


    >>What exactly do you see as being an issue with the jumps in Rx gain? are they large enough to cause problems with detections? The calibration should keep them inside a common level.
    yes. It's hard to accept.



    >>Because these LUTs have fixed memory there doesn't appear to be any way to change the scaling to be more than 10 degree increments.
    OK, but I want to calibration in 1 degreeC.
    I found one-time-calibration in rlRunTimeCalibConf().
    I am thinking that this one-time-calibration would be able to jump RxGain at any temperature and keep RxGain.
    Is this right?

    rlRunTimeCalibConf_t runTimeCalib;
    runTimeCalib.oneTimeCalibEnMask = 0x710;
    runTimeCalib.periodicCalibEnMask = 0;
    runTimeCalib.calibPeriodicity = 5;
    runTimeCalib.reportEn = 1;
    runTimeCalib.reserved0 = 0;
    runTimeCalib.reserved1 = 0;
    retVal = rlRfRunTimeCalibConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlRunTimeCalibConf_t*)&runTimeCalib);

    but, I don't know how to use one-time-calibration.
    When using rlRfRunTimeCalibConfig(), is one-time calibration used automatic and immediately?



    Best Regards,
    Morimoto

  • Yes you can read and change with the above APIs. If you manually set the Rx gain using the API, then trigger a manual calibration, the device should use that calibrated value. So to do 1 degree calibration step, you may need to store the calibration values elsewhere and re-program the calibration LUT at every degree in the application layer.

    However, the temperature is not expected to change so much so fast to see issues with this in practice. How often do you see the temperature switching >10 degrees in your application?

    Regards,

    Jackson

  • Thank you for reply.


    >>Yes you can read and change with the above APIs. If you manually set the Rx gain using the API, then trigger a manual calibration, the device should use that calibrated value. So to do 1 degree calibration step, you may need to store the calibration values elsewhere and re-program the calibration LUT at every degree in the application layer.

    yes, but my leader says "I don't know the side effects of rewriting LUT, so I don't want to use method of overwriting LUT with our values".
    So I am thinking of not rewriting LUT with our values, but monitoring the temperature by rlRfGetTemperatureReport() and causing one-time-calibration every time it changes by 1°C.
    I am thinking that this one-time-calibration would be able to jump RxGain at any temperature and keep RxGain without change LUT. Is this right?

    rlRunTimeCalibConf_t runTimeCalib;
    runTimeCalib.oneTimeCalibEnMask = 0x710;
    runTimeCalib.periodicCalibEnMask = 0;
    runTimeCalib.calibPeriodicity = 5;
    runTimeCalib.reportEn = 1;
    runTimeCalib.reserved0 = 0;
    runTimeCalib.reserved1 = 0;
    retVal = rlRfRunTimeCalibConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlRunTimeCalibConf_t*)&runTimeCalib);

    but, I don't know how to use one-time-calibration. When using rlRfRunTimeCalibConfig(), is one-time calibration used automatic and immediately?


    >>However, the temperature is not expected to change so much so fast to see issues with this in practice. How often do you see the temperature switching >10 degrees in your application?
    yes. my device's temperature change between 40 degreeC ~ 100 degreeC.


    Best Regards,
    Morimoto

  • Allow me to add a question.

    What are the side effects of rewriting LUT with Set function?

    Best Regards,

    Morimoto

  • I understand the device temp will fluctuate over the lifecycle of the device, but a typical fluctuation will not be fast. So these gain changes should not happen too often, at least not across many degree settings. 

    I am looking into this further and will get back, but setting 1 degree calibration steps is very different and may not be supported in the code.

    Regards,

    Jackson

  • Thank you for reply.

    Yes, I understand that 1 degree calibration steps is not be supported in ODS code.

    However, I can see temperature by rlRfGetTemperatureReport().
    So, I can set up original Rx-LUT in 1 degreeC step by rlRxGainTempLutSet().
    TI says

    "The LUT used for RX gain calibration can be read back from the device using an API. The LUT can also be replaced with a user-programmed LUT (for example, with an LUT that was previously read back from the device)."

    And, I could use one-time-calibration by rlRfInitCalibConfig() between sensorStop and sensorStart.
    So, if I can set appropriate Rx-LUT in 1 degreeC steps, I was thinking I can calibrate in 1°C steps.

    However, I have two problems.



    Now, I want to know only two questions.
    Please tell me about.

    Q1. IFgain of Rx-LUT can only be changed in 2dB steps. This is too large a gap.
           How to change Rxgain value in 1dB or 0.5dB steps ?
           I don't want to change RFgain of Rx-LUT. rlRfInterRxGainPhaseConfig() did not change energy.


    Q2. I don't know if changing Tx-LUT is a problem by rlTxGainTempLutSet().
           If changing it is not a problem, it is likely that more advanced calibration can be done by adjusting both the Tx-LUT and Rx-LUT.
           However, documentation says that Rx-LUT can be changed, but it doesn't say that Tx-LUT can be changed.
           How many dB will change if I change Tx-LUT?  And what are side effects?
           This has already been asked in the following forum.
            IWR6843: How do I see LUT of Tx and Rx - Sensors forum - Sensors - TI E2E support forums



    Please tell me two questions.


    Best Regards,
    Morimoto

  • Hello,

    The LUTs cannot be set into 1 degree steps. The FW will still only switch LUT bins if the temp changes by 10 degrees to the next bin. 

    Q1. The LSB is set to 2dB. Other values are not supported.

    Q2. The gain code values in the TX-LUT will get updated every time calibration is run (every second or whenever calibration is manually triggered). Likely these should not need to be manually set. as they should be automatically updated.

    For more info on smoothing the jumps in RX gain, please see section 4 of the following app note.
    Self-Calibration of mmWave Radar Devices (Rev. B)

    Regards,

    Jackson

  • Thank you for reply.

    >>A1. The LSB is set to 2dB. Other values are not supported.
         OK. Thank you very much.



    >>A2. The gain code values in the TX-LUT will get updated every time calibration is run (every second or whenever calibration is manually triggered). Likely these should not need to be manually set. as they should be automatically updated.

         Yes. Tx-LUT determination is done automatically at every calibration, but I feel that accuracy of Tx-LUT for 80°C to 100°C is not good.
         So I am asking because I wanted to know if there is a problem with setting Tx-LUT later.



    >>For more info on smoothing the jumps in RX gain, please see section 4 of the following app note.
         Thank you very much. I'll read.



    Best Regards,
    Morimoto

  • Morimoto-san,

    I understand the questions better now. Please give me a few more days to find the answer for TX-LUT.

    Regards,

    Jackson

  • Hi Morimoto-san,

    Unfortunately I don't have more info for you. For 6843 you can modify the TX LUT if the calibration jump is too much, but there is not an equation for this value.

    Regards,

    Jackson

  • Sorry for late reply. 

    And ok. Tx LUT seems to be difficult to control, so I'll look for another way.

    Best Regards,

    Thank you very much.

    Morimoto