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.

AWR1642BOOST: Is there any method to transmit all 2D fft result of virtual antennas through lvds?

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642, DCA1000EVM

Hi,

I am trying to transmit all 2D fft result for all virtual antennas through lvds with AWR1642 BOOST and modified mmw demo file and DCA1000EVM.

What i am stuck is that when the number of range bins increases from 64 to 256 (now i am using 16 doppler bins and 8 virtual antennas), the radar stops when activate it.

I am currently using 6 user sw lvds buffers with modification at some files with references from https://e2e.ti.com/support/sensors/f/1023/t/795299

And i checked that all 6 buffers work well when tested with 64 range bins.

However when i increase that number of range bins to 256, the board stops

Below is the code that I put 2D fft data to lvds user buffers at dss_lvds_stream.c

For here lvds_data means &gMmwDssMCB.dataPathObj[0]; (I do not use subframe mode. so i just picked first array of dataPathObj)

sessionCfg.u.swCfg.userBufferInfo[0].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[0].address = (uint32_t)(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap);

sessionCfg.u.swCfg.userBufferInfo[1].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[1].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3 - 1]);

sessionCfg.u.swCfg.userBufferInfo[2].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[2].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 6 - 1]);

sessionCfg.u.swCfg.userBufferInfo[3].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[3].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 9 - 1]);

sessionCfg.u.swCfg.userBufferInfo[4].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[4].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 12 - 1]);

sessionCfg.u.swCfg.userBufferInfo[5].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas);
sessionCfg.u.swCfg.userBufferInfo[5].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 15 - 1]);

And below is the part that i modified at dss_data_path.c to send all 2D fft result about all doppler bins

for (doppler_index_heatmap = 0; doppler_index_heatmap < obj->numDopplerBins; doppler_index_heatmap++)
{

obj->azimuthStaticHeatMap[binIndex * (obj->numDopplerBins) + rangeIdx * obj->numVirtualAntAzim * (obj->numDopplerBins) + doppler_index_heatmap].real =
(int16_t)(obj->fftOut2D[doppler_index_heatmap].real >> (obj->log2NumDopplerBins + 4));
obj->azimuthStaticHeatMap[binIndex * (obj->numDopplerBins) + rangeIdx * obj->numVirtualAntAzim * (obj->numDopplerBins) + doppler_index_heatmap].imag =
(int16_t)(obj->fftOut2D[doppler_index_heatmap].imag >> (obj->log2NumDopplerBins + 4));

}

Does the size of 2D fft result of all doppler bins and virtual antennas is so big to save at  dataPathObj[0].azimuthStaticHeatMap? Or do i mistake at some parts?

Thanks a lot

Jinhyeong Kim

  • Hi,

    Can you please provide more details about "radar stops"? Do you see any error message?

    We have to discuss this question with our extended team.
    Will get back to you as soon as possible.

    Thank you
    Cesar
  • Currently I do not use CCS. I am just using AWR1642 and DCA1000EVM and send configuration command thorugh UART using MATLAB function. So I could not find any error message from radar.

    But the reason why i said 'stop' is that when i try to send lvds data by pushing 'Capture start' button on DCA1000EVM, it tries to send message few seconds and stop blinking and the LED 'lvds_path_err' turns on.

    Also when I resend configuration message through UART, It does not receive that message.

    Below is the MATLAB command window when i re-send configuration file and radar does not receive it.

    And below is the configuration file that i used. but when i use other configuration file (best range and 64 range bins and 8 channels and 16 doppler bins) this problem does not occur.

    % ***************************************************************
    % Created for SDK ver:02.01
    % Created using Visualizer ver:3.1.0.1
    % Frequency:77
    % Platform:xWR16xx
    % Scene Classifier:best_range_res
    % Azimuth Resolution(deg):15
    % Range Resolution(m):0.044
    % Maximum unambiguous Range(m):9.02
    % Maximum Radial Velocity(m/s):1
    % Radial velocity resolution(m/s):0.13
    % Frame Duration(msec):100
    % Range Detection Threshold (dB):15
    % Doppler Detection Threshold (dB):15
    % Range Peak Grouping:enabled
    % Doppler Peak Grouping:enabled
    % Static clutter removal:disabled
    % ***************************************************************
    sensorStop
    flushCfg
    dfeDataOutputMode 1
    channelCfg 15 3 0
    adcCfg 2 1
    adcbufCfg -1 0 0 1 0
    profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    frameCfg 0 1 16 0 100 1 0
    lowPower 0 1
    guiMonitor -1 1 1 0 0 0 1
    cfarCfg -1 0 0 8 4 4 0 5120
    cfarCfg -1 1 0 4 2 3 0 5120
    peakGrouping -1 1 1 1 1 255
    multiObjBeamForming -1 1 0.5
    clutterRemoval -1 0
    calibDcRangeSig -1 0 -5 8 256
    extendedMaxVelocity -1 0
    bpmCfg -1 0 0 1
    lvdsStreamCfg -1 1 0 1
    nearFieldCfg -1 0 0 0
    compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    measureRangeBiasAndRxChanPhase 0 1.5 0.2
    CQRxSatMonitor 0 3 5 123 0
    CQSigImgMonitor 0 127 4
    analogMonitor 1 1
    sensorStart

    If you need more information, I will send whole code that i modified based on mmw demo SDK.

    Thank you for your help.

    Jinhyeong Kim

  • In order to understand what is going on, you need to see the error message if any reported by the code. So either modify your Matlab to printout any received UART message or (preferable option) load and run the code using CCS so you can see the message on the console. I assume you had to modify the code anyway for all these changes, so if you are not using CCS you must have flashed the code, during development work it is preferable to use CCS so you can easily debug the application.