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.

AWR2243: Beamforming 模式修改Beamforming 角度矩阵出现问题

Part Number: AWR2243


根据实例代码给出的BF模式数据采集的参数配置SMRR,其anglesToSteer=[-30:2:30]; 得到的静态目标的距离-角度图是没有问题的,如下:

但是我修改anglesToSteer=[-60:1:60]; 采集回来的数据在有些BF角度下距离估计出现了问题(环境没有任何改变),如下:

多次采集数据都出现了这种情况。请问我是设置的角度太大了吗?但是我看手册的实验手册中的anglesToSteer=[-60:0.5:60],还是有什么限制条件需要考虑?

  • 感谢您对TI产品的关注!为更加有效地解决您的问题,由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。

    1. 请问您指的是哪个example code?
    2. "anglesToSteer=[-30:2:30]",请问您需要在器件上实现什么?您是在 2 度的steps上移动吗?设备single step为5.625度;
    3. 这两种情况下发生错误的比率分别是多少?
  • 1. 采集的是BF数据,分别运行的是Cascade_Configuration_Basic.lua,Cascade_TxBF_dataCapture (SMRR), Cascade_Capture.lua;

    2. anglesToSteer=[-60:1:60]我想实现从-60°到60°角度扫描,步长为1°。关于设备的single step是5.625°,首先"anglesToSteer=[-30:2:30]"是实列代码,而且在参考设计Imaging Radar Using Cascaded mmWave Sensor Reference Design.pdf第18页有提到,‘The TX beam is steering within [–60 60] with step size of 0.5 degree’,步长是可以达到0.5°的。所以我理解您说的5.625°跟BF的扫描角度不是一个物理量?

    3. 经过测试我发现,anglesToSteer*nchirp_loops<2048(都是USRR/LRR/SMRR中的参数),就不会出现上述情况。例如如果在frame based steering的模式下,如果设置每个角度的chirp数为64,那么最多可以扫描的角度应该小于32。所以我想咨询一下,这是什么原因呢?手册里似乎没有提及过。

    另外,我现在正在做BF和MIMO模式的对比,请问可以分享一下参考设计Imaging Radar Using Cascaded mmWave Sensor Reference Design.pdf中图19的代码吗?

  • 扫描的步长将决定扫描角度的数量,然后将决定 2 个对象之间可能的分辨率。默认配置是基于帧的转向(frame based steering),这取决于 TDA 可以支持表单捕捉角度(form capture perspective)的最大帧大小,此详细信息列在级联用户指南中。在您计划用于在所需扫描窗口的所需范围内获得所需分辨率的配置文件中,我建议做如下调整:

    params.nchirp_loops = nchirp_loops; % Number of chirps per frame
    params.Num_Frames = Num_Frames; % number of frames to collect data 

  • 您好,谢谢您的解答。

    您说的“TDA 可以支持表单捕捉角度(form capture perspective)的最大帧大小,此详细信息列在级联用户指南中”,具体可以在哪里找到呢?我翻阅了级联用户指南没有找到答案。

    另外,我现在的配置文件就是这么设置的,如下

    function [params] = chirpProfile_TxBF_USRR()

    % TI cascade board antenna configurations

    platform = 'TI_4Chip_CASCADE';

    %% fixed antenna ID and postion values for TI 4-chip cascade board. Should not be changed if user is based on TI board
    TI_Cascade_TX_position_azi = [11 10 9 32 28 24 20 16 12 8 4 0 ];%12 TX antenna azimuth position on TI 4-chip cascade EVM
    TI_Cascade_TX_position_ele = [6 4 1 0 0 0 0 0 0 0 0 0];%12 TX antenna elevation position on TI 4-chip cascade EVM
    TI_Cascade_Antenna_DesignFreq = 76.8; % antenna distance is designed for this frequency
    speedOfLight = 3e8;
    params.Tx_Ant_Arr_BF = [ 12:-1:4]; %TX channel IDs to use for beamforming; all 16 RX channels are enabled by default
    params.D_TX_BF = TI_Cascade_TX_position_azi(params.Tx_Ant_Arr_BF); %TX azimuth antenna coordinates in unit of half lamda

    % params.D_RX = D_RX; %RX channel azimuth location in the unit of half wavelength
    params.RadarDevice=[1 1 1 1]; %set 1 all the time
    params.Rx_Elements_To_Capture = 1:16; %All Rx


    %% define what angles to steer in TX beamforming mode
    params.anglesToSteer=[-60:1:60]; % angles to steer in TX beamforming mode, in unit of degrees
    % params.anglesToSteer = -20*ones(1,5);
    params.NumAnglesToSweep = length(params.anglesToSteer);

    %% chirp/profile parameters
    nchirp_loops = 64;
    Num_Frames = 5;
    params.Start_Freq_GHz = 77; % starting fequency for chirp, make sure the entire BW is within 76~77 or 77~81
    params.Slope_MHzperus = 79; % MHz/us
    params.Idle_Time_us = 5; % us
    params.Tx_Start_Time_us = 0; % us
    params.Adc_Start_Time_us = 6; % us
    params.Ramp_End_Time_us = 40; % us
    params.Sampling_Rate_ksps = 8000; % ksps
    params.Samples_per_Chirp = 256; % Number of samples per chirp
    params.Rx_Gain_dB = 30; % dB
    % Frame config
    params.nchirp_loops = nchirp_loops; % Number of chirps per frame
    params.Num_Frames = Num_Frames; % number of frames to collect data
    params.Dutycycle = 0.5; % (ON duration)/(ON+OFF duration)
    params.Chirp_Duration_us = (params.Ramp_End_Time_us+params.Idle_Time_us); % us
    params.NumberOfSamplesPerChannel = params.Samples_per_Chirp * nchirp_loops * params.NumAnglesToSweep *params.Num_Frames; %number of ADC samples received per channel. this value is used in HSDC for data capture


    %d = 0.5*actual wavelength/wavelength for antenna design = 0.5 * actual center frequency/board antenna design frequency
    centerFrequency = params.Start_Freq_GHz+(params.Samples_per_Chirp/params.Sampling_Rate_ksps*params.Slope_MHzperus)/2;
    d = 0.5*centerFrequency/TI_Cascade_Antenna_DesignFreq;
    params.d_BF = d;


    %advanced frame config
    params.Chirp_Frame_BF = 0; % 1 - chirp based beam steering, 0 - frame based beam steering
    params.numSubFrames = 1;
    %paramters for subframe 1
    if params.Chirp_Frame_BF == 0 % frame based
    params.SF1ChirpStartIdx = 0; %SF1 Start index of the first chirp in this sub frame
    params.SF1NumChirps = 1; % SF1 Number Of unique Chirps per burst
    params.SF1NumLoops = nchirp_loops;% SF1 Number Of times to loop through the unique chirps in each burst
    %multiply 200 to convert the value to be programed to the register %example:2000000=10ms
    params.SF1BurstPeriodicity = (params.Ramp_End_Time_us +params.Idle_Time_us)...
    *nchirp_loops /params.Dutycycle*200; %example:2000000=10ms
    params.SF1ChirpStartIdxOffset = 1; % SF1 Chirps Start Idex Offset
    params.SF1NumBurst = params.NumAnglesToSweep; % SF1 Number Of Bursts constituting this sub frame
    params.SF1NumBurstLoops = 1; % SF1 Number Of Burst Loops
    params.SF1SubFramePeriodicity = params.SF1BurstPeriodicity*params.NumAnglesToSweep;%SF1 SubFrame Periodicity
    elseif params.Chirp_Frame_BF == 1 % chirp based
    params.SF1ChirpStartIdx = 0;
    params.SF1NumChirps = params.NumAnglesToSweep;
    params.SF1NumLoops = nchirp_loops;
    %multiply 200 to convert the value to be programed to the register %example:2000000=10ms
    params.SF1BurstPeriodicity = (params.Ramp_End_Time_us +params.Idle_Time_us)...
    *nchirp_loops /params.Dutycycle*200 * params.NumAnglesToSweep ;
    params.SF1ChirpStartIdxOffset = 1;
    params.SF1NumBurst = 1;
    params.SF1NumBurstLoops = 1;
    params.SF1SubFramePeriodicity = params.SF1BurstPeriodicity;

    end

    %frame repitition time in unit of ms. THis based on params.SF1SubFramePeriodicity
    params.Frame_Repetition_Period_ms = params.SF1SubFramePeriodicity/200/1000;


    %% algorithm parameters
    params.ApplyRangeDopplerWind = 1;
    params.rangeFFTSize = 2^ceil(log2(params.Samples_per_Chirp));

    %% derived parameters
    chirpRampTime = params.Samples_per_Chirp/(params.Sampling_Rate_ksps/1e3);
    chirpBandwidth = params.Slope_MHzperus(1) * chirpRampTime; % Hz
    rangeResolution = speedOfLight/2/(chirpBandwidth*1e6);
    params.rangeBinSize = rangeResolution*params.Samples_per_Chirp/params.rangeFFTSize;

    end

  • 您可以从以下地址找到相关指南:

    C:\ti\mmwave_studio_03_00_00_14\docs\mmwave_studio_cascade_user_guide

    此外,您可以在您的设置中尝试: 

    nchirp_loops = 16;
    Num_Frames = 16;