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.

TDA2EVM5777: 使用TDA2采集数据,post后波形出现方波而非正弦波

Part Number: TDA2EVM5777


使用4片级联的2243芯片+TDA2采集数据,波形配置和数据采集过程中都没有报错,但最后Post时出现方波,导致RD图异常,且只有device3每帧的最后十几个chirp存在这种情况,device1、device2与device4都是正常的正弦波,请问这是什么问题造成的呢,应该如何解决?

  • 你好,

    Studio里带的mimo LUA配置也有同样的问题么?如果没有,请提供能复现问题的配置。

  • 您好,感谢回复,这种情况不是每次测试都会出现,有时候就是正常的波形,出现这种错误时经常发生在这组数据的第一帧,以及其他帧的最后几个chirp,以下为波形配置脚本,您看一下有没有什么问题

    
    --------------------------------User Constants---------------------------------------
        
    dev_list                 =    {1, 2, 4, 8}      -- Device map
    RadarDevice              =    {1, 1, 1, 1}      -- {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_02_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
    
    deviceMapTDA             =   15                 -- all devices enabled
    
    -------------------------------  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, deviceMapTDA)) 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")
          
    
    
    for i=1,table.getn(RadarDevice) do 
    
        local status    =    0        
        ---------------------------Configuration of AWR Devices------------------------
        
        if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
        
            WriteToLog("Device"..i.." Configuration Started... \n", "blue")
            
            ---------------------------Connection Tab-------------------------
            
            -- 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 (i==1) then
                status    =    ar1.PowerOn_mult(dev_list[i], 0, 1000, 0, 0)
            else
                status    =    ar1.AddDevice(dev_list[i])
            end        
            if (0 == status) then
                WriteToLog("Device "..i.." : SPI Connection Successful\n", "green")
            else
                WriteToLog("Device "..i.." : SPI Connection Failed\n", "red")
                return -1
            end
            
            -- Firmware Download. (SOP 4 - MetaImage)
            if (0 == ar1.DownloadBssFwOvSPI_mult(dev_list[i], metaImagePath)) then
                WriteToLog("Device "..i.." : FW Download Successful\n", "green")
            else
                WriteToLog("Device "..i.." : FW Download Failed\n", "red")
                return -1
            end
            
            
            -- RF Power Up
            if (0 == ar1.RfEnable_mult(dev_list[i])) then
                WriteToLog("Device "..i.." : RF Power Up Successful\n", "green")
            else
                WriteToLog("Device "..i.." : RF Power Up Failed\n", "red")
                return -1
            end            
    
            ---------------------------Static Configuration-------------------------
            
            -- Channel & ADC Configuration
            if (0 == ar1.ChanNAdcConfig_mult(dev_list[i], 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, cascade_mode_list[i])) then
                WriteToLog("Device "..i.." : Channel & ADC Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : Channel & ADC Configuration Failed\n", "red")
                return -2
            end
            
            -- Including this depends on the type of board being used.
            -- LDO configuration
            if (0 == ar1.RfLdoBypassConfig_mult(dev_list[i], 3)) then
                WriteToLog("Device "..i.." : LDO Bypass Successful\n", "green")
            else
                WriteToLog("Device "..i.." : LDO Bypass failed\n", "red")
                return -2
            end
            
            -- Low Power Mode Configuration
            if (0 == ar1.LPModConfig_mult(dev_list[i],0, 0)) then
                WriteToLog("Device "..i.." : Low Power Mode Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : Low Power Mode Configuration failed\n", "red")
                return -2
            end
            
            -- Miscellaneous Control Configuration
            if (0 == ar1.SetMiscConfig_mult(dev_list[i], 1, 0, 0, 0)) then
                WriteToLog("Device "..i.." : Misc Control Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : 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(dev_list[i], 1, 1, 1, 1, 1, 1, 1, 65537)) then
                WriteToLog("Device "..i.." : RF Init Calibration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : RF Init Calibration failed\n", "red")
                return -2
            end
            
            -- RF Init
            if (0 == ar1.RfInit_mult(dev_list[i])) then
                WriteToLog("Device "..i.." : RF Init Successful\n", "green")
            else
                WriteToLog("Device "..i.." : RF Init failed\n", "red")
                return -2
            end
                       
            RSTD.Sleep(500) -- A small buffer time between the devices.
    
            WriteToLog("AWR Device"..i.." Configuration Successful! \n", "blue")
        else
            WriteToLog("AWR Device"..i.." not enabled. Skipping! \n", "red")            
        end
        ---------------------------------------------------------------------------------
    end
    
    ------------------------------------------------------------------------------
    for i=1,table.getn(RadarDevice) do 
    
        local status    =    0        
        ----------------------Configuration of AWR Devices---------------------------
        
        if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
        
            WriteToLog("Device"..i.." Configuration Started... \n", "blue")
            
            ---------------------------Data Configuration----------------------------------
            
            -- Data path Configuration
            if (0 == ar1.DataPathConfig_mult(dev_list[i], 0, 1, 0)) then
                WriteToLog("Device "..i.." : Data Path Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : Data Path Configuration failed\n", "red")
                return -3
            end
            
            -- Clock Configuration
            if (0 == ar1.LvdsClkConfig_mult(dev_list[i], 1, 1)) then
                WriteToLog("Device "..i.." : Clock Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : Clock Configuration failed\n", "red")
                return -3
            end
            
            -- CSI2 Configuration
            if (0 == ar1.CSI2LaneConfig_mult(dev_list[i], 1, 0, 2, 0, 4, 0, 5, 0, 3, 0, 0)) then
                WriteToLog("Device "..i.." : CSI2 Configuration Successful\n", "green")
            else
                WriteToLog("Device "..i.." : CSI2 Configuration failed\n", "red")
                return -3
            end
                       
            RSTD.Sleep(500) -- A small buffer time between the devices.
    
            WriteToLog("AWR Device"..i.." Configuration Successful! \n", "blue")
        else
            WriteToLog("AWR Device"..i.." not enabled. Skipping! \n", "red")            
        end
        --------------------------------------------------------------------------------
    end
    
    local No_of_Frames          =  500       --
    local startFreqConst        =   79.4    --
    local digOutSampleRate      =   20000   --
    local rxGain                =   48      --
    local idleTimeConst         =   2       --
    local adcStartTimeConst     =   2
    local rampEndTime           =   28      --
    local ChirpDelay_a          =   6      --add extra_delay on tx3 last chirp,2+6
    local Slope                 =   17
    
    
    ar1.ProfileConfig_mult(1, 0, startFreqConst, idleTimeConst, adcStartTimeConst, rampEndTime, 0, 0, 0, 0, 0, 0, Slope, 0, 512, digOutSampleRate, 0, 0, rxGain)
    ar1.ChirpConfig_mult(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 0, 0, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 1, 1, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 2, 2, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 3, 3, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 4, 4, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 5, 5, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 6, 6, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 7, 7, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 8, 8, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 9, 9, 0, 0, 0, 0, 0, 1, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 9, 9, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 10, 10, 0, 0, 0, 0, 0, 0, 1, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 10, 10, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 11, 11, 0, 0, 0, 0, 0, 0, 0, 1)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 11, 11, 0, 0, 0)
    ar1.ChirpConfig_mult(1, 12, 12, 0, 0, 0, ChirpDelay_a, 0, 0, 0, 1)
    ar1.SetPerChirpPhaseShifterConfig_mult(1, 12, 12, 0, 0, 0)
    ar1.DisableTestSource_mult(1, 0)
    ar1.FrameConfig_mult(1, 0, 12, No_of_Frames, 128, 100, 0, 1)
    
    
    
    ar1.ProfileConfig_mult(2, 0, startFreqConst, idleTimeConst, adcStartTimeConst, rampEndTime, 0, 0, 0, 0, 0, 0, Slope, 0, 512, digOutSampleRate, 0, 0, rxGain)
    ar1.ChirpConfig_mult(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 0, 0, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 1, 1, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 2, 2, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 3, 3, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 4, 4, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 5, 5, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 6, 6, 0, 0, 0, 0, 0, 1, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 6, 6, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 7, 7, 0, 0, 0, 0, 0, 0, 1, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 7, 7, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 8, 8, 0, 0, 0, 0, 0, 0, 0, 1)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 8, 8, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 9, 9, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 10, 10, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 11, 11, 0, 0, 0)
    ar1.ChirpConfig_mult(2, 12, 12, 0, 0, 0, ChirpDelay_a, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(2, 12, 12, 0, 0, 0)
    ar1.DisableTestSource_mult(2, 0)
    ar1.FrameConfig_mult(2, 0, 12, No_of_Frames, 128, 100, 0, 2)
    
    ar1.ProfileConfig_mult(4, 0, startFreqConst, idleTimeConst, adcStartTimeConst, rampEndTime, 0, 0, 0, 0, 0, 0, Slope, 0, 512, digOutSampleRate, 0, 0, rxGain)
    ar1.ChirpConfig_mult(4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 0, 0, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 1, 1, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 2, 2, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 3, 3, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 4, 4, 0, 0, 0, 0, 0, 0, 1, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 4, 4, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 1)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 5, 5, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 6, 6, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 7, 7, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 8, 8, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 9, 9, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 10, 10, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 11, 11, 0, 0, 0)
    ar1.ChirpConfig_mult(4, 12, 12, 0, 0, 0, ChirpDelay_a, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(4, 12, 12, 0, 0, 0)
    ar1.DisableTestSource_mult(4, 0)
    ar1.FrameConfig_mult(4, 0, 12, No_of_Frames, 128, 100, 0, 2)
    
    ar1.ProfileConfig_mult(8, 0, startFreqConst, idleTimeConst, adcStartTimeConst, rampEndTime, 0, 0, 0, 0, 0, 0, Slope, 0, 512, digOutSampleRate, 0, 0, rxGain)
    ar1.ChirpConfig_mult(8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 0, 0, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 1, 1, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 2, 2, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 3, 3, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 4, 4, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 5, 5, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 6, 6, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 7, 7, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 8, 8, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 9, 9, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 10, 10, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 11, 11, 0, 0, 0)
    ar1.ChirpConfig_mult(8, 12, 12, 0, 0, 0, ChirpDelay_a, 0, 0, 0, 0)
    ar1.SetPerChirpPhaseShifterConfig_mult(8, 12, 12, 0, 0, 0)
    ar1.DisableTestSource_mult(8, 0)
    ar1.FrameConfig_mult(8, 0, 12, No_of_Frames, 128, 100, 0, 2)
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 你好,

    如果是第一帧,这是一个已知的问题,建议不要使用第一帧数据。

    下面的信息可以在mmwave_studio_cascade_user_guide.pdf里找到:

  • 您好,有时候也会出现在其他帧,不只是第一帧,像问题中贴图的那组数据,采集了5帧数据,每帧都会出现,请问这种情况可以避免吗

  • 你好,

    抱歉,第一帧的问题,目前还未找到解决的方法。

    你使用的电源是否是12V5A的电源适配器?

  • 是的,电源适配器都是12V4A的

  • 你好,

    评估板文档建议的电源是5A的。或者你能否尝试使用台式电源看看是否有改善?