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.

IWR6843AOPEVM: The IWR6843AOPEVM: Setting the loopNum parameter under frameCfg in the profile.cfg file to 1 results in inability to collect data, and it can only work when set to 16!

Part Number: IWR6843AOPEVM
Other Parts Discussed in Thread: MMWAVEICBOOST, DCA1000EVM, IWR6843AOP

Tool/software:

Operating Environment: IWR6843AOPEMV + MMWAVEICBOOST + DCA1000EVM + Windows 10

Objective: To control the DCA1000EVM via Python scripts to operate the IWR6843AOPEMV mmWave radar for data acquisition using CLI commands.

Files: Two configuration files, cf.json and profile.cfg, are used as follows:

{
  "DCA1000Config": {
    "dataLoggingMode": "raw",
    "dataTransferMode": "LVDSCapture",
    "dataCaptureMode": "ethernetStream",
    "lvdsMode": 2,
    "dataFormatMode": 3,
    "packetDelay_us": 25,
    "ethernetConfig": {
      "DCA1000IPAddress": "192.168.33.180",
      "DCA1000ConfigPort": 4096,
      "DCA1000DataPort": 4098
    },
    "ethernetConfigUpdate": {
      "systemIPAddress": "192.168.33.30",
      "DCA1000IPAddress": "192.168.33.180",
      "DCA1000MACAddress": "12.34.56.78.90.12",
      "DCA1000ConfigPort": 4096,
      "DCA1000DataPort": 4098
    },
    "captureConfig": {
      "fileBasePath": "data",
      "filePrefix": "adc_data",
      "maxRecFileSize_MB": 1024,
      "sequenceNumberEnable": 1,
      "captureStopMode": "infinite",
      "bytesToCapture": 4000,
      "durationToCapture_ms": 180000,
      "framesToCapture": 12000
    },
    "dataFormatConfig": {
      "MSBToggle": 0,
      "laneFmtMap": 0,
      "reorderEnable": 1,
      "dataPortConfig": [
        {
          "portIdx": 0,
          "dataType": "complex"
        },
        {
          "portIdx": 1,
          "dataType": "complex"
        },
        {
          "portIdx": 2,
          "dataType": "complex"
        },
        {
          "portIdx": 3,
          "dataType": "complex"
        },
        {
          "portIdx": 4,
          "dataType": "complex"
        }
      ]
    }
  }
}

The content of profile.cfg for controlling the IWR6843AOPEMV:

% ***************************************************************
% Created for SDK ver:03.06
% Created using Visualizer ver:3.6.0.0
% Frequency:60
% Platform:xWR68xx_AOP
% ***************************************************************
sensorStop
flushCfg

% 1:frame based chirps, 2:continuous chirp, 3:adv frame config [1/3]
dfeDataOutputMode 1

%* <rxChanEn><TxChanEn><0(cascading)>[15][x][0]
channelCfg 15 7 0

%* <numADCBits 0:12bit,1:14bit,2:16bit>[2]
% <adcOutputFmt 0:real,1:complex1,2:complex2>[1/2]
adcCfg 2 1

%* <subFrameIdx>[-1]
% <adcOutFmt 0:Complex,1:Real>[0]
% <sampleSwap 0:I in LSB Q in MSB,1 otherwise>[1]
% <ChanInterleave 0:Interleaved,1:NonItl>[1]
% <ChirpThreshold..MUST be 1 for LVDS>[1]
adcbufCfg -1 0 1 1 1

% ===========================================================================

%* <profID> <startFreq:GHz> <ideleTime:us> <adcStartTime:us>
% <rampEndTime:us> <txOutPower>[0] <txPhaseShift>[0]
% <freqSlopeConst:MHz/us> <txStartTime:us> <numAdcSample>
% <digOutSampleRate:ksps>
% <hpfCornerFreq1 0:175KHz,1:235,2:350,3:700>
% <hpfCornerFreq2 0:350KHz,1:700,2:1400,3:2800>
% <rxGain>
profileCfg 0 60 7 6 60 0 0 64.985 1 256 5000 0 0 48

%* <startIdx> <endIdx> <profID>
% <startFreqVar>[0] <freqSlopeVar>[0] <idleTimeVar>[0]
% <AdcStartTimeVar>[0] <txEnableMask>
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
chirpCfg 2 2 0 0 0 0 0 4

%* <startIdx> <endIdx>
% <loopNum> <frameNum> <framePerio:ms>
% <trigSel 1:Software,2:Hardware>[1] <frameTrigDelay:ms>
frameCfg 0 2 16 12000 5 1 0

% ===========================================================================

%* <Ignored>[0] <AdcMode 0:Regular,1:LP Mode>
lowPower 0 0

