我现在需要使用AWR2243级联板实现DDMA模式的数据采集,步骤如下:
1、根据MIMO的配置文件修改出了DDMA的基本参数配置文件,主要是修改了Configure_Chirps函数里面的ChirpConfig_mult,使得每个雷达芯片的三个发射天线同时使能。
代码如下
--[[
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, 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_04_00\\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 = 256 -- Number of samples per chirp
local sample_freq = 8000 -- 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 = 11
local nchirp_loops = 32 -- Number of chirps per frame
local nframes_master = 2 -- Number of Frames for Master
local nframes_slave = 2 -- Number of Frames for Slaves
local Inter_Frame_Interval = 100 -- 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, 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, 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, 1, 1, 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, 1, 1, 1)) 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, 1, 1)) 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, 1, 1, 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, 1, 1, 1)) 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, 1, 1)) 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, 1, 1, 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, 1, 1, 1)) 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, 1, 1)) 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, 1, 1, 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, 1, 1, 1)) 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, 1, 1)) 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,1,1,1,1,1,1,2,1,0,1)) 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
-- RF Power Up
if (0 == ar1.RfEnable_mult(deviceMapSlaves)) then
WriteToLog("Slaves : RF Power Up Successful\n", "green")
else
WriteToLog("Slaves : RF Power Up 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, 1)) 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
for i=1,table.getn(RadarDevice) do
if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
Configure_Chirps(i)
end
end
-- 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,start_chirp_tx,end_chirp_tx,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
-- Slaves
if (0 == ar1.FrameConfig_mult(deviceMapSlaves,start_chirp_tx,end_chirp_tx,nframes_slave, nchirp_loops,
Inter_Frame_Interval, 0, 2)) then
WriteToLog("Slaves : Frame Configuration successful\n", "green")
else
WriteToLog("Slaves : Frame Configuration failed\n", "red")
end
2、配置各个发射天线的相移
首先根据以下matlab代码计算出相移值
%参数设置
PhaseMin = 5.625;
numTx = 12;
numChirps = 256;
numEmptybands = 0;
EmptybandIndex = 1;
%为1表示处在Tx1与Tx2之间,为2表示处在Tx2与Tx3之间,以此类推。 (不过无论几个emptyband,这里默认它们是连续的)
%不过不管emptyband是如何放置的,后续具体使用时找到Tx对应的行即可。
%相位值计算
N_all = numTx + numEmptybands;
PhaseSetp = 360/N_all;
Idea_Phase = zeros(N_all,numChirps); %预设一个矩阵装载相位。
Real_Phase = zeros(N_all,numChirps); %实际的相位
IndexUse = zeros(N_all,numChirps); %实际相位对应的应该设置的index值: 从0--63
for ii = 1:N_all
PhaseSetp_use = (ii-1)*PhaseSetp;
for jj = 1:numChirps
Phasetmp = rem( (0 + (jj-1)*PhaseSetp_use),360);
Idea_Phase(ii,jj) = Phasetmp;
Quatient = round(Phasetmp/PhaseMin);
Real_Phase(ii,jj) = Quatient*PhaseMin;
IndexUse(ii,jj) = Quatient;
end
end
相移结果如下:
IndexUse =
列 1 至 32
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37
0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21
0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5
0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53
0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27
列 33 至 64
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16
21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0
21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48
21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32
21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48
列 65 至 96
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59
43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43
43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27
43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11
43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5
列 97 至 128
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37
0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21
0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5
0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53
0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27
列 129 至 160
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16
21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0
21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48
21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32
21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48
列 161 至 192
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59
43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43
43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27
43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11
43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5
列 193 至 224
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37
0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21
0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5
0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53
0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27
列 225 至 256
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16 21 27 32 37 43 48 53 59 0 5 11 16
21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32 43 53 0 11 21 32
0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48 0 16 32 48
43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0 21 43 0
21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16 43 5 32 59 21 48 11 37 0 27 53 16
0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32 0 32
43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48 21 59 32 5 43 16 53 27 0 37 11 48
21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0 43 21 0
0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16 0 48 32 16
43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32 21 11 0 53 43 32
21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48 43 37 32 27 21 16 11 5 0 59 53 48
3、在mmwave中配置DDMA相移
LUA代码为:
dev_list = {1, 2, 4, 8} -- Device map
for ii = 0,31 do
-- chirp 0 0 0 0 0 0 0 0 0 0 0 0 0
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12,ii*12,0,0,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12,ii*12,0,0,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12,ii*12,0,0,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12,ii*12,0,0,0)
-- chirp 1 0 5 11 16 21 27 32 37 43 48 53 59
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+1,ii*12+1,0,5,11)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+1,ii*12+1,16,21,27)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+1,ii*12+1,32,37,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+1,ii*12+1,48,53,59)
-- chirp 2 0 11 21 32 43 53 0 11 21 32 43 53
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+2,ii*12+2,0,11,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+2,ii*12+2,32,43,53)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+2,ii*12+2,0,11,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+2,ii*12+2,32,43,53)
-- chirp 3 0 16 32 48 0 16 32 48 0 16 32 48
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+3,ii*12+3,0,16,32)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+3,ii*12+3,48,0,16)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+3,ii*12+3,32,48,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+3,ii*12+3,16,32,48)
-- chirp 4 0 21 43 0 21 43 0 21 43 0 21 43
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+4,ii*12+4,0,21,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+4,ii*12+4,0,21,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+4,ii*12+4,0,21,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+4,ii*12+4,0,21,43)
-- chirp 5 0 27 53 16 43 5 32 59 21 48 11 37
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+5,ii*12+5,0,27,53)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+5,ii*12+5,16,43,5)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+5,ii*12+5,0,27,53)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+5,ii*12+5,16,43,5)
-- chirp 6 0 32 0 32 0 32 0 32 0 32 0 32
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+6,ii*12+6,0,32,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+6,ii*12+6,0,32,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+6,ii*12+6,0,32,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+6,ii*12+6,0,32,0)
-- chirp 7 0 37 11 48 21 59 32 5 43 16 53 27
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+7,ii*12+7,0,37,11)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+7,ii*12+7,48,21,59)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+7,ii*12+7,32,5,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+7,ii*12+7,16,53,27)
-- chirp 8 0 43 21 0 43 21 0 43 21 0 43 21
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+8,ii*12+8,0,43,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+8,ii*12+8,0,43,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+8,ii*12+8,0,43,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+8,ii*12+8,0,43,21)
-- chirp 9 0 48 32 16 0 48 32 16 0 48 32 16
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+9,ii*12+9,0,48,32)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+9,ii*12+9,16,0,48)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+9,ii*12+9,32,16,0)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+9,ii*12+9,48,32,16)
-- chirp 10 0 53 43 32 21 11 0 53 43 32 21 11
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+10,ii*12+10,0,53,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+10,ii*12+10,32,21,11)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+10,ii*12+10,0,53,43)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+10,ii*12+10,32,21,11)
-- chirp 11 0 59 53 48 43 37 32 27 21 16 11 5
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[4],ii*12+11,ii*12+11,0,59,53)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[3],ii*12+11,ii*12+11,48,43,37)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[2],ii*12+11,ii*12+11,32,27,21)
ar1.SetPerChirpPhaseShifterConfig_mult(dev_list[1],ii*12+11,ii*12+11,16,11,5)
end
numloop设置为32, 总共有12个发射天线,没有设置emptyband,循环32个loop
4、捕获
根据以下lua代码进行捕获
--[[
A. FRAMING & CAPTURE
1. Triggering Slave (3, 2, 1) sequentially in a hardware triggered mode.
2. Triggering Master in a software triggered mode.
B. TRANSFERRING FILES
1. The data is stored in file(s) with max cap placed at 2 GB.
2. The files can be retrieved from the SSD (/mnt/ssd folder) using WinSCP.
Note: Update lines 18 to 49 as needed before using this script.
--
Note: "capture_time" is a timeout for this script alone to exit - it does not control the
actual duration of capture. The actual capture duration depends on the configured frame time
and number of frames.
--]]
capture_time = 2000 -- ms
inter_loop_time = 2000 -- ms
num_loops = 1
--[[
Note: Change the following three parameters as desired:
1. n_files_allocation: is the number of files to preallocate on the SSD.
This improves capture reliability by not having frame drops while switching files.
The tradeoff is that each file is a fixed 2047 MB even if a smaller number of frames are captured.
Pre-allocate as many files as needed based on (size_per_frame * number_of_frames) to be captured.
2. data_packaging: select whether to use 16-bit ADC data as is, or drop 4 lsbits and save 4*12-bit numbers in a packed form
This allows a higher frame rate to be achieved, at the expense of some post-processing to unpack the data later.
(Matlab should still be able to unpack the data using the '*ubit12' argument to fread instead of 'uint16')
The default is no-packing, for simplicity
3. capture_directory: is the filename under which captures are stored on the SSD
and is also the directory to which files will be transferred back to the host
The captures are copied to the PostProc folder within mmWave Studio
Note: If this script is called multiple times without changing the directory name, then all
captured files will be in the same directory with filename suffixes incremented automatically.
It may be hard to know which captured files correspond to which run of the script.
Note: It is strongly recommended to change this directory name between captures.
--]]
n_files_allocation = 0
data_packaging = 0 -- 0: 16-bit, 1: 12-bit
capture_directory = 'DDMAtest'
num_frames_to_capture = 0 -- 0: default case; Any positive value - number of frames to capture
framing_type = 1 -- 0: infinite, 1: finite
stop_frame_mode = 0 -- 0: Frame boundary, 2: Sub-frame boundary,
-- 3: Burst boundary, 4: HW/Sub-frame triggered
----------------------------------DATA CAPTURE-------------------------------------------
-- Function to start/stop frame
function Framing_Control(Device_ID, En1_Dis0)
local status = 0
if (En1_Dis0 == 1) then
status = ar1.StartFrame_mult(dev_list[Device_ID]) --Start Trigger Frame
if (status == 0) then
WriteToLog("Device "..Device_ID.." : Start Frame Successful\n", "green")
else
WriteToLog("Device "..Device_ID.." : Start Frame Failed\n", "red")
return -5
end
else
status = ar1.StopFrame_mult(dev_list[Device_ID], stop_frame_mode) --Stop Trigger Frame
if (status == 0) then
WriteToLog("Device "..Device_ID.." : Stop Frame Successful\n", "green")
else
WriteToLog("Device "..Device_ID.." : Stop Frame Failed\n", "red")
return -5
end
end
return status
end
while (num_loops > 0)
do
WriteToLog("Loops Remaining : "..num_loops.."\n", "purple")
-- TDA ARM
WriteToLog("Starting TDA ARM...\n", "blue")
status = ar1.TDACaptureCard_StartRecord_mult(1, n_files_allocation, data_packaging, capture_directory, num_frames_to_capture)
if (status == 0) then
WriteToLog("TDA ARM Successful\n", "green")
else
WriteToLog("TDA ARM Failed\n", "red")
return -5
end
RSTD.Sleep(1000)
-- Triggering the data capture
WriteToLog("Starting Frame Trigger sequence...\n", "blue")
if (RadarDevice[4]==1)then
Framing_Control(4,1)
end
if (RadarDevice[3]==1)then
Framing_Control(3,1)
end
if (RadarDevice[2]==1)then
Framing_Control(2,1)
end
Framing_Control(1,1)
WriteToLog("Capturing AWR device data to the TDA SSD...\n", "blue")
RSTD.Sleep(capture_time)
if (framing_type == 0) then
-- Stop capturing
WriteToLog("Starting Frame Stop sequence...\n", "blue")
if (RadarDevice[4]==1)then
Framing_Control(4,0)
end
if (RadarDevice[3]==1)then
Framing_Control(3,0)
end
if (RadarDevice[2]==1)then
Framing_Control(2,0)
end
Framing_Control(1,0)
end
WriteToLog("Capture sequence completed...\n", "blue")
num_loops = num_loops - 1
RSTD.Sleep(inter_loop_time)
end
-- Enable the below if required
-- WriteToLog("Starting Transfer files using WinSCP..\n", "blue")
-- status = ar1.TransferFilesUsingWinSCP_mult(1)
-- if(status == 0) then
-- WriteToLog("Transferred files! COMPLETE!\n", "green")
-- else
-- WriteToLog("Transferring files FAILED!\n", "red")
-- return -5
-- end
然后使用mmwavestudio的PoetProc进行处理显示,但是处理的结果中,RD频谱并不像是DDMA模式下的结果

能否请工程师帮我看下我的配置过程存在哪些错误,如果能够根据我提供的完整LUA代码进行复现操作,我认为解决我的问题可能性比较大。 感谢,祝工作顺利。