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