% <subFrameIdx For Demo Visualizer,streamed on UART not LVDS>[-1]
% <detectedObj 0:disable,1:enable Point Cloud&side info,2:enable PC>
% <logMagRange 0:disable,1:enable>
% <noiseProf 0:disable,1:enable>[0]
% <rangeAziHeatmap 0,1>[0]
% <rangeDFSHeatmap 0,1>[0]
% <stasInfo 0,1>[0]
guiMonitor -1 1 1 0 0 0 1

% Must be two lines
% <subFrameIdx> <procDirection> <mode> <noiseWin>
% <guardLen> <divShift> <cyclic mode or Wrapped around mode> <Threshold scale> <Peak grouping>
cfarCfg -1 0 2 8 4 3 0 15.0 1
cfarCfg -1 1 0 4 2 3 1 15.0 1

% <subFrameIdx> <Feature Enabled> <threshold>[0]
multiObjBeamForming -1 1 0.5

% <subFrameIdx> <Enable static clutter removal technique>[0]
clutterRemoval -1 0

% <subFrameIdx> <Enable DC removal using first few chirps>[0] 
% <negativeBinIdx> <positiveBinIdx> <numAvg>
calibDcRangeSig -1 0 -5 8 256

% <subFrameIdx> <Enable velocity disambiguation technique>[0]
extendedMaxVelocity -1 0

% <subFrameIdx> <enabled>[0] <chirp0Idx> <chirp1Idx>
% bpmCfg -1 0 0 1

%* <subFramIdx>[-1] <enableHeader 0,1>[0]
% <dataFmt 0:HW disable,1:ADC,2:CP_ADC_CQ>[1] <enableSW 0,1>[0]
lvdsStreamCfg -1 0 1 0

% <rangeBias> <I/Q Bias compen for 3Tx*4Rx>
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

% <disable compRangeBiasAndRxChanPhase>[0] <targetDistance> <searchWin>
measureRangeBiasAndRxChanPhase 0 1.5 0.2

% <profile> <satMonSel> <priSliceDuration> <numSlices> <rxChanMask>
CQRxSatMonitor 0 3 5 121 0

% <profile> <numSlices> <numSamplePerSlice>
CQSigImgMonitor 0 127 4

% <disable CQRxSatMonitor 0,1>[0] <disable CQSigImgMonitor 0,1>[0]
analogMonitor 0 0

% <subFrameIdx>[-1] <minAzimuthDeg> <maxAzimuthDeg>
% <minElevationDeg> <maxElevationDeg>
aoaFovCfg -1 -90 90 -90 90

% <subFrameIdx>[-1] <0:range,1:Doppler>
% <min> <max>
cfarFovCfg -1 0 0 8.92
cfarFovCfg -1 1 -1 1.00

% <save enable> <restore enable> <Flash offset>
calibData 0 0 0

sensorStart

Question:

In the profile.cfg file, I have set the frameCfg parameter as follows:

frameCfg 0 2 16 12000 5 1 0

When loopNum is set to 16, the mmWave radar can be started to collect data. However, when I set loopNum to 1, it fails to collect any data, using the following configuration:

frameCfg 0 2 1 12000 5 1 0

However, in Wmare Studio, I am able to set the "No of Chirp Loops" to 1, which corresponds to the loopNum in frameCfg. In Wmare Studio, I can successfully acquire data, but when using CLI commands controlled by a Python script, I am unable to collect data.

Is there a parameter that is not configured correctly? Or is it not supported to set loopNum to 1?

  • Hi,

    Are you able to set it to 2? I wonder if there's an interrupt or something that doesn't trigger when it's set to 1.

    Best,

    Nate

  • I have tried to set it to 2 before, but I couldn't collect any data. Besides, I observed that the data collection light on the top left corner of DAC1000EVM didn't flash.

  • So neither setting it to 1 or 2 works? If that is the case, how about setting it to 4 or 8?

    I want to confirm too that you're referring to the mmWave studio software. Is that accurate? If so, what version are you using? How are you sending it .json commands?

    Best,

    Nate

    1. When the loopNum is set to a value between 1 and 8, the mmWave radar fails to collect data. However, when the value is set to a number between 9 and 32, the mmWave radar is able to collect data.

    2. I did not use the mmWave studio software to collect data. Instead, I utilized Python scripts to run DCA1000EVM_CLI_Control.exe and DCA1000EVM_CLI_Record.exe on Windows 10 to gather mmWave radar data. The Python scripts transmit configuration files such as cf.json and profile.cfg to DCA1000 and IWR6843AOP.

    3. I have recorded a video showcasing the on-site process of collecting mmWave radar data, along with modifications to the loopNum configuration parameter. Please refer to the video for detailed information.
      mmware_sdk_collect_data.mp4

  • Hi,

    We cannot support these tools in the way you're using them. I would recommend you use mmwave studio, or simply discard the first 8 samples, and collect 9 each time.

    Best,

    Nate