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.

MMWCAS-RF-EVM: Inconsistent behavior of MMWCAS-RF-EVM / MMWCAS-DSP compared to IWR6843

Part Number: MMWCAS-RF-EVM
Other Parts Discussed in Thread: IWR6843, TDA2

I have been testing the MMWAVCAS-RF which I found to be producing very strange results. Therefore, I compared it in a similar scenario to the IWR6843 to evaluate and compare results. IWR6843 has always provided measurement results as expected by theory.. This is not the case with the cascaded system. 

Attached you can find a small presentation I setup for more detailed explanation of the measurements. Hereby I provide a brief overview. I would like to share my observations with you and ask for your support of how to fix or exchange the part since I believe that it is faulty. 

Measurement description: 

The radar sensor, either IWR6843 or MMW-RF-CAS is placed on a sliding platform which moves horizontally and tangentially to the target,  with tangential length of 60cm. A measurement is performed with one standard trihedral corner reflector with rib length of 5cm at various distances. First at 0.2m and then at 0.6m, measured when target is straight against the sensor. The sensor is aligned in the vertical dimension as the target center is aligned to the midpoint of the Tx and Rx antenna. The raw data is Fourier transformed and the resulting range profiles are stacked next to each other in order to form a two dimensional image, where range profiles are plotted as a function of time. The chirp parameters for both devices are set to be the same, with the only difference that the cascaded system transmits in the MIMO mode(as provided by the lua script) ,while the IWR transmits with only one transmitter. RAM is placed on the wall behind the target. 

The theoretical expectation is to observe a smooth curved line due to the range migration of the target and the tangential motion. This is the case for the IWR6843 but not with the cascaded system. 

