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.

AWR1843BOOST: Medium Range Radar example: taking raw cropped radarcube data out from L3 cache through MSS UART

Part Number: AWR1843BOOST


Hi, 

I want to get the raw 3D-FFT data from the 1843 EVM. The easy way is using DCA module, but I want to get only a small relevant subsection of the 3D-FFT radarcube using the USB cable at the EVM. For this, I am using the automotive toolbox's "medium-range radar" example (http://dev.ti.com/tirex/explore/node?node=AObIl5yAPR-DjIwxgdgyuA__AocYeEd__LATEST). 

The data processing chain, from documentation, is: ADC captured data >> range FFT >> L3 cache >> velocity FFT >> L3 cache >> Detection >> angle FFT >> further processing >> MSS UART output .

In this chain, I want to bypass the detection and get a cropped angle FFT output directly through MSS UART. In the source code of the project, /src/dss_data_path.c, I can find functions defined for data transfer through different stages in the above chain, however, I am not finding the function (main or something else), which calls them in sequence. The /src/dss_main.c doesn't seem to be calling them either, though it does have a

BIOS_start()

call after initializing data structures. 

Can anyone please suggest where the chain of processing functions is called? 

Thanks.

 Arvind

  • The function you are looking for is MmwDemo_interFrameProcessing().  Towards the end of the function, you will find the function call to aziEleProcessing(). This is where the azimuth FFT processing is performed on the pruned detection list.  You can remove or modify the function populateOutputs() to send just the data you want.

    -dave

  • Hi Dave, 

    Thanks a lot for your help. Yes, the processing steps are in MmwDemo_interFrameProcessing() function and populateOutputs() function populates the payload for transmission through MSS. I still have a few questions; it would be great if you could please answer them:

    1. For starter, I want to send uint_16 32x32 size sumAbs (sum log2Abs of FFTs over rx antennae) through MSS. The description of populateOutputs() function mentions selecting payload data for tx through UART from MSS. However, I am not sure what is the size/format of the payload and how the tx data getting selected at populateOutputs(). Could you please explain? Is it through pruning MmwDemo_DSS_DataPathObj_tataPathObj to keep only the desired data or something else?
    2. The MSS main code (mss_main.c) seems to be reading payload data at DSS from a mailbox message. Is this the case? Also, can you please tell when and how is the tx-data-ready mailbox message sent to MSS?
    3. The baud rate of UART is 115200 bauds/s and a baud is 8-bits. So is this the maximum data rate I can achieve through UART or higher is possible given the data is being sent through USB2.0 at EVM?

    Thanks again. 

    Best,

    Arvind

     

  • So the 'scratchable' memory allocations for different stages are done using  MMW_ALLOC_BUF(), and I am still trying to figure out how the memories for Tx (like MmwDemo_detectedObjForTx) are getting accessed by the MSS for output through UART. Any suggestions?

    Thanks. 

  • 1) All demos send data to UART in a "TLV" format.  This format is explained in the HTML documentation for the SDK's mmw demo, and in the user guides for other demos/labs. C:\ti\mmwave_sdk_03_03_00_03\packages\ti\demo\xwr18xx\mmw\docs\doxygen\html\index.html and search for TLV. You will need to remove TLVs you don't need or replace one of them with your new TLV data.  The method for sending data to the MSS is either via shared memory, or sometimes with mailbox.  With something large like what you want to send, you should place it in shared memory.

    2) Usually, the main header and TLV header info are sent via mailbox, with pointers to where the payload data actually resides (ie. in a shared memory).

    3) I would recommend using the DATA UART, which is normally configured in the demos at 921600 baud. This is the UART normally used by all demos to transmit output data.  If your data block is 16-bit * 32 * 32 = 2KB, you'll be able to send probably 3 to 4 of them at 921600 without having to slow your frame rate.

      -dave