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.

DCA1000EVM: About the phase of the IF signal

Part Number: DCA1000EVM
Other Parts Discussed in Thread: IWR1443BOOST, , IWR1443

Dear Engineer,

A steel water bottle was placed at a distance of about 60cm as the radar observation object, and the raw radar data were captured using IWR1443BOOST+DCA1000EVM+ MMWave Studio2.1.1.0.

After FFT is done for the raw data of each chirp, the range between water bottle and radar can be obtained in the frequency domain. The figure below is the result of FFT on the data of a chirp. Due to the range resolution, there are three points in the attachment at 65cm (63cm, 68cm, 73cm) :

Then I observed the phases of these three points, and found that their phases were unstable (theoretically speaking, the phase of a stationary target is stable and constant). The following three figures are the phase values of these three points from the first frame to the 10,000th frame respectively (the phases of these three points in each chirp are obtained by using atan2 function):

The next two files are chirp configuration and Frame configuration.

{
  "createdByVersion": "2.1.0",
  "createdOn": "2021-12-02T21:39:23.7773582+08:00",
  "configUsed": "E:\\adc_data\\test\\1443.mmwave.json",
  "captureHardware": "DCA1000",
  "DCA1000Config": {
    "dataLoggingMode": "raw",
    "dataTransferMode": "LVDSCapture",
    "dataCaptureMode": "ethernetStream",
    "packetSequenceEnable": 1,
    "packetDelay_us": 25
  },
  "mmWaveDevice": "iwr1443",
  "operatingFreq": 77,
  "mmWaveDeviceConfig": {
    "RS232COMPort": "COM15",
    "RS232BaudRate": "115200",
    "radarSSFirmware": "C:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\radarss\\xwr12xx_xwr14xx_radarss.bin",
    "masterSSFirmware": "C:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\masterss\\xwr12xx_xwr14xx_masterss.bin"
  },
  "capturedFiles": {
    "numFilesCollected": 1,
    "fileBasePath": "E:\\adc_data\\test",
    "files": [
      {
        "rawFileName": "adc_data_Raw_0.bin",
        "processedFileName": "adc_data.bin",
        "processedFileSummary": {
          "numZeroFillBytes": 0
        }
      }
    ]
  }
}
{
  "configGenerator": {
    "createdBy": "mmWaveStudio",
    "createdOn": "2021-12-02T19:55:06.8110913+08:00",
    "isConfigIntermediate": 1
  },
  "currentVersion": {
    "jsonCfgVersion": {
      "major": 0,
      "minor": 4,
      "patch": 0
    },
    "DFPVersion": {
      "major": 1,
      "minor": 2,
      "patch": 0
    },
    "SDKVersion": {
      "major": 3,
      "minor": 0,
      "patch": 0
    },
    "mmwavelinkVersion": {
      "major": 1,
      "minor": 2,
      "patch": 0
    }
  },
  "lastBackwardCompatibleVersion": {
    "DFPVersion": {
      "major": 1,
      "minor": 1,
      "patch": 0
    },
    "SDKVersion": {
      "major": 2,
      "minor": 0,
      "patch": 0
    },
    "mmwavelinkVersion": {
      "major": 1,
      "minor": 1,
      "patch": 0
    }
  },
  "regulatoryRestrictions": {
    "frequencyRangeBegin_GHz": 77,
    "frequencyRangeEnd_GHz": 81,
    "maxBandwidthAllowed_MHz": 4000,
    "maxTransmitPowerAllowed_dBm": 12
  },
  "systemConfig": {
    "summary": "This is a comments field not passed to device",
    "sceneParameters": {
      "ambientTemperature_degC": 20,
      "maxDetectableRange_m": 10,
      "rangeResolution_cm": 5,
      "maxVelocity_kmph": 26,
      "velocityResolution_kmph": 2,
      "measurementRate": 10,
      "typicalDetectedObjectRCS": 1
    }
  },
  "mmWaveDevices": [
    {
      "mmWaveDeviceId": 0,
      "rfConfig": {
        "waveformType": "legacyFrameChirp",
        "MIMOScheme": "TDM",
        "rlCalibrationDataFile": "",
        "rlChanCfg_t": {
          "rxChannelEn": "0xF",
          "txChannelEn": "0x1",
          "cascading": 0,
          "cascadingPinoutCfg": "0x0"
        },
        "rlAdcOutCfg_t": {
          "fmt": {
            "b2AdcBits": 2,
            "b8FullScaleReducFctr": 0,
            "b2AdcOutFmt": 2
          }
        },
        "rlLowPowerModeCfg_t": {
          "lpAdcMode": 0
        },
        "rlProfiles": [
          {
            "rlProfileCfg_t": {
              "profileId": 0,
              "pfVcoSelect": "0x0",
              "pfCalLutUpdate": "0x0",
              "startFreqConst_GHz": 77.0,
              "idleTimeConst_usec": 7.0,
              "adcStartTimeConst_usec": 5.0,
              "rampEndTime_usec": 57.0,
              "txOutPowerBackoffCode": "0x0",
              "txPhaseShifter": "0x0",
              "freqSlopeConst_MHz_usec": 59.9630012512207,
              "txStartTime_usec": 0.0,
              "numAdcSamples": 512,
              "digOutSampleRate": 10000,
              "hpfCornerFreq1": 0,
              "hpfCornerFreq2": 0,
              "rxGain_dB": "0x1E"
            }
          }
        ],
        "rlChirps": [
          {
            "rlChirpCfg_t": {
              "chirpStartIdx": 0,
              "chirpEndIdx": 0,
              "profileId": 0,
              "startFreqVar_MHz": 0.0,
              "freqSlopeVar_KHz_usec": 0.0,
              "idleTimeVar_usec": 0.0,
              "adcStartTimeVar_usec": 0.0,
              "txEnable": "0x1"
            }
          }
        ],
        "rlFrameCfg_t": {
          "chirpEndIdx": 0,
          "chirpStartIdx": 0,
          "numLoops": 1,
          "numFrames": 10000,
          "framePeriodicity_msec": 1.0,
          "triggerSelect": 1,
          "numDummyChirpsAtEnd": 0,
          "frameTriggerDelay": 0.0
        },
        "rlBpmChirps": [],
        "rlRfPhaseShiftCfgs": [],
        "rlRfProgFiltConfs": [],
        "rlLoopbackBursts": [],
        "rlDynChirpCfgs": [],
        "rlDynPerChirpPhShftCfgs": []
      },
      "rawDataCaptureConfig": {
        "rlDevDataFmtCfg_t": {
          "iqSwapSel": 0,
          "chInterleave": 0
        },
        "rlDevDataPathCfg_t": {
          "intfSel": 1,
          "transferFmtPkt0": "0x1",
          "transferFmtPkt1": "0x0",
          "cqConfig": 2,
          "cq0TransSize": 132,
          "cq1TransSize": 132,
          "cq2TransSize": 72
        },
        "rlDevLaneEnable_t": {
          "laneEn": "0xF"
        },
        "rlDevDataPathClkCfg_t": {
          "laneClkCfg": 1,
          "dataRate_Mbps": 600
        },
        "rlDevLvdsLaneCfg_t": {
          "laneFmtMap": 0,
          "laneParamCfg": "0x1"
        }
      },
      "monitoringConfig": {
      }
    }
  ],
  "processingChainConfig": {
    "detectionChain": {
      "name": "TI_GenericChain",
      "detectionLoss": 1,
      "systemLoss": 1,
      "implementationMargin": 2,
      "detectionSNR": 12,
      "theoreticalRxAntennaGain": 9,
      "theoreticalTxAntennaGain": 9
    }
  }
}

