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.

Compiler/IWR6843: DSP related questions

Part Number: IWR6843
Other Parts Discussed in Thread: MMWAVEICBOOST, , DCA1000EVM

Tool/software: TI C/C++ Compiler

Dear team,

we are doing Occupancy Detection using IWR6843 and MMWAVEICBOOST.

In order to analyze the algorithms in use in this project, I want to compose the entire algorithm in Matlab.

We only want to receive ADC data using DCA1000EVM and implement the rest of the algorithm in MATLAB.

I would like to ask a few questions about this.

1. Are there any documentation with detailed descriptions of the functions being used in the DSP? If it exists, please let us know its location.

(Documents with one or two lines of function description only are retained. The function we are talking about is a function defined like _amem8_f in the c6x.h file.)

2. If you want to change the whole program function to MATLAB, is there anything else you need to consider other than the questions I asked above?


In addition, thank you for letting me know if there are any ways to be educated on the content of the above questions.

Thank you.

  • Hi Sangyun,

    We currently do not have an example of driving Matlab with the raw ADC data stream.  In this case, the data are sent via Ethernet to a PC application that stores the data directly to file. If you want to prototype the entire processing stream, you will either need to implement your own solution to handle the Ethernet data real-time, or work offline from file.

    With occupancy detection, you really don't need anything other than standard range processing. This reduces the data problem somewhat, but the resulting radar cube is 512KB to 768KB per frame (depending on your configuration), which is still too much data for a fast UART connection.  From the radar cube, there are multiple ways to go. All of our demos utilize MVDR generated heatmaps in one form or other.  For vehicle occupancy, we have two different processing chains:

    C:\ti\mmwave_automotive_toolbox_3_1_0\labs\incabinsensing\front_mount_occupancy

    This demo generates a range-azimuth heatmap, then examines the power in pre-defined zones to determine occupancy.

    C:\ti\mmwave_automotive_toolbox_3_1_0\labs\incabinsensing\overhead_mount_occupancy

    This demo generates a range-azimuth heatmap, but then uses CFAR and an azimuth-elevation heatmap to generate a 3D point cloud (detection list), then a state machine to determine occupancy.

    Also, functions such as _amem8 are compiler intrinsics, and are described in the C674 Optimizing Compiler user guide, search for SPRUI04B on ti.com. When you see intrinsics in our demos, these code sections are highly optimized by an expert. You can use the user guide to figure out what each intrinsic is doing, but it is a tedious process.

  • Dear Team,

    The part that we want to implement in Matlab is to implement the algorithm using Matlab for the stored ADC data, not running in real time.

    At this time, the algorithm is implemented using the function defined in c6x.h mentioned above, and I want to know if there is anything implemented in Matlab for this part.

    Thank you.

  • The c6x.h file contains what are known as intrinsics which allows C code to inline C6x instructions. The amem8* are not functions but "aligned memory to 8 bytes". In order to understand what all this means, you may need to look at compiler UG, CPU and instruction set UG, and possibly C674x Megamodule UG [don't ask us for links to these as they should come up by just searching in your browser].

    The following is not supported anymore (we will not be answering any questions related to these) but you may find useful [simply obtained by doing a google search on "TI C6x.h matlab"]:

    Above is also mentioned in the post [this also shows up in google search]: