AWR2243: 使用mmwave studio进行adv chirp配置步进频信号参数,在chirp config picture结果里显示并未配置成功,依旧是初始频率恒定的线性调频信号

Part Number: AWR2243

你好,

我想直接使用mmwave studio实现adv chirp配置,但是配置不成功。具体问题如下:

首先,我直接运行官方demo“Cascade_Configuration_MIMO.lua”,能够得到普通的线性调频信号,然后,我想在此基础上给每一个chirp加一个初始频率增量,达到步进频率的效果。

因此,我是在官方demo“Cascade_Configuration_MIMO.lua”基础上再添加了几行调用“AdvChirpConfig”函数的代码(该代码也是直接从官方demo“Advanced_Chirp_Example.lua”中复制过来的),如下所示。

--=====================================================================
function AdvChirpConfig()
    local apiReturn
    local test_result = 0
    -- Enable Advance Chirp
    apiReturn = ar1.SetMiscConfig(1, 1, 0, 0)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : Radar Misc cfg Failed\n", "red")
        test_result = 1
    end
    apiReturn = ar1.ClearAdvChirpLUTConfig()
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : ClearAdvChirpLUTConfig cfg Failed\n","red")
        test_result = 1
    end
    apiReturn = ar1.SetProfileAdvChirpConfigLUT(0, 4, 0, 0, 0, 0)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : Adv Chirp Profile LUT cfg Failed\n","red")
        test_result = 1
    end
    apiReturn = ar1.SetStartFreqAdvChirpConfigLUT(16, 4, 0, 0, 0, 0.01, 0.02, 0.03)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : Adv Chirp Start Freq LUT cfg Failed\n","red")
        test_result = 1
    end
    apiReturn = ar1.SetTxEnAdvChirpConfigLUT(32, 4, 3, 7, 3, 7)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : Adv Chirp TX LUT cfg Failed\n","red")
        test_result = 1
    end
    apiReturn = ar1.SetTx0PhShiftAdvChirpConfigLUT(48, 4, 5.625, 11.25, 16.875, 22.5)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : ADV Chirp Tx0 PhShifter LUT cfg Failed\n","red")
        test_result = 1
    end
    apiReturn = ar1.AdvChirpLUTConfig(0, 64)
    if (0 ~= apiReturn) then
        WriteToLog("FAIL : Adv Chirp LUT transfer Failed\n","red")
        test_result = 1
    end

    local paramIndex

    -- Profile
    paramIndex = 0
    apiReturn = ar1.AdvChirpConfig(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,  0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Start Frequency
    paramIndex = 1
    apiReturn = ar1.AdvChirpConfig(1, 0, 8, 1, 18641, 18641, 18641, 18641, 0, 0,0, 1,  0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Slope
    paramIndex = 2
    apiReturn = ar1.AdvChirpConfig(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Idle Time
    paramIndex = 3
    apiReturn = ar1.AdvChirpConfig(3, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 1, 0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- ADC Start
    paramIndex = 4
    apiReturn = ar1.AdvChirpConfig(4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- TX Enable
    paramIndex = 5
    apiReturn = ar1.AdvChirpConfig(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- BPM
    paramIndex = 6
    apiReturn = ar1.AdvChirpConfig(6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Phase Shifter 1
    paramIndex = 7
    apiReturn = ar1.AdvChirpConfig(7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Phase Shifter 2
    paramIndex = 8
    apiReturn = ar1.AdvChirpConfig(8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    -- Phase Shifter 3
    paramIndex = 9
    apiReturn = ar1.AdvChirpConfig(9, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 1, 0, 0, 0, 0, 0)
    if (apiReturn ~= 0) then
        local reportString = string.format("FAIL : Advanced Chirp Config %d Failed with %d\n",paramIndex, apiReturn)
        WriteToLog(reportString,"red")
        test_result = 1
    end
    return test_result
end

-- Advanced Chirp Config
for i=1,table.getn(RadarDevice) do    
    if (0 ~= AdvChirpConfig(i)) then
        WriteToLog("FAIL : Adv Chirp cfg Failed\n","red")
        test_result = 1
    end
end

这段代码是添加在官方demo“Cascade_Configuration_MIMO.lua”的末尾,即12个tx依次以“ar1.ChirpConfig_mult”函数配置完chirp后,再使用“ar1.AdvChirpConfig”函数依次对4个device进行adv chirp配置。运行脚本的过程中无任何报错。

接下来,我在采集到的数据文件包里面查看了“test.mmwave.json”,里面有显示我对adv chirp配置的参数,如下图所示。

因此我理解的是,该函数是成功调用了的。但是当我使用mmwave studio查看chirp config picture时却发现,时频图反映出来的依旧是初始频率恒定的线性调频信号,这表明我的adv chirp配置并未成功。如下图所示。

我想问:

1. 是否是因为“ar1.ChirpConfig_mult”函数配置完12个tx的chirp后,再使用“ar1.AdvChirpConfig”进行adv chirp配置不再生效?如果是这样,我是否应该在代码里用“ar1.AdvChirpConfig”替换“ar1.ChirpConfig_mult”函数,相当于只使用“ar1.AdvChirpConfig”对12个tx以此进行配置,而不再使用“ar1.ChirpConfig_mult”?还是应该用其他流程实现adv chirp配置?

因为“Advanced_Chirp_Example.lua”这个demo似乎不能直接用于级联雷达(这里我理解的对吗?),所以我才想在“Cascade_Configuration_MIMO.lua”的基础上进行修改。

2. 我在gui里面发现chirp配置这里也有start freq var的配置选项,如下图所示。

但是不是只代表我在对每个tx进行chirp配置的时候,每个tx都可以有一个频率增量,但是该增量不会随着chirp个数的增加而增加(有点像adv chirp里面LUT的效果?),而是固定的,即对于该tx发射的chirp,start freq都是在profile的基础上再加这个var?这样似乎就并不能实现步进频率的效果,我依旧只能考虑使用adv chirp相关配置达到我的目的?