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.

CCS/AWR1642BOOST: AWR1642: How to read 1dfft data from Ti in mmw demo

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642

Tool/software: Code Composer Studio

Hello,

We are developling the AWR1642 EVB,now we hope we can get the 1DFFT results with CAN tools or with UART,how should we modify the code of mmw demo?

Thanks!

  • Hi

    In dss_main.c:: MmwDemo_dssSendProcessOutputToMSS, you can add an extra message to send the 1D FFT output through UART.  The 1D FFT output for one whole frame is stored in the variable radarCube.

    You can modify the code corresponding to the rangeDopplerHeatMap to send the radarCube out.

    if (pGuiMonSel->rangeDopplerHeatMap == 1)

    {

       itemPayloadLen = obj->numRangeBins * obj->numDopplerBins * sizeof(uint16_t);

       message.body.detObj.tlv[tlvIdx].length = itemPayloadLen;

       message.body.detObj.tlv[tlvIdx].type = MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP;

       message.body.detObj.tlv[tlvIdx].address = (uint32_t) obj->detMatrix;

       tlvIdx++;

       totalPacketLen += sizeof(MmwDemo_output_message_tl) + itemPayloadLen;

    }

    ff you modify the above code as follows, it will send the radarCube instead of the rangedoppler heat map

    if (1)

    {

       itemPayloadLen = obj->numVirtualAntAzim* obj->numRangeBins * obj->numDopplerBins * sizeof(uint16_t)*2;

       message.body.detObj.tlv[tlvIdx].length = itemPayloadLen;

       message.body.detObj.tlv[tlvIdx].type = MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP;

       message.body.detObj.tlv[tlvIdx].address = (uint32_t) obj->radarCube;

       tlvIdx++;

       totalPacketLen += sizeof(MmwDemo_output_message_tl) + itemPayloadLen;

    }

     

    Set your frame rate to something small 0.25 Hz, since it would take a long time to transfer the 1D FFT output for a single frame

    Regards

    Anil

  • Thanks,
    And Could be to see 1DFFT result in mmWave_Demo_Visualizer ?
  • Hi, 

    No. It cannot be seen in the visualizer. You'd have to write your own visualizer to view the data. 

    Regards

    Anil

  • Hello Anil,

    I follow the solution you suggested above but I still encounter some failure!

    Could you tell me how to set the frame rate to 0.25 Hz?

    Because when i tried to set Frame periodicity = 4000 ms to achieve 0.25 Hz frame rate as suggested, it always generated some configuration errors! I discover that in both the visualizer and the Radar mmwave_calculation, the lowest allowable value of Frame rate is 1Hz, so I just wonder how you can do that?

    When I set the frame rate equal to or higher than 1Hz, then some time issues are raised due to the long time it takes to transfer 1D FFT to output?

    I also tried to adjust some variable like loop number and Idle time but it seems doesnt help! I set idle time up to 1000 usec and loop number down to 16. If I set idle time above this value then I encounter some configuration error again!

    Could you suggest me some solution for this?

    Thanks!

    Best regards,

    Taiga

  • Hi Taiga,

    Apologies. I just realized that the slowest framerate is ~1Hz, and it seems as though the UART data rate isn't sufficient to transfer the radarcube in 1Hz. Could you share the exact error you are seeing when you set the frame rate to 1Hz?

    My suggestion would be to reduce the size of the radarcube.

    Could you try again with the 64 ADC samples per chirp, and only 16 chirps?  You could try the following configuration.

    sensorStop

    flushCfg

    dfeDataOutputMode 1

    channelCfg 15 3 0

    adcCfg 2 1

    adcbufCfg -1 0 0 1 0

    profileCfg 0 77 7 7 58 0 0  68 1 64 5500 0 0 30

    chirpCfg 0 0 0 0 0 0 0 1

    frameCfg 0 0 16 0 1000 1 0

    lowPower 0 0

    guiMonitor -1 1 1 1 1 1 1

    cfarCfg -1 0 2 8 4 4 0 5120

    cfarCfg -1 1 0 8 4 4 0 5120

    peakGrouping -1 1 0 0 1 224

    multiObjBeamForming -1 1 0.5

    calibDcRangeSig -1 0 -5 8 256

    extendedMaxVelocity -1 0

    clutterRemoval -1 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

    sensorStart

     

    Regards

    Anil

  • Dear Anil, 

    Thanks for your answer, your configuration works well. But could you show me how calculated the time to choose this configuration.

    By the way, here is the error when i set frame rate = 0.25, equivalent with frame periodicity = 4000 ms.

    Best regards,

    Taiga

  • Hi Taiga,

    The UART interface can transfer data at speeds of up to 921600 bps (or ~100kilobytes/sec). In practice, and with overheads, we can manage about 50kilobytes/sec

    The size of the radar cube is 64 x 16 x 4 x 4 bytes (16kilobytes). Where
    1. Length of 1D FFT output per chirp- 64
    2. Number of Chirps per frame - 16
    3. Number of Rx enabled - 4
    4. Bytes per ADC sample - 4 (Each ADC sample is a complex number with 2 bytes for the real part and 2 for the imaginary part).

    The radarcube that is to be transferred out is 16kilobytes/sec.

    Note that in addition to the radarCube the device also sends out detected objects, some profiling information, the range profile, and some header information. The total packet size per frame should be less than the rate which is why we've selected such a small size.

    Regards
    Anil
  • Dear Anil,

    Thank you so much for your useful information.

    Best regards,

    Taiga