Report MMWAV-CAS.pptx

  • Hi,

               It appears the observed results are similar, however the data captured on the Cascade setup because of frame loss is not that smooth in plot as 6843. For the frame drop can you please try lowering the data rate from 600Mbps to 450Mbps.

    Regards

  • Hello Abhed, 

    Sorry but I cannot be convinced how the data is similar, as first of all the reflected power appears to be much lower, in the order of the magnitude of the RAM placed behind the corner reflector. Secondly, there is about 5% data loss, so only a few of the samples shall be disrupted but in the images you can see that this is not the case at all. 

    Finally, I made those measurements with 225Mbps data rate as indicated in other forum entries and in the documentation but this does not change anything in terms of data loss..In this case this is also the lowest sampling rate - 2MHz, so I still do not understand why data loss would occur. Therefore, my conclusion is that there is some defect with the RF board or the data acquisition board. If you have some suggestions of what kind of measurement I can perform to be convinced that there is no problem within the hardware I would be happy to perform that. Otherwise, I would like to know what is the procedure to send back this hardware and exchange for a new one such that I can continue with my developments. 

  • Hi

    I was referring to the data capture speed at TDA2 side, to see if the frame loss gets reduced. Once you see that improvement you can be sure from the missing samples perspective that the observed behavior is not due to that.

  • Indeed the data capture speed on the TDA2 is set to 225Mbps through the lua shell script. For your reference hereby I send you an image, where I randomly remove 20% of the frames with the IWR6843 just to check what shall we see if random frame drops occur for that device. You can see the result below.. Therefore, I strongly doubt that this result is only due to the frame drops. 

  • Would you be able to support my issue.. Please have a look at my latest entry, where I show that the frame drops are probably not the problem... Any idea if I can setup a test or a measurement to make sure that everything is ok with the hardware? Otherwise, can you please advise me on a return and exchange procedure? 

  • Hi,

    Please clarify below points.

    1. Are you using studio in both the cases? What is the ADC mode being config in both?

    2. Have you tried using single TX on Primary/master device making it exactly same config as 6843?

    3. How do we see the amplitude difference between the two cases?
    Regards
  • Hi Abhed, 

    1. yes, I am using mmwave studio in both cases. In both cases I use complex 1x adc sampling mode. 

    2. Yes, I have tried using 1 transmitter and all receivers in the cascaded case. In that experiment I setup transmit from the master chip and receive all other channels at all chips. That means only one chirp per frame from the master. HOWEVER,  I that case I got an error - for some reason it is not possible to do that and you can only configure 2 or more chirps per frame from master chip, tx 0. 

    3. Please see the images below. In the plots on the left you see the results from the cascaded system, where the 2d images are the range profiles in linear scale and in the plots to the right are the cuts through the maximum power range bin, e.g., the one that corresponds to the real range of the target. In the plots you see in dB.

  • Hi,

    2. Can you please share a snapshot of the error?

    3. It still doesn't explain the amplitude difference. If we have an exact setup(TX and profile), measurement should match.

  • Hi, 

    I will share my answers on Monday, when I will make those measurements. One question regarding 2... There you mean to set the mmw-cas only with the master chip activated? 

  • Hi Abhed, 

    Unfortunately due to errors in studio I cannot replicate the measurement from the IWR6543 system on the MMW-CAS. Due to some reason the cascaded system cannot be set such that it sends only one chirp per frame. Attached you can find the lua shell script (disregard the Configure_Chirps function, the chirp config is around line 753) that I used in order to replicate the measurements and in the attached text file you can find the output of studio. hereby is the is the error itself also seen in the text file: 

    [13:23:23] Create Application Response from Capture Card timed out!!
    [13:23:23] TDA ARM Failed

    Apart from that I also tried to manually set the system through the GUI and trigger the data, but to no success, always the same error from above. 

    Furthermore, I tried to perform measurements with the same settings but using two identical chirps per frame, I add the second chirp as: 

    -- Chirp Configuration
    WriteToLog("Configuring chirps Started \n", "red")
    if (0 == ar1.ChirpConfig_mult(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)) then
    WriteToLog("Device 0 : Chirp 0 Configuration successful\n", "green")
    else
    WriteToLog("Device 0 : Chirp 0 Configuration failed\n", "red")
    return -4
    end

    if (0 == ar1.ChirpConfig_mult(1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0)) then
    WriteToLog("Device 0 : Chirp 1 Configuration successful\n", "green")
    else
    WriteToLog("Device 0 : Chirp 1 Configuration failed\n", "red")
    return -4
    end


    WriteToLog("Configuring chirps done\n", "red")

    That way I could record data but still I have files with different sizes for each measurement !??? which I really do not understand even though only one chip is recording data and the adc sampling rate is the lowest 2MHz? Why is the system not recording all data?

    Apart from that the processed results (below), when I use only the first of the two chirps, which is the closest I can get compared to the IWR system setting. 

    --[[
    Sequence being followed
    
    A. CONFIGURATION
    1. Connecting to TDA
    1. Configuring Master from SOP till Channel Config
    2. Configuring Slave (i) sequentially from SOP till SPI Connect. i = 1, 2, 3
    3. Configuring Slaves together from F/W download till Channel Config
    4. Configuring all devices together from LDO Bypass till Frame Config
    
    NOTE:
    Update the following in the script accordingly before running
    1. metaImage F/W path on line 32
    2. TDA Host Board IP Address on line 39
    --]]
        
    ----------------------------------------User Constants--------------------------------------------
           
    dev_list          =    {1, 2, 4, 8}       -- Device map
    RadarDevice       =    {1, 0, 0, 0}       -- {dev1, dev2, dev3, dev4}, 1: Enable, 0: Disable
    cascade_mode_list =    {1, 2, 2, 2}       -- 0: Single chip, 1: Master, 2: Slave
    
    -- F/W Download Path
    
    -- Uncomment the next line if you wish to pop-up a dialog box to select the firmware image file
    -- Otherwise, hardcode the path to the firmware metaimage below
    -- By default, the firmware filename is: xwr22xx_metaImage.bin
    
    -- metaImagePath  =   RSTD.BrowseForFile(RSTD.GetSettingsPath(), "bin", "Browse to .bin file")
    -- For 2243 ES1.1 devices
    metaImagePath            =   "C:\\ti\\mmwave_dfp_02_02_03_01\\firmware\\xwr22xx_metaImage.bin"
    -- For 2243 ES1.0 devices
    -- metaImagePath            =   "C:\\ti\\mmwave_dfp_02_02_00_02\\firmware\\xwr22xx_metaImage.bin"
    
    -- IP Address for the TDA2 Host Board
    -- Change this accordingly for your setup
    
    TDA_IPAddress     =   "192.168.33.180"
    
    -- Device map of all the devices to be enabled by TDA
    -- 1 - master ; 2- slave1 ; 4 - slave2 ; 8 - slave3
    
    deviceMapOverall  =   RadarDevice[1] + (RadarDevice[2]*2) + (RadarDevice[3]*4) + (RadarDevice[4]*8)
    deviceMapSlaves   =   (RadarDevice[2]*2) + (RadarDevice[3]*4) + (RadarDevice[4]*8)
    
    -- Enable/Disable Test Source
    -- This is useful during bringup
    
    test_source_enable  =   0      -- 0: Disable, 1: Enable
        
    ------------------------------------------- Sensor Configuration ------------------------------------------------
    --[[
    The sensor configuration consists of 3 sections:
    1) Profile Configuration (common to all 4 AWR devices)
    2) Chirp Configuration (unique for each AWR device - mainly because TXs to use are 
                            different for each chirp)
    3) Frame Configuration (common to all 4 AWR devices, except for the trigger mode for the master)
    Change the values below as needed. --]]
    
    -- Profile configuration
    local profile_indx              =   0
    local start_freq                =   77     -- GHz
    local slope                     =   79     -- MHz/us
    local idle_time                 =   5      -- us
    local adc_start_time            =   6      -- us
    local adc_samples               =   128    -- Number of samples per chirp
    local sample_freq               =   4000   -- ksps
    local ramp_end_time             =   40     -- us
    local rx_gain                   =   48     -- dB
    local tx0OutPowerBackoffCode    =   0
    local tx1OutPowerBackoffCode    =   0
    local tx2OutPowerBackoffCode    =   0
    local tx0PhaseShifter           =   0
    local tx1PhaseShifter           =   0
    local tx2PhaseShifter           =   0
    local txStartTimeUSec           =   0
    local hpfCornerFreq1            =   0      -- 0: 175KHz, 1: 235KHz, 2: 350KHz, 3: 700KHz
    local hpfCornerFreq2            =   0      -- 0: 350KHz, 1: 700KHz, 2: 1.4MHz, 3: 2.8MHz
    
    -- Frame configuration    
    local start_chirp_tx            =   0
    local end_chirp_tx              =   0
    local nchirp_loops              =   1     -- Number of chirps per frame
    local nframes_master            =   5000     -- Number of Frames for Master
    local nframes_slave             =   5000     -- Number of Frames for Slaves
    local Inter_Frame_Interval      =   3   -- ms
    local trigger_delay             =   0      -- us
    local trig_list                 =   {1,2,2,2} -- 1: Software trigger, 2: Hardware trigger    
    
    --[[
    Function to configure the chirps specific to a device
    12 chirps are configured below, individually for each AWR device
    
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    |       | Dev 1 | Dev 1 | Dev 1 | Dev 2 | Dev 2 | Dev 2 | Dev 3 | Dev 3 | Dev 3 | Dev 4 | Dev 4 | Dev 4 |
    | Chirp |  TX0  |  TX1  |  TX2  |  TX 0 |  TX1  |  TX2  |  TX0  |  TX1  |  TX2  |  TX0  |  TX1  |  TX2  |
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |
    |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |
    |     2 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |
    |     3 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |
    |     4 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |
    |     5 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |
    |     6 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     7 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     8 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     9 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |    10 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |    11 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    --]] 
    -- Note: The syntax for this API is:
    -- ar1.ChirpConfig_mult(RadarDeviceId, chirpStartIdx, chirpEndIdx, profileId, startFreqVar, 
    --                      freqSlopeVar, idleTimeVar, adcStartTimeVar, tx0Enable, tx1Enable, tx2Enable)
    
    function Configure_Chirps(i) 
        
        if (i == 1) then
                
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
            
        elseif (i == 2) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
                
        elseif (i == 3) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
                
        elseif (i == 4) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
            
        end
    
    end
     
    ------------------------------ API Configuration ------------------------------------------------
        
    -- 1. Connection to TDA. 2. Selecting Cascade/Single Chip.  3. Selecting 2-chip/4-chip
    
    WriteToLog("Setting up Studio for Cascade started..\n", "blue")
    
    if(0 == ar1.ConnectTDA(TDA_IPAddress, 5001, deviceMapOverall)) then
        WriteToLog("ConnectTDA Successful\n", "green")
    else
        WriteToLog("ConnectTDA Failed\n", "red")
        return -1
    end
    
    if(0 == ar1.selectCascadeMode(1)) then
        WriteToLog("selectCascadeMode Successful\n", "green")
    else
        WriteToLog("selectCascadeMode Failed\n", "red")
        return -1
    end
    
    WriteToLog("Setting up Studio for Cascade ended..\n", "blue")
             
    --Master Initialization
    
    -- SOP Mode Configuration
    if (0 == ar1.SOPControl_mult(1, 4)) then
        WriteToLog("Master : SOP Reset Successful\n", "green")
    else
        WriteToLog("Master : SOP Reset Failed\n", "red")
        return -1
    end
    
    -- SPI Connect
    if (0 == ar1.PowerOn_mult(1, 0, 1000, 0, 0)) then
        WriteToLog("Master : SPI Connection Successful\n", "green")
    else
        WriteToLog("Master : SPI Connection Failed\n", "red")
        return -1
    end
    
    -- Firmware Download. (SOP 4 - MetaImage)
    if (0 == ar1.DownloadBssFwOvSPI_mult(1, metaImagePath)) then
        WriteToLog("Master : FW Download Successful\n", "green")
    else
        WriteToLog("Master : FW Download Failed\n", "red")
        return -1
    end
    
    -- RF Power Up
    if (0 == ar1.RfEnable_mult(1)) then
        WriteToLog("Master : RF Power Up Successful\n", "green")
    else
        WriteToLog("Master : RF Power Up Failed\n", "red")
        return -1
    end            
             
    -- Channel & ADC Configuration
    if (0 == ar1.ChanNAdcConfig_mult(1,1,0,0,1,1,1,1,2,1,0,0)) then
        WriteToLog("Master : Channel & ADC Configuration Successful\n", "green")
    else
        WriteToLog("Master : Channel & ADC Configuration Failed\n", "red")
        return -2
    end
        
    -- Slaves Initialization
       
    for i=2,table.getn(RadarDevice) do 
        local status    =    0                
        if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
          
            -- SOP Mode Configuration
            if (0 == ar1.SOPControl_mult(dev_list[i], 4)) then
                WriteToLog("Device "..i.." : SOP Reset Successful\n", "green")
            else
                WriteToLog("Device "..i.." : SOP Reset Failed\n", "red")
                return -1
            end
                    
            -- SPI Connect    
            if (0 == ar1.AddDevice(dev_list[i])) then
                WriteToLog("Device "..i.." : SPI Connection Successful\n", "green")
            else
                WriteToLog("Device "..i.." : SPI Connection Failed\n", "red")
                return -1
            end
               
        end
    end  
        
    -- Firmware Download. (SOP 4 - MetaImage)
    if (0 == ar1.DownloadBssFwOvSPI_mult(deviceMapSlaves, metaImagePath)) then
        WriteToLog("Slaves : FW Download Successful\n", "green")
    else
        WriteToLog("Slaves : FW Download Failed\n", "red")
        return -1
    end
             
    -- Channel & ADC Configuration
    --if (0 == ar1.ChanNAdcConfig_mult(deviceMapSlaves,1,1,1,1,1,1,1,2,1,0,2)) then
     --   WriteToLog("Slaves : Channel & ADC Configuration Successful\n", "green")
    --else
      --  WriteToLog("Slaves : Channel & ADC Configuration Failed\n", "red")
     --   return -2
    --end
                
    -- All devices together        
              
    -- Including this depends on the type of board being used.
    -- LDO configuration
    if (0 == ar1.RfLdoBypassConfig_mult(deviceMapOverall, 3)) then
        WriteToLog("LDO Bypass Successful\n", "green")
    else
        WriteToLog("LDO Bypass failed\n", "red")
        return -2
    end
    
    -- Low Power Mode Configuration
    if (0 == ar1.LPModConfig_mult(deviceMapOverall,0, 0)) then
        WriteToLog("Low Power Mode Configuration Successful\n", "green")
    else
        WriteToLog("Low Power Mode Configuration failed\n", "red")
        return -2
    end
    
    -- Miscellaneous Control Configuration
    if (0 == ar1.SetMiscConfig_mult(deviceMapOverall, 1, 0, 0, 0)) then
        WriteToLog("Misc Control Configuration Successful\n", "green")
    else
        WriteToLog("Misc Control Configuration failed\n", "red")
        return -2
    end
    
    -- Edit this API to enable/disable the boot time calibration. Enabled by default.
    -- RF Init Calibration Configuration
    if (0 == ar1.RfInitCalibConfig_mult(deviceMapOverall, 1, 1, 1, 1, 1, 1, 1, 65537)) then
        WriteToLog("RF Init Calibration Successful\n", "green")
    else
        WriteToLog("RF Init Calibration failed\n", "red")
        return -2
    end
             
    -- RF Init
    if (0 == ar1.RfInit_mult(deviceMapOverall)) then
        WriteToLog("RF Init Successful\n", "green")
    else
        WriteToLog("RF Init failed\n", "red")
        return -2
    end
    
    ---------------------------Data Configuration----------------------------------
            
    -- Data path Configuration
    if (0 == ar1.DataPathConfig_mult(deviceMapOverall, 0, 1, 0)) then
        WriteToLog("Data Path Configuration Successful\n", "green")
    else
        WriteToLog("Data Path Configuration failed\n", "red")
        return -3
    end
    
    -- Clock Configuration
    if (0 == ar1.LvdsClkConfig_mult(deviceMapOverall, 1, 5)) then
        WriteToLog("Clock Configuration Successful\n", "green")
    else
        WriteToLog("Clock Configuration failed\n", "red")
        return -3
    end
    
    -- CSI2 Configuration
    if (0 == ar1.CSI2LaneConfig_mult(deviceMapOverall, 1, 0, 2, 0, 4, 0, 5, 0, 3, 0, 0)) then
        WriteToLog("CSI2 Configuration Successful\n", "green")
    else
        WriteToLog("CSI2 Configuration failed\n", "red")
        return -3
    end
    
    ----------------------------Test Source Configuration------------------------------
    -- This is useful for initial bringup.
    -- Each device is configured with a test object at a different location.
        
    if(test_source_enable == 1) then
        
        if(RadarDevice[1] == 1) then
            -- Object at 5 m with x = 4m and y = 3m
            if (0 == ar1.SetTestSource_mult(1, 4, 3, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 1 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 1 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[2] == 1) then        
            -- Object at 5 m with x = 3m and y = 4m
            if (0 == ar1.SetTestSource_mult(2, 3, 4, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 2 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 2 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[3] == 1) then         
            -- Object at 13 m with x = 12m and y = 5m
            if (0 == ar1.SetTestSource_mult(4, 12, 5, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 3 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 3 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[4] == 1) then        
            -- Object at 13 m with x = 5m and y = 12m
            if (0 == ar1.SetTestSource_mult(8, 5, 12, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 4 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 4 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
           
    end           
    
    ---------------------------Sensor Configuration-------------------------
    
    -- Profile Configuration
    if (0 == ar1.ProfileConfig_mult(deviceMapOverall, 0, start_freq, idle_time, adc_start_time, ramp_end_time, 
                                    0, 0, 0, 0, 0, 0, slope, 0, adc_samples, sample_freq, 0, 0, rx_gain)) then
        WriteToLog("Profile Configuration successful\n", "green")
    else
        WriteToLog("Profile Configuration failed\n", "red")
        return -4
    end
    
    -- Chirp Configuration 
    WriteToLog("Configuring chirps Started \n", "red")
    if (0 == ar1.ChirpConfig_mult(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)) then
    	WriteToLog("Device 0 : Chirp 0 Configuration successful\n", "green")
    else
    	WriteToLog("Device 0 : Chirp 0 Configuration failed\n", "red")
    	return -4
    end   
    
    WriteToLog("Configuring chirps done\n", "red")
    
    -- Enabling/ Disabling Test Source
    if(test_source_enable == 1) then
        ar1.EnableTestSource_mult(deviceMapOverall, 1)
        WriteToLog("Enabling Test Source Configuration successful\n", "green")
    end
    
    -- Frame Configuration
    -- Master
    if (0 == ar1.FrameConfig_mult(1,0,1,nframes_master, nchirp_loops, 
                                  Inter_Frame_Interval, 0, 1)) then
        WriteToLog("Master : Frame Configuration successful\n", "green")
    else
        WriteToLog("Master : Frame Configuration failed\n", "red")
    end
    RadarAPI]: TDAStatusCallback Event Registered
    [13:21:27]  [RadarAPI]: registerTDAStatusCallback Status: Passed
    [13:21:27]  [RadarAPI]: ar1.ConnectTDA("192.168.33.180", 5001, 15)
    [13:21:27]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:21:27]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_VERSION_INFO Async event recieved() with status 0. TDA Version : REL_VISION_SDK_03_07_01_00 Aug  5 2019 15:04:45[13:21:27]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:21:29]  [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:21:29]  [RadarAPI]: ConnectTDACaptureCard Status: Passed
    [13:21:29]  TDA Capture Card Status : CONNECTED!
    [13:21:34]  [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:21:34]  [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:21:34]  [RadarAPI]: ar1.FullReset(1)
    [13:21:34]  [RadarAPI]: Status: Passed
    [13:21:34]  [RadarAPI]: ar1.SOPControl_mult(1,4)
    [13:21:34]  [RadarAPI]: Status: Passed
    [13:21:35]  [RadarAPI]: ar1.PowerOn_mult(1, 0, 1000, 0,0)
    [13:21:36]  [RadarAPI]: Status: Passed
    [13:21:36]  [DeviceId-0] MSS power up done async event received!
    [13:21:38]  [RadarAPI]: ar1.DownloadBSSFw_mult(1,"C:\\ti\\mmwave_dfp_02_02_03_01\\firmware\\xwr22xx_metaImage.bin")
    [13:21:38]  [RadarAPI]: ar1.DownloadBssFwOvSPI_mult(1, C:\\ti\\mmwave_dfp_02_02_03_01\\firmware\\xwr22xx_metaImage.bin)
    [13:21:44]  [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [13:21:44]  [RadarAPI]: Status: Passed
    [13:21:44]  [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [13:21:44]  [RadarAPI]: Status: Passed
    [13:21:44]  [RadarAPI]: ar1.deviceVariantSelection("XWR2243")
    [13:21:44]  [RadarAPI]: Status: Passed
    [13:21:44]  [RadarAPI]: ar1.frequencyBandSelection("77G")
    [13:21:44]  [RadarAPI]: ar1.SelectChipVersion("XWR2243")
    [13:21:44]  [RadarAPI]: Status: Passed
    [13:21:44]  Device Status : XWR2243/ASIL-B/SOP:4/ES:1.1
    [13:21:44]  [RadarAPI]: ar1.RfEnable_mult(1)
    [13:21:44]  [DeviceId-0] BSS power up done async event received!
    [13:21:44]  [RadarAPI]: Status: Passed
    [13:21:58]  [RadarAPI]: ar1.ChanNAdcConfig_mult(1, 1, 0, 0, 1, 1, 1, 1, 2, 1, 0, 0)
    [13:21:59]  [RadarAPI]: Status: Passed
    [13:22:00]  [RadarAPI]: ar1.LPModConfig_mult(1, 0,0)
    [13:22:00]  [RadarAPI]: Status: Passed
    [13:22:01]  [RadarAPI]: ar1.RfInit_mult(1)
    [13:22:02]  [DeviceId-0] RF Init async event received!
    [13:22:02]  [RadarAPI]: Status: Passed
    [13:22:02]  [RadarAPI]: Time stamp, Temperture: 17700,30; 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: 1, 1; RxIQMM Status, Update: 1, 1; 
    [13:22:17]  [RadarAPI]: ar1.DataPathConfig_mult(1, 512, 1216644097, 0)
    [13:22:17]  [RadarAPI]: Status: Passed
    [13:22:20]  [RadarAPI]: ar1.LvdsClkConfig_mult(1, 1,1)
    [13:22:20]  [RadarAPI]: Status: Passed
    [13:22:21]  [RadarAPI]: ar1.CSI2LaneConfig_mult(1, 1, 0, 2, 0, 4, 0, 5,0,3,0, 0)
    [13:22:21]  [RadarAPI]: Status: Passed
    [13:22:29]  [RadarAPI]: ar1.ProfileConfig_mult(1, 0, 77, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 0, 94)
    [13:22:29]  [RadarAPI]: Status: Passed
    [13:22:57]  [RadarAPI]: ar1.ChirpConfig_mult(1, 0, 0, 0, 0, 0, 0, 0, 1, 0,0)
    [13:22:57]  [RadarAPI]: Status: Passed
    [13:23:06]  Test Source Already Disabled...!!!
    [13:23:06]  [RadarAPI]: ar1.DisableTestSource_mult(1,0)
    [13:23:07]  [RadarAPI]: Status: Passed
    [13:23:07]  [RadarAPI]: ar1.FrameConfig_mult(1, 0, 0, 1000, 1, 40, 0, 1)
    [13:23:07]  [RadarAPI]: Status: Passed
    [13:23:09]  Test Source Already Disabled...!!!
    [13:23:09]  [RadarAPI]: ar1.DisableTestSource_mult(1,0)
    [13:23:09]  [RadarAPI]: Status: Passed
    [13:23:09]  [RadarAPI]: ar1.FrameConfig_mult(1, 0, 0, 1000, 1, 3, 0, 1)
    [13:23:09]  [RadarAPI]: Status: Passed
    [13:23:10]  Test Source Already Disabled...!!!
    [13:23:10]  [RadarAPI]: ar1.DisableTestSource_mult(1,0)
    [13:23:10]  [RadarAPI]: Status: Passed
    [13:23:10]  [RadarAPI]: ar1.FrameConfig_mult(1, 0, 0, 1000, 1, 3, 0, 1)
    [13:23:10]  [RadarAPI]: Status: Passed
    [13:23:12]  Loops Remaining : 1
    [13:23:12]  Starting TDA ARM...
    [13:23:12]  [RadarAPI]: ar1.TDACaptureCard_StartRecord_mult(1, 0, 0, Measurement_20220117_1, 0)
    [13:23:12]  Device 0 - Configuring TDA with Width : 2048 and Height : 1
    [13:23:12]  [RadarAPI]: Device 0 - setWidthAndHeight Status: Passed
    [13:23:12]  [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:12]  Device 1 - Configuring TDA with Width : 0 and Height : 0
    [13:23:12]  [RadarAPI]: Device 1 - setWidthAndHeight Status: Passed
    [13:23:12]  [RadarAPI]: Device 2 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:12]  Device 2 - Configuring TDA with Width : 0 and Height : 0
    [13:23:12]  [RadarAPI]: Device 2 - setWidthAndHeight Status: Passed
    [13:23:12]  [RadarAPI]: Device 4 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:12]  Device 3 - Configuring TDA with Width : 0 and Height : 0
    [13:23:12]  [RadarAPI]: Device 3 - setWidthAndHeight Status: Passed
    [13:23:12]  [RadarAPI]: Device 8 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:12]  Sending Frame Periodicity of 3 to TDA..
    [13:23:12]  [RadarAPI]: Status: Passed. Frame Periodicity sent to TDA
    [13:23:12]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:13]  Sending Capture Directory with name /mnt/ssd/Measurement_20220117_1 to TDA..
    [13:23:13]  [RadarAPI]: Status: Passed. Capture Directory sent to TDA
    [13:23:13]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:13]  Sending File Allocation of 0 files to TDA..
    [13:23:13]  [RadarAPI]: Status: Passed. File Allocation sent to TDA
    [13:23:13]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:13]  Sending Enable Data Packaging (0 - 16-bit; 1 - 12-bit) with value of 0 to TDA..
    [13:23:13]  [RadarAPI]: Status: Passed. Enable Data Packaging sent to TDA
    [13:23:13]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:13]  Sending Number of frames to capture with value of 0 to TDA..
    [13:23:13]  [RadarAPI]: Status: Passed. Number of frames to capture sent to TDA
    [13:23:13]  [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0 
    [13:23:13]  [RadarAPI]: Status: Passed for notifying TDA about Creating Application
    [13:23:23]  Create Application Response from Capture Card timed out!!
    [13:23:23]  TDA ARM Failed
    [13:23:23]  
    [13:23:23]  ***Script completed successfully.***
    

  • Hi,

          Can you please refer this thread for operating the cascade EVM in single chip mode?

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/895738/mmwcas-rf-evm-can-i-set-the-anyone-of-the-4-xwr2243-chip-as-the-master-or-single-chip-for-testing

    From the error of TDA ARM failed it appears the TDA ARM did not happen properly.

    Regards

  • Hello, 

    Yes I have already referred to this topic. I am asking questions in this forum because I experience issues with the system which could not resolve by documentation or searching similar topics in the forum. 

    Indeed TDA ARM failed, I can see that from the error . I am seeking your support to understand why this happens and how to resolve it. You are stating the facts but not providing solutions or a way to test where the problems comes from and how to solve them. 

    If you cannot provide support to my issues please bring in someone else who is capable of that. I expect that you or someone else in TI provides technical knowledge and input to resolve the issues and not only refer me to documents, which I can and do look up myself. 

  • Hi,

         The reason for referring you to the above link was to tell you that the EVM can be made to work in Single Chip Mode.

    Additionally the procedure listed there apart from the mmWave studio cascade user guide/cfs-file/__key/communityserver-discussions-components-files/1023/5621.mmwave_5F00_studio_5F00_cascade_5F00_user_5F00_guide.pdf

    I am sure if you relook at the procedure and steps you will be able to overcome the error of TDA ARM failure.

    With cascade setup being controlled through TDA2, any small miss in the step or detail in configuration can lead to failure in over all capture.

    Regards

  • Yes, thank you I see that you are again referring to documentation that I have already followed to the point. Did you read my post at all, where I sent you the lua shell and the output. I will repeat here again to make it again clear: 

    - I can setup the device in single chip mode and record data but only with two chirps per frame. If I do one chirp per frame it does not work... I get an error. Why is that? This does not seem to be normal behavior. For the IWR6843 I can easily set one chirp per frame and use that configuration for my measurements. Is that some kind of limitation of the cascaded system and if so why is it not documented. If not a limitation is it a bug in your software or the hardware I have is defect? 

    You still did not answer my question about the data loss. I think it is completely unacceptable that I cannot get a measurement without loosing data even if I use the recommended settings(low clock rate) and the lowest ADC rate. 

  • Hi,

          So the way I understand the issue right now at your side is as your are not getting the smooth range doppler plot with cascade system(as compared with IWR6843 setup). For debugging that we are trying to make the configuration of both setups exact.

    But for the cascade setup you are not able to configure the single chip with one chirp per frame configuration as it throws error.

    Presuming you have referred all the documentation available and have also followed it correctly, What I feel is TDA2 frame size might be the point of failure. This is supported by the information that when you configure more than 1 chirp per frame you dont see any capture failure in singel chip mode as then the frame size becomes 4096.

    I would suggest here to have a capture made with 2chirps per frame on singel chip mode on cascade device and similarly for the iwr6843 also and check.

    Regards