My question is: why are the phase values so confused and unstable? How do I get the correct phase value?

Best Regards,

kelong

  • Hi Kelong, 

    Have you performed phase/gain calibration before conducting these measurements?

    If not, please see:

    file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr18xx/mmw/docs/doxygen/html/index.htm

    Search for: "Range Bias and RX channel Gain/Phase Measurement and compensation"

    Regards,

    Brennan

  • Hi Brennan, 

    I installed mmWAVe_sdk_02_01_00_04 which I found and opened:

    file:///C:/ti/mmwave_sdk_02_01_00_04/packages/ti/demo/xwr14xx/mmw/docs/doxygen/html/index.html

    However, I did not see the search function bar in the webpage. How should I search the content you want me to search: Range Bias and RX channel Gain/Phase Measurement and compensation?

    Regards,

    Kelong

  • Hi Kelong, 

    Please look at the document in the current version of the SDK.  The Range Bias and RX Channel Gain/Phase measurement section in the document in SDK 2.1 redirects you to the same section in the most up to date version of the SDK, where you will find the information.

    There is no dedicated search function, either use ctrl+f or scroll the document until you reach that section.

    Regards,

    Brennan

  • Hi Brennan, 

    I downloaded and opened:

    file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr18xx/mmw/docs/doxygen/html/index.html

    And found the content as shown in the figure below: Range Bias and Rx Channel Gain/Phase Measurement and Compensation.

    According to this section, I found it:

    C:\ti\mmwave_sdk_03_05_00_04\packages\ti\demo\xwr18xx\mmw\profiles\profile_calibration.cfg

    profile_calibration.cfg

    However, I am sorry that I opened profile_receptor.cfg with notepad and didn't quite understand the contents.

    Also, I have a question: how do I use 'profile_calibration. cfg'?

    However, I am sorry that I opened profile_receptor.cfg with notepad and didn't quite understand the contents.

    Also, I have a question: how do I use profile_calibration. CFG?

    Can you see how I configure and use it?

    Best Regards,

    Kelong

  • Hi Kelong, 

    I have given you instructions on calibration for point-cloud data collection.  However, I see you are collecting raw ADC data using the DCA1000EVM.  Before trying the method mentioned in the Range Bias and RX Channel Gain/Phase section of the SDK document, please setup your configuration in mmWave studio as you previously did, and then perform the additional configurations mentioned in section 17 of the RadarStudio User Interface guide.

    You may also find Section 2 of these slides helpful in understanding how the signal phases are calculated:

    https://training.ti.com/sites/default/files/docs/mmwaveSensing-FMCW-offlineviewing_1.pdf

    Regards,

    Brennan

  • Hi Brennan,

    I think I'm a little confused, so let me just get my thoughts together.

    First, what I'm doing is using IWR1443BOOST+ mmwave studio 2.1.1.0 to capture the raw data and get adc_data.bin. All operations performed here in mmwave studio2.1.1.0 are guided by this page:

    e2echina.ti.com/.../dca1000evm

    Then I used MATLAB to parse adc_data.bin to get the complex matrix of samples*frames (here I set each frame to consist of only one chirp). The distance to the target can be obtained from the FFT of each column of the matrix. The function atan2() is then used to get the phase of the target. And then I found that the phase that I got was unstable.

    I have a few questions here:

    1. Is the 'phase calibration' step or operation performed on the hardware configuration, i.e. the radar, or in post-processing after the ADC data is captured? In other words, is' phase alignment 'simply a mathematical calculation that does not involve certain elements or circuits in the radar equipment?

    (1) In the process of radar capturing the original data, the radar carries out 'phase calibration', which may involve some components or circuits in IWR1443 or DCA1000EVM. In other words, every frame of data collected must be 'phase calibrated' by some circuit or component of the radar to obtain ADC data.

    (2) After the complete ADC data is captured, 'phase calibration' is carried out in post-processing, without involving any components or circuits.

    2. If the phase is calibrated on radar. Profile_calibration.cfg is required according to the SDK documentation. How to use it?

    As shown in the picture below, I don't quite understand the third and fifth steps. Does "start sensor with profile" mean you need to import this file when starting radar?

    3. In your most recent reply, you suggested that I do the configuration in the 'CalibConfig' interface after finishing the configuration in mmwave studio as usual, but I can't understand what these configuration items in the 'CalibConfig' interface mean. Descriptions in the guidance document software-dl.ti.com/.../mmwave_studio_user_guide.pdf  are too general and rough to be intuitively understood. I tried to match the contents of 'profile_practice.cfg' with the configuration items in the 'CalibConfig' interface, but failed. As shown in the two graphs below.

    4. 

    Would you please put it more simply? Since I was a complete newbie to TI millimeter wave radar, I couldn't read a lot of things.

    Best Regards,

    Kelong

  • My goal is simply to use IWR1443BOOST+DCA1000EVM+ MMWave Studio2.1.1.0 to get a clean, low-noise ADC signal. But I didn't get clean, low-noise ADC data by following the instructions

    e2echina.ti.com/.../dca1000evm

    It would be a great help if you could guide me on how to get clean ADC data.

  • Hi Kelong,

    (1, 2): These steps are for using the radar to gather point-cloud data.  This is collecting data without the DCA1000.  You want to collect Raw, ADC data using the DCA1000, so anything SDK related will not be applicable to your setup and application.  Disregard this for now.

    (3) Following the steps outlined in the user's guide, please select ALL boxes and click "set."  This will enable all calibrations to match with the calibration outlined in the SDK documentation mentioned in questions (1,2) in your previous reply:

    Then, in the LUA Shell tab on mmWave studio, copy and paste the command: ar1.SetCalMonTimeUnitConfig(1, 1, 0)

    This should ALL be done before capturing data.  Once you have gone through the setup and configuration of the device through mmWave studio as outlined in the user's guide, AND done the additional steps I have presented here, you will then be able to collect data and see improvement.

    Regards,

    Brennan

  • Hi Brennan,

    Thank you very much for your reply.

    I tried according to your reply. After setting 'Connection', 'StaticConfig', 'DataConfig' and 'CalibConfig' in MMWave Studio, Then input in the LUA Shell 'ar1. SetCalMonTimeUnitConfig (1, 1, 0)'. As shown in the two graphs below.

    The output value of my LUA Shell seems to be different from the value in your diagram, I don't know if there is a problem.

    However, two problems are encountered:

    1. "Time Unit Report Async Event received!" is displayed when all Settings are completed and data is captured. ', as shown below.

    I don't know what the reason is, can you help me analyze it? Here is the log.

    GM: Constructor
    GM: Tue Dec 14 17:49:46 2021
    RSTD.Transmit("/Settings")
    [17:49:47]  
    [17:49:47]  ### Running Startup script: "C:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Scripts\Startup.lua" ###
    [17:49:47]  RSTD.SetAndTransmit ("/Settings/Scripter/Display DateTime" , "1")
    [17:49:47]  RSTD.SetAndTransmit ("/Settings/Scripter/DateTime Format" , "HH:mm:ss")
    [17:49:47]  Scripter ignored: Attempt to UnBuild() again or before Build.
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 0/Dll" , "C:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\Clients\\\\LabClient.dll")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 0/Use" , "TRUE")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 1/Use" , "FALSE")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 2/Use" , "FALSE")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 3/Use" , "FALSE")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 4/Use" , "FALSE")
    [17:49:47]  RSTD.SetVar ("/Settings/AL Client/AL Dll" , "C:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\RunTime\\SAL.dll")
    [17:49:47]  RSTD.SetVar ("/Settings/Clients/Client 0/GuiDll" , "")
    [17:49:47]  RSTD.SetVar ("/Settings/AutoUpdate/Enabled" , "TRUE")
    [17:49:47]  RSTD.SetVar ("/Settings/AutoUpdate/Interval" , "1")
    [17:49:47]  RSTD.SetVar ("/Settings/Monitors/UpdateDisplay" , "TRUE")
    [17:49:47]  RSTD.SetVar ("/Settings/Monitors/OneClickStart" , "TRUE")
    [17:49:47]  RSTD.SetVar ("/Settings/Automation/Automation Mode" , "false")
    [17:49:47]  RSTD.Transmit("/")
    [17:49:47]  RSTD.SaveSettings(): Settings saved to "C:\Users\kelong\AppData\Roaming\RSTD\config.xml"
    [17:49:47]  RSTD.Build()
    [17:49:47]  RSTD.SaveSettings(): Settings saved to "C:\Users\kelong\AppData\Roaming\RSTD\config.xml"
    [17:49:47]  RSTD.Transmit("/")
    [17:49:47]  RSTD.AL_Build()
    [17:49:47]  RSTD.AL_LoadXml()
    [17:49:47]  RSTD.Transmit("/")
    [17:49:47]  RSTD.AL_Init()
    [17:49:47]  RSTD.Clients_Build()
    [17:49:47]  GM: Init
    [17:49:47]  GM: Loaded 'C:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Clients\\LabClient.dll'
    [17:49:47]  GM: 1 Guest (s) init
    [17:49:47]  GM: 1 Module(s) init
    [17:49:47]  GM: 2 Tab   (s) init
    [17:49:47]  RSTD.Client_LoadXml()
    [17:49:47]  [RadarAPI]: ar1.selectRadarMode(0)
    [17:49:47]  [RadarAPI]: Status: Passed
    [17:49:47]  Matlab Runtime Engine is installed
    [17:49:47]  [RadarAPI]: Starting Matlab Engine..
    [17:49:51]  [RadarAPI]: Matlab Engine Started!
    [17:49:52]  [RadarAPI]: ar1.selectCascadeMode(0)
    [17:49:52]  [RadarAPI]: Status: Passed
    [17:49:52]  [RadarAPI]: ar1.LoadSettings('C:\Users\kelong\AppData\Roaming\RSTD\ar1gui.ini')
    [17:49:53]  TESTING = false
    [17:49:53]  RstdNet: Port 2777: Listening..
    [17:49:53]  
    [17:49:53]  ***Script completed successfully.***
    [17:50:07]  [RadarAPI]: Opening Gpio Control Port()
    [17:50:07]  [RadarAPI]: Status: Passed
    [17:50:07]  [RadarAPI]: Opening Board Control Port()
    [17:50:07]  [RadarAPI]: Status: Passed
    [17:50:08]  [RadarAPI]: ar1.FullReset()
    [17:50:08]  [RadarAPI]: Status: Passed
    [17:50:09]  [RadarAPI]: Closing Board Control Port()
    [17:50:09]  [RadarAPI]: Status: Passed
    [17:50:09]  [RadarAPI]: Closing Gpio Control Port()
    [17:50:09]  [RadarAPI]: Status: Passed
    [17:50:09]  [RadarAPI]: ar1.SOPControl(2)
    [17:50:09]  [RadarAPI]: Status: Passed
    [17:50:10]  [RadarAPI]: ar1.Connect(4,115200,1000)
    [17:50:11]  [RadarAPI]: ar1.Calling_IsConnected()
    [17:50:12]  [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:50:12]  [RadarAPI]: Status: Passed
    [17:50:12]  [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:50:12]  [RadarAPI]: Status: Passed
    [17:50:12]  [RadarAPI]: ar1.deviceVariantSelection("XWR1443")
    [17:50:12]  [RadarAPI]: Status: Passed
    [17:50:12]  [RadarAPI]: ar1.frequencyBandSelection("77G")
    [17:50:12]  [RadarAPI]: ar1.SelectChipVersion("XWR1443")
    [17:50:12]  [RadarAPI]: Status: Passed
    [17:50:12]  Device Status : XWR1443/QM/SOP:2/ES:3
    [17:50:12]  [RadarAPI]: ar1.SaveSettings('C:\Users\kelong\AppData\Roaming\RSTD\ar1gui.ini')
    [17:50:14]  [RadarAPI]: ar1.DownloadBSSFw("C:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\radarss\\xwr12xx_xwr14xx_radarss.bin")
    [17:50:14]  [RadarAPI]: Downloading BSS Patch RPRC Binary..
    [17:50:22]  [RadarAPI]: ar1.GetBSSFwVersion()
    [17:50:22]  [RadarAPI]: BSSFwVersion:(02.00.00.01 (05/10/17))
    [17:50:23]  [RadarAPI]: ar1.GetBSSPatchFwVersion()
    [17:50:23]  [RadarAPI]: BSSPatchFwVersion:(01.02.05.02 (30/04/19))
    [17:50:24]  [RadarAPI]: ar1.DownloadMSSFw("C:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\masterss\\xwr12xx_xwr14xx_masterss.bin")
    [17:50:24]  [RadarAPI]: Downloading MSS RPRC Binary..
    [17:50:43]  [RadarAPI]: ar1.GetMSSFwVersion()
    [17:50:43]  [RadarAPI]: MSSFwVersion:(01.02.05.01 (12/07/19))
    [17:50:44]  [RadarAPI]: ar1.PowerOn(0, 1000, 0, 0)
    [17:50:44]  MSS power up done async event received!
    [17:50:44]  [RadarAPI]: Status: Passed
    [17:50:46]  [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:50:46]  [RadarAPI]: Status: Passed
    [17:50:46]  [RadarAPI]: ar1.SelectChipVersion("XWR1443")
    [17:50:46]  [RadarAPI]: Status: Passed
    [17:50:46]  Device Status : XWR1443/QM/SOP:2/ES:3
    [17:50:46]  [RadarAPI]: ar1.RfEnable()
    [17:50:46]  BSS power up done async event received!
    [17:50:46]  [RadarAPI]: Status: Passed
    [17:50:46]  [RadarAPI]: ar1.GetMSSFwVersion()
    [17:50:46]  [RadarAPI]: MSSFwVersion:(01.02.05.01 (12/07/19))
    [17:50:47]  [RadarAPI]: ar1.GetBSSFwVersion()
    [17:50:47]  [RadarAPI]: BSSFwVersion:(02.00.00.01 (05/10/17))
    [17:50:48]  [RadarAPI]: ar1.GetBSSPatchFwVersion()
    [17:50:48]  [RadarAPI]: BSSPatchFwVersion:(01.02.05.02 (30/04/19))
    [17:50:56]  [RadarAPI]: ar1.ChanNAdcConfig(1, 0, 0, 1, 0, 0, 0, 2, 2, 0)
    [17:50:56]  [RadarAPI]: Status: Passed
    [17:50:56]  [RadarAPI]: ar1.LPModConfig(0, 0)
    [17:50:56]  [RadarAPI]: Status: Passed
    [17:50:57]  [RadarAPI]: ar1.RfInit()
    [17:50:57]  RF Init async event received!
    [17:50:57]  [RadarAPI]: Time stamp, Temperture: 11441,29; APLL Status, Update: 1, 0; SynthVCO1 Status, Update: 1, 1; SynthVCO2 Status, Update: 1, 1; LODist Status, Update: 1, 1; RxADCDC Status, Update: 1, 1; HPFcutoff Status, Update: 1, 1; LPFcutoff Status, Update: 1, 1; PeakDetector Status, Update: 1, 1; TxPower Status, Update: 1, 1; RxGain Status, Update: 1, 1; TxPhase Status, Update: 0, 0; RxIQMM Status, Update: 1, 1; 
    [17:50:57]  [RadarAPI]: Status: Passed
    [17:51:01]  [RadarAPI]: ar1.DataPathConfig(513, 1216644097, 0)
    [17:51:01]  [RadarAPI]: Status: Passed
    [17:51:02]  [RadarAPI]: ar1.LvdsClkConfig(1, 1)
    [17:51:02]  [RadarAPI]: Status: Passed
    [17:51:03]  [RadarAPI]: ar1.LVDSLaneConfig(0, 1, 0, 0, 0, 1, 0, 0)
    [17:51:03]  [RadarAPI]: Status: Passed
    [17:51:48]  [RadarAPI]: ar1.ProfileConfig(0, 77, 7, 11, 65, 0, 0, 0, 0, 0, 0, 50.018, 0, 100, 2000, 0, 0, 30)
    [17:51:48]  [RadarAPI]: Status: Passed
    [17:51:49]  [RadarAPI]: ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
    [17:51:49]  [RadarAPI]: Status: Passed
    [17:51:50]  Test Source Already Disabled...!!!
    [17:51:50]  [RadarAPI]: ar1.DisableTestSource(0)
    [17:51:50]  [RadarAPI]: Status: Passed
    [17:51:50]  [RadarAPI]: ar1.FrameConfig(0, 0, 20000, 1, 1, 0, 0, 1)
    [17:51:50]  [RadarAPI]: Status: Passed
    [17:52:09]  [RadarAPI]: ar1.DisableMonitoringLogging(0)
    [17:52:09]  [RadarAPI]: Status: Passed
    [17:52:09]  [RadarAPI]: ar1.SetCalMonTimeUnitConfig(1, 1, 0)
    [17:52:09]  [RadarAPI]: Status: Passed
    [17:52:11]  [RadarAPI]: ar1.RfInitCalibConfig(1, 1, 1, 1, 1, 1, 1, 65537)
    [17:52:11]  [RadarAPI]: Status: Passed
    [17:52:13]  [RadarAPI]: ar1.RunTimeCalibConfTrig(1, 1, 1, 1, 1, 1, 1, 1, 25, 0, 0)
    [17:52:14]  [RadarAPI]: Status: Passed
    [17:52:23]  [RadarAPI]: ar1.GetCaptureCardDllVersion()
    [17:52:23]  [RadarAPI]: Sending dll_version command to DCA1000
    [17:52:23]  [RadarAPI]: 
    [17:52:23]  DLL Version : 1.0
    [17:52:23]  [RadarAPI]: ar1.SelectCaptureDevice("DCA1000")
    [17:52:23]  [RadarAPI]: Status: Passed
    [17:52:26]  [RadarAPI]: ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098)
    [17:52:26]  [RadarAPI]: ar1.CaptureCardConfig_Mode(1, 1, 1, 2, 3, 30)
    [17:52:26]  [RadarAPI]: ar1.CaptureCardConfig_PacketDelay(25)
    [17:52:27]  [RadarAPI]: Sending fpga command to DCA1000
    [17:52:27]  [RadarAPI]: 
    [17:52:27]  FPGA Configuration command : Success
    [17:52:27]  [RadarAPI]: Sending record command to DCA1000
    [17:52:27]  [RadarAPI]: 
    [17:52:27]  Configure Record command : Success
    [17:52:27]  [RadarAPI]: ar1.GetCaptureCardFPGAVersion()
    [17:52:27]  [RadarAPI]: Sending fpga_version command to DCA1000
    [17:52:27]  [RadarAPI]: 
    [17:52:27]  
    [17:52:27]  FPGA Version : 2.8 [Record]
    [17:52:27]  
    [17:52:31]  [RadarAPI]: ar1.CaptureCardConfig_StartRecord("E:\\adc_data\\test_3\\back_data.bin", 1)
    [17:52:31]  [RadarAPI]: Sending start_record command to DCA1000
    [17:52:36]  [RadarAPI]: ar1.StartFrame()
    [17:52:36]  [RadarAPI]: Status: Passed
    [17:52:36]  Frame start async event received!
    [17:52:36]  Time Unit report async event received!
    [17:52:56]  [RadarAPI]: Frame Ended
    [17:52:58]  [RadarAPI]: 
    [17:52:58]  Frame End async event received!
    [17:52:58]  [RadarAPI]: 
    [17:52:58]  Start Record command : Success
    [17:52:58]  
    [17:52:58]  Record is completed
    [17:52:58]  
    [17:52:58]  Record stop is done successfully
    [17:53:04]  [RadarAPI]: ar1.StartMatlabPostProc("E:\\adc_data\\test_3\\back_data.bin")
    [17:53:04]  [RadarAPI]: No of files Captured: 1, Total no of frames for each device : 20000
    [17:53:53]  RSTD.ShowLogFile()
    

    2. I compared the results with and without the operation you suggested and found no significant difference. The following two diagrams show the phase of the same stationary object in both cases. 'Calibration' doesn't seem to work?

    Best Regards,

    Kelong

  • Hi Kelong, 

    Please see the following slides on the phase of an IF signal, starting on slide 20:

    https://training.ti.com/sites/default/files/docs/mmwaveSensing-FMCW-offlineviewing_1.pdf

    This should give you a good idea of how the radar does phase calculations, and the different variables and factors that can affect the phase calculation.  It appears you may be dealing with what slide 22 discusses.

    Regards,

    Brennan