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.

IWR6843AOP: Phase saturation problem

Part Number: IWR6843AOP

Hello,

I have made some measurements with IWR6843AOP, and I get some strange spikes in some frames in the range Doppler map, I attached two figures, one for a normal RD map and the second is the strange one. AS you can see in the phase stability across chirps plot, the second plot have a phase saturation of some chirps.

The radar is attached to the ceiling (2.5m from the floor).

So I think the problem is strongly related to phase saturation which maybe comes from some interference in the setup or because the distance to the floor is too close to the radar. 

Would you please give me more insights about this phase saturation problem and any possible ways for a solution?

Kind regards

Reda

  • Hello Reda,

    Is there any chirp or profile configuration difference between these two measurements of yours? I'm just trying to understand if this happens randomly or is tied to a specific configuration.

    Regards,

    Ishita

  • Hello Ishita,

     The attached pictures are screenshots of the same measurement in different frames. It is the same chirp configuration, I tried with other chirp configuration but still had the same problem.

    Regards

    Reda

  • Just to give you more information, this is the lua script used for data collection:


    -- define some variables
    -- FramecConfig
    CHIRP_LOOP = 100 --default 32 loops --max of 255 (for 256 loops [0-255])
    FRAME_PERIOD = 50 --default 100ms
    FRAME_COUNT = 800 -- infite count is 0

    --BSS and MSS firmware download
    info = debug.getinfo(1,'S');
    file_path = (info.source);
    file_path = string.gsub(file_path, "@","");
    file_path = string.gsub(file_path, "DataCapture_Official.lua","");
    fw_path = file_path.."..\\..\\rf_eval_firmware"

    -- Manually specify partId
    partId = 6843

    --ADC_Data file path
    -- data_path = file_path.."..\\PostProc\\adcCapture_5"
    --adc_data_path = data_path.."\\adc_data.bin"
    -- adc_data_path = data_path.."\\meas_x.bin"
    -- adc_data_path = data_path.."\\recon_asc1.bin"

    -- 19May2021
    data_path = file_path.."..\\PostProc\\adcCapture"
    adc_data_path = data_path.."\\test2x.bin"

    -- -- Download Firmware

    -- -- Download BSS Firmware

    -- -- Download MSS Firmware

    -- -- SPI Connect

    -- -- RF Power UP

    -- -------------does reconfiguration start from here?

    -- StaticConfig Tab
    -- if (ar1.ChanNAdcConfig(1, 1, 0, 1, 1, 1, 1, 2, 1, 0) == 0) then -- default
    if (ar1.ChanNAdcConfig(1, 1, 1, 1, 1, 1, 1, 2, 1, 0) == 0) then --asc
    WriteToLog("ChanNAdcConfig Success\n", "green")
    else
    WriteToLog("ChanNAdcConfig failure\n", "red")
    end

    if (partId == 1642) then
    if (ar1.LPModConfig(0, 1) == 0) then
    WriteToLog("LPModConfig Success\n", "green")
    else
    WriteToLog("LPModConfig failure\n", "red")
    end
    else
    if (ar1.LPModConfig(0, 0) == 0) then
    WriteToLog("Regualar mode Cfg Success\n", "green")
    else
    WriteToLog("Regualar mode Cfg failure\n", "red")
    end
    end

    if (ar1.RfInit() == 0) then
    WriteToLog("RfInit Success\n", "green")
    else
    WriteToLog("RfInit failure\n", "red")
    end

    RSTD.Sleep(1000)

    -- DataConfig Tab
    if (ar1.DataPathConfig(1, 1, 0) == 0) then
    WriteToLog("DataPathConfig Success\n", "green")
    else
    WriteToLog("DataPathConfig failure\n", "red")
    end

    if (ar1.LvdsClkConfig(1, 1) == 0) then
    WriteToLog("LvdsClkConfig Success\n", "green")
    else
    WriteToLog("LvdsClkConfig failure\n", "red")
    end

    if((partId == 1642) or (partId == 1843) or (partId == 6843)) then
    if (ar1.LVDSLaneConfig(0, 1, 1, 0, 0, 1, 0, 0) == 0) then
    WriteToLog("LVDSLaneConfig Success\n", "green")
    else
    WriteToLog("LVDSLaneConfig failure\n", "red")
    end
    elseif ((partId == 1243) or (partId == 1443)) then
    if (ar1.LVDSLaneConfig(0, 1, 1, 1, 1, 1, 0, 0) == 0) then
    WriteToLog("LVDSLaneConfig Success\n", "green")
    else
    WriteToLog("LVDSLaneConfig failure\n", "red")
    end
    end

    -- -- skip performing TestSource

    -- SensorConfig Tab
    if((partId == 1642) or (partId == 1843)) then
    if(ar1.ProfileConfig(0, 77, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 5000, 0, 0, 30) == 0) then
    WriteToLog("ProfileConfig Success\n", "green")
    else
    WriteToLog("ProfileConfig failure\n", "red")
    end
    elseif((partId == 1243) or (partId == 1443)) then
    if(ar1.ProfileConfig(0, 77, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 0, 30) == 0) then
    WriteToLog("ProfileConfig Success\n", "green")
    else
    WriteToLog("ProfileConfig failure\n", "red")
    end
    elseif(partId == 6843) then
    -- VCO_0: 0
    -- VCO_1: 131072
    -- if(ar1.ProfileConfig(0, 60.25, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 131072, 30) == 0) then
    if(ar1.ProfileConfig(0, 60.0, 100, 6, 50, 0, 0, 0, 0, 0, 0, 80, 0, 256, 6000, 0, 196608, 30) == 0) then --asc on VCO_0
    WriteToLog("ProfileConfig Success\n", "green")
    else
    WriteToLog("ProfileConfig failure\n", "red")
    end
    end

    -- ProfileConfig has been speficied in previous statements, but if needed (say if partId is not stated), uncomment follow statements
    -- if(ar1.ProfileConfig(0, 60.25, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 131072, 30) == 0) then
    -- WriteToLog("ProfileConfig Success\n", "green")
    -- else
    -- WriteToLog("ProfileConfig failure\n", "red")
    -- end

    -- if (ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 1, 0) == 0) then --default
    if (ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0) == 0) then -- asc.chirp0
    WriteToLog("ChirpConfig Success\n", "green")
    else
    WriteToLog("ChirpConfig failure\n", "red")
    end

    if (ar1.ChirpConfig(1, 1, 0, 0, 0, 0, 0, 0, 1, 0) == 0) then -- asc.chirp1
    WriteToLog("ChirpConfig Success\n", "green")
    else
    WriteToLog("ChirpConfig failure\n", "red")
    end

    if (ar1.ChirpConfig(2, 2, 0, 0, 0, 0, 0, 0, 0, 1) == 0) then -- asc.chirp2
    WriteToLog("ChirpConfig Success\n", "green")
    else
    WriteToLog("ChirpConfig failure\n", "red")
    end

    -- -- TestSource not performed
    -- ar1.DisableTestSource(0)
    -- if (ar1.EnableTestSource(1) == 0) then
    -- WriteToLog("Enabling Test Source Success\n", "green")
    -- else
    -- WriteToLog("Enabling Test Source failure\n", "red")
    -- end
    -- frameCfg 0 2 32 0 100 1 0
    -- if (ar1.FrameConfig(0, 0, 8, 128, 40, 0, 0, 1) == 0) then
    if (ar1.FrameConfig(0, 2, FRAME_COUNT, CHIRP_LOOP, FRAME_PERIOD, 0, 0, 1) == 0) then --asc -- infite frame count
    -- -- frameCount to be set to 0(infite frames) in deployement
    WriteToLog("FrameConfig Success\n", "green")
    else
    WriteToLog("FrameConfig failure\n", "red")
    end

    -- DCAConfig and DataCapture
    -- select Device type
    if (ar1.SelectCaptureDevice("DCA1000") == 0) then
    WriteToLog("SelectCaptureDevice Success\n", "green")
    else
    WriteToLog("SelectCaptureDevice failure\n", "red")
    end

    --DATA CAPTURE CARD API
    if (ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098) == 0) then
    WriteToLog("CaptureCardConfig_EthInit Success\n", "green")
    else
    WriteToLog("CaptureCardConfig_EthInit failure\n", "red")
    end

    --AWR12xx or xWR14xx-1, xWR16xx or xWR18xx or xWR68xx- 2 (second parameter indicates the device type)
    if ((partId == 1642) or (partId == 1843) or (partId == 6843)) then
    if (ar1.CaptureCardConfig_Mode(1, 2, 1, 2, 3, 30) == 0) then
    WriteToLog("CaptureCardConfig_Mode Success\n", "green")
    else
    WriteToLog("CaptureCardConfig_Mode failure\n", "red")
    end
    elseif ((partId == 1243) or (partId == 1443)) then
    if (ar1.CaptureCardConfig_Mode(1, 1, 1, 2, 3, 30) == 0) then
    WriteToLog("CaptureCardConfig_Mode Success\n", "green")
    else
    WriteToLog("CaptureCardConfig_Mode failure\n", "red")
    end
    end

    if (ar1.CaptureCardConfig_PacketDelay(25) == 0) then
    WriteToLog("CaptureCardConfig_PacketDelay Success\n", "green")
    else
    WriteToLog("CaptureCardConfig_PacketDelay failure\n", "red")
    end

    --Start Record ADC data
    ar1.CaptureCardConfig_StartRecord(adc_data_path, 1)
    RSTD.Sleep(1000)

    --Trigger frame
    ar1.StartFrame()
    -- RSTD.Sleep(5000)

    -- -- Stop Frame?? -- to send the command at the LUA shell
    -- ar1.StopFrame()

    -- --Post process the Capture RAW ADC data
    -- ar1.StartMatlabPostProc(adc_data_path)
    -- WriteToLog("Please wait for a few seconds for matlab post processing .....!!!! \n", "green")
    -- RSTD.Sleep(10000)
    -- --do post process manually
    -- --or enter ar1.StartMatlabPostProc(adc_data_path) in the Lua Shell

  • Hi Reda

    I've asked an expert to look into this query, please allow a few days for a response.

    Regards,

    AG

  • Hi, Reda:

    From the phase information, it seems that some chirp has a zero phase.  Can you check the ADC data for those chirps and see whether the data are zeros for that chirp or see anything strange regarding those chirps?  

    Best,

    Zigang

  • Hello Zigang,

    I checked the ADC data, indeed those chirps are equal to zero.

    Kind regards

    Reda

  • Hi, Reda:

    I was told that there is a DCA1000 bug that results in zero chirp from time to time.  At this point, we do not have a fix yet.  I would recommend you to remove the whole frame if this happens to some of the chirp in one frame. 

    Best,

    Zigang