IWR6243: IWR6243 boot time calibration

Part Number: IWR6243

Tool/software:

Hi,

When calling the rlRfInit(deviceMap) function at the boot-time during the MMWave_openLink() process for cascade devices in the IWR6243, does the front-end trigger the rfInit() function sequentially (non-overlapping) for each device in the cascade sensor to prevent mutual interference between the RF devices? In my code, the deviceMap essentially represents the bitmap of both the master and slave devices that are enabled.

Also, when I call the rlRfCalibDataStore() API to store the calibration data after the rfInit() process, I receive total 672 bytes of calibration data in three chunks. My question is whether this calibration data represents solely to the master device or is a composite of both the master and slave devices on IWR6243.

I am trying to implement this cascade coherency and phase shifter calibration process as explained in this pdf by TI:
https://www.ti.com/lit/an/spracv2/spracv2.pdf

Does TI already provide the implementation of this process somewhere in any SDK?

Regards,

Attiya

  • Hello.

    Apologies for the delay in response; I am looking into this and will provide an update by the end of the day tomorrow.

    Sincerely,

    Santosh

  • Hello.

    Apologies for the delay as I looked into this issue.

    When calling the rlRfInit(deviceMap) function at the boot-time during the MMWave_openLink() process for cascade devices in the IWR6243, does the front-end trigger the rfInit() function sequentially (non-overlapping) for each device in the cascade sensor to prevent mutual interference between the RF devices? In my code, the deviceMap essentially represents the bitmap of both the master and slave devices that are enabled.

    It will be sequentially as the controller(master) is initialized first and then the peripheral(slave) device is initialized afterwards.

    Also, when I call the rlRfCalibDataStore() API to store the calibration data after the rfInit() process, I receive total 672 bytes of calibration data in three chunks. My question is whether this calibration data represents solely to the master device or is a composite of both the master and slave devices on IWR6243.

    I believe it is for both the controller and peripheral devices, and you would receive them from the corresponding device as there is no data communication outside of the sync signals and synthesizer pulse between the controller and peripheral devices.

    Sincerely,

    Santosh

  • Hi Santosh,

    Thank you for your detailed response.

    On page 6 of the PDF I shared earlier, it states:

    "The RF INIT calibrations can be triggered sequentially (non-overlapping) for the devices in the cascade sensor to prevent mutual interference from corrupting the RF INIT calibrations. The relevant messages for enabling and triggering various calibrations are AWR RF INIT CALIBRATION CONF SB and AWR RF INIT SB. The RF INIT calibration frequency can be managed using AWR CAL MON FREQUENCY LIMITS SB. Once each AWR device in the cascade completes its RF INIT calibrations, it is recommended that the host fetches each device’s calibration data and stores it in nonvolatile memory."

    On page 11 of the same PDF, it states:

    "At the time of power up in the field, the host processor in the sensor may restore each device to the same RF INIT calibration state as at the customer factory. This can be done using the following procedure. It has slight deviations from the normal RF INIT call and start up sequence.

    1. Restore the RF INIT calibration results from the sensor’s non-volatile memory for each device. "

    As you mentioned, the calibration data (672 bytes) is a composite of both Master and Slave devices. However, I am unsure how to retrieve calibration data for each individual device as said in the PDF. Could you explain it more?

    My current understanding is that I can call rfInit() twice, enabling the deviceMap for one device at a time, which would give two calibration data vectors of 672 bytes each. However, I am uncertain about how to restore both of these calibration vectors in-field.

    In the existing mmWave source code, I noticed that rlRfCalibDataRestore() is called only once, with the deviceMap enabled for both devices. Should I call the rlRfCalibDataRestore() API twice to restore both stored calibration vectors separately?

    Attiya

  • Hello.

    I would like to make one correction; I believe that the 672 bytes is actually for one device.  In the comments for the rlRfCalibDataRestore() it mentions that it sends all 3 chunks of the 224 bytes to the radar device, therefore the 672 bytes it would be only for the one device.

    The process you mentioned of calling rfInit twice, once for each device and then using the restore API using the correct deviceMap should achieve what you are looking to do?  Have you tried this and is it not working?

    Sincerely,

    Santosh

  • Thank you for the reply. No, I havent tried it yet. I will implement it and get back to you if I face any issues.

    Attiya