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: chirp configuration code that runs on the device or using mmWave Studio

Part Number: AWR1843BOOST
Other Parts Discussed in Thread: IWR6843, AWR1843, AWR1642

Hi Experts,

This is a continuation of the previous e2e thread:  AWR1843BOOST: How to get data generated to plot ISAR images by AWR1843.

I am passing the screenshots of ptrProfileCfg, ptrChirpCfg, ptrFrameCfg from mss.c
I am having difficulty in taking values, because of notations like 1U<<26.
How to get the values of "fc, Fs, sweepSlope, Tc, max_value" from these.

Please help to share the code that you have used. 

Thank you in advance for your support.

Best regards,

Jonathan

  • Hi Johnathan,

    Please refer to the file mmwave_sdk_<ver>\packages\ti\control\mmwavelink\include\rl_sensor.h

    This will have the comments on how to calculate/set values of a given parameter to the device.

    • Central frequency can be calculated using the Start frequency, and end frequency (which can be obtained using the sweep slope and active chirp time) as Fc = sqrt (Fstart *Fend).
    • Fs -> If you are referring to start frequency, that would be 77 GHz; if it is IF sampling rate it would be 6000 Ksps
    • SweepSlope will be 40 khz/us
    • Tc will be equal to [(Duration from ADC Start time to Ramp end time) + Idle time], out of which the first expression would have the Active chirp time.
    • Not sure as to what max_value it is you are referring to. Please give more details.

    Regards,

    Kaushik

  • Hi Kaushik,

    Thank you. 

    Not sure as to what max_value it is you are referring to. Please give more details.

    And the max_value is the value used for normalization which is used in 'get_params.m' file of github code I previously referred to.

    We are looking forward to your update.

    Best regards,

    Jonathan

  • Hi Johnathan,

    As Cesar pointed out in the previous thread, we don't provide support regarding the github code you referred to. You would have to contact the developer of the code or go through it yourself and arrive at an understanding.

    Regards,

    Kaushik

  • Hi Kaushik,

    Please help us once again.

    The customer is asking us to give the values of the required parameters from the screenshots as they are unable to calculate the values.

    They reminded us about the problem and issue that was raised originally on how to get the Range-Doppler Heatmap from the data.

    Best regards,

    Jonathan

  • Hey Johnathan,

    As I mentioned, the code was developed by someone outside of TI and it is not within our scope to provide support this. If the customer can go through the code they mentioned and explain the question in detail by posing question in a way it is aligned with out documents or SW or chip, I might be able to help.

    Regards,

    Kaushik

  • Hi Kaushik,

    Here is the customer's feedback and you might be able to help us with this. 

    I am getting the ADC data as given in the 5.4.19.3 section of the mmWave SDK user guide.
    I am trying to get the range-Azimuth heatmap like it will e generated in the mmWave SDK, which needs for my work.
    I am unable to get the plot. As I am unaware of the processing steps for it, could you help me tell the processing steps?
    If this can be achieved, we can close this case.

    When it comes to the value of fc, Fs, sweepSlope, Tc.
    fc is center frequency
    Fs is the sampling frequency in range direction.
    1/Tc is the sampling frequency in azimuth direction.
    sweepSlope is the frequency slope of the FMCW wave used in the EVM.

    I am unable to get these values because of the signs like << and not knowing whether to multiply the values with some sec or micro sec.

    Best regards,

    Jonathan

  • Hi Johnathan,

    Please find the following thread where range azimuth heatmap generation is discussed in detail.

    (+) DCA1000EVM: With IWR1642BOOST, how to process the raw data captured by DCA1000EVM to draw the azimuth range heatmap like OOB demo - Sensors forum - Sensors - TI E2E support forums

    Regarding the units, I have already mentioned the header file that has comments about this conversion along with the units. Please do refer to that and let me know what exactly the issue is, if any.

    Regards,

    Kaushik

  • Hi Kaushik,

    Here is the customer's feedback.

    I have seen rl_sensor.h.
    It is only mentioned what the terms mean. But nowhere mentioned the multiplication and other terms like <<.

    In some places, it has "1 LSB = value". what it means.

    When it comes to the link you mentioned they referred  the document "Mmwave Radar Device ADC Raw Data Capture", last revised in 2018 and there is no mention of awr1843. It has info only about xWR12xx, xWR14xx, xWR16xx and IWR6843. I can't find "capture_demo.m" used for reading the saved adc data in the installed mmWave directory. Is there a recently revised version of the document?

    I don't clearly understand "In the OOB demo, the zero doppler bin signal is transferred out into visualizer, and azimuth range heatmap is then generated inside OOB visualizer through FFT process."

    Does Angle FFT should be performed in the Rx dimension after 1D FFT (range FFT) or 2D FFT (both range Range FFT and Doppler FFT) performed on the ADC data,

    Best regards,

    Jonathan

  • Hi Johnathan,

    Please find my responses below.

    1. In some places, it has "1 LSB = value". what it means.-> You can multiply this with the evaluated value as a scalar to get the actual value. 
    2.  Is there a recently revised version of the document? -> The data format of the AWR1843 will be the same as that of AWR1642. Please refer the same from the document. Please look into this thread for more detail. 
      (+) AWR1843BOOST: using AWR1843 and DCA1000 to capture rawdata,the contexts of readDCA1000.m should be? - Sensors forum - Sensors - TI E2E support forums
    3. Does Angle FFT should be performed in the Rx dimension after 1D FFT (range FFT) or 2D FFT (both range Range FFT and Doppler FFT) performed on the ADC data,? -> Typically, the angle FFT is performed after the 2D FFT. In the OOB, 2D FFT gives us the zero doppler ranges of values, across whose Rx angle FFT is performed

    Please let me know if anything further is required.

    Regards,

    Kaushik

  • Hi Kaushik,

    Here is the customer's response below.

    You said to multiply the 1LSB value.
    But I am not getting the value and even the units are inconsistent. For example,

    You said,
    SweepSlope = 40 KHz/us. But in 1 LSB = 10ns for it in "rl_sesor.h"
    Start Freq = 77GHz. But in 1 LSB = 10ns for it in "rl_sesor.h"
    sampling rate = 6000ksps. But it has no LSB value.
    Also, How to calculate end frequency (Fend)

    I am forwarding the "rl_sensor.h" file. Could you please calculate these values along with Tc.

    rl_sensor.h

    Also, another doubt is,
    The capture demo using CCS is configured for 1Tx and 1Rx cases.
    What value should I change to configure it to the 2Tx, 4Rx?

    Best regards,

    Jonathan

  • Hi Johnathan,

    Please look at the appropriate comments. 

    Starting frequency:

    Slope:

    Sampling rate:

    The capture demo using CCS is configured for 1Tx and 1Rx cases. -> Can you mention which demo you are talking about?

    In any case, you would have to enable all the Receivers in the channel config and enable the Tx of choice in TxEnable under chirp configuration.

    Regards,

    Kaushik

  • Hi Kaushik,

    Kindly confirm our customer's feedback below.

    I am able to calculate,
    Fs = 6000*1kbps
    Sweep Slope = 40*48.279 kHz/uS = 1931.16 kHz/uS
    Ramp start time = 500*10nS =5000nS
    Ramp end time = 800*10nS = 8000 nS
    idle time = 1000*10nS = 100000 nS
    Therefore, Tc= (Ramp end time - Ramp start time) + idle time = 103000 nS

    Are these values correct?
    But still, I am unable to calculate Fc, because not knowing how to calculate the Fend. and the Bandwidth. How to calculate these?
    For stating frequency, is it 77GHz or 77 * 53.644

    And about changing 1Tx, 1Rx to 2Tx, 4Rx case, In mss.c file ("C:\ti\mmwave_sdk_03_06_00_00-LTS\packages\ti\drivers\test\mem_capture\xwr18xx\mss.c") I changed

    In channel Config,
    rxChannelEn = 15U (previously 2U)
    txChannelEn = 5U (previously 1U)

    In Chirp Config,
    txEnable =5U (previously 1U)

    Are there any other places I need to change also for 2Tx or 4Rx?
    Regarding txChannelEn, is it 3U or 5U for 2 azimuth Tx. Because in mmWave SDK user guide it is "IWR6843 5U and for xWR1642 it is 3U"

    Thank you.

    Best regards,

    Jonathan

  • Hi Johnathan,

    The calculations for each of the fields are written in such a way that the first literal of the expression corresponds to the value that needs to be programmed after the conversion into the required format. You would have to start decoding once the full expression is evaluated. The values here would simply be: 

    Fs = 6000 ksps
    Sweep Slope = 40 MHz/uS
    Ramp start time = 5 us
    Ramp end time = 80 us
    idle time = 100us

    But still, I am unable to calculate Fc, because not knowing how to calculate the Fend. and the Bandwidth. How to calculate these?

    You can calculate the End frequency and bandwidth using the slope, starting frequency and the ramp end time.

    End frequency = Start Frequency + (Slope * Sampling time) where sampling time will be (Ramp end time - ADC start time). The second term also gives you the Bandwidth of the sweep.

    Are there any other places I need to change also for 2Tx or 4Rx? ->

    This should be sufficient if you are running directly out of the demo.

    Regards,

    Kaushik

  • Hi Kaushik,

    Here is the customer's response below.

    I don't understand "The calculations for each of the fields are written in such a way that the first literal of the expression corresponds to the value that needs to be programmed after the conversion into the required format. You would have to start decoding once the full expression is evaluated "
    Does this mean we have to take the first letter (ex: 40 in (40U* (1U<<26)/(3.6*1e3*900)) and multiply it with the unit in 1LSB?
    Am I understanding it correctly? Could you explain in plain words?

    If my understanding is correct, values are
    Tc =175uS,
    BW = 40k*75 = 3MHz
    Fend = 77G+40k*75 = 77.003GHz
    Fc = sqrt(Fstart*Fend) = 77.0015GHz

    But I think the frequency slope is in MHz/uS (as per mmWave SDK 3.6 user guide), not kHz/uS. Because if it is kHz/Hz, the range resolution would be 50 meters (=c/2*BW as per "Programming Chirp Parameters in TI Radar Devices.pdf"). It's too much.
    If it is MHz/uS, the BW = 40M*75 = 3GHz, and the range resolution would be 5 Centi meters.

    Which of these is correct?

    Also not told, is it 3U or 5U for 2 azimuth Tx enable.

    Also, can you tell me, does the frequency slope of the chirp is linear (like sawtooth) or triangular?

    Best regards,

    Jonathan

  • Hi Kaushik,


    I will try to explain the same in different words.

    To program the device with a sweep slope of 40 KHz/us, you would have to feed it in the following format:

    (40* (1<<26) / (3.6*1e3*900)) because of the mapping to each LSB.

    Similarly, other fields are to be programmed. Hope it's clear.

    Also, please check your calculations with the correct units.

    Is it 3U or 5U for 2 azimuth Tx enable? -> 5U

    Also, can you tell me, does the frequency slope of the chirp is linear (like sawtooth) or triangular? -> The slope is linear like a sawtooth

    Best regards,

    Jonathan

  • Hi Kaushik,

    Here is our customer's response. Thanks.

    If it is about kHz/us, what about range resolution? It is coming about 50m. Is it that much high?

    I used the config file provided in 'C:\ti\mmwave_sdk_03_06_00_00-LTS\packages\ti\demo\xwr18xx\mmw\profiles' where along with the parameters the resolution values are also given. There it is showing Frequency slope is in MHz/uS. I have calculated the range resolution C/(2*BW) value for it, which has the same value in that file.

    Also, what is the 'computation time' you mentioned in e2e.ti.com/.../4599485, while calculating the 'Active Frame time'.

    also, what is the difference between 'number of loops' and 'number of chirps in a sequence'?
    Does the 'number of chirps in a sequence' related to using multiple transmitters using 'chirp start index' and 'chirp end index' mentioned in 'chirpCfg' command

    Best regards,

    Jonathan

  • I would suggest user to refer our existing documentation to fully understand the concept of device configuration parameters

    https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-PIrUeCYr3X/03.06.00.00-LTS/mmwave_sdk_user_guide.pdf (table for Configuration command )

    https://www.ti.com/video/5427375477001

    https://www.ti.com/lit/wp/spyy005a/spyy005a.pdf

    https://www.ti.com/lit/an/swra553a/swra553a.pdf

    With above collaterals, hope all his questions will be answered.

    Regards,

    Jitendra

  • Hi Jitendra,

    Thank you for your usual support.

    Here is the customer's response below.

    About the frequency slope constant, he referred mmWave User guide which I told him had MHz/us. So I take it as MHz/us., Could you ask him whether it is MHz/uS?

    Did not tell about the "computation time". I will look into the documents, I am a bit occupied.

    Also did not tell about the difference between the 'number of loops' and 'number of chirps in a sequence

    Best regards,
    Jonathan
  • User needs to understand the whole concept provided by existing documents

                         open-in-new mmWave-Radar-Interface-Control.pdf                     On top of above mentioned document, this document explains same info in detail. Here you can find out each API parameter unit.

    freq. slope is in Mhz/us unit (mega-hearts per microsecond).

    I would request user to search across e2e.ti.com to find detail on these basic technical queries. There are lot of existing E2E threads where other users had asked similar questions.

    (+) IWR6843: Chip Loops and frame periodicity in mmWave Studio sensor configuration tab - Sensors forum - Sensors - TI E2E support forums

    (+) Number of chirp loop per frame - Sensors forum - Sensors - TI E2E support forums 

    No. of loops is repetition of selected chirp group in a frame which give number of total chirps in a frame

    no. of chirp in a frame = (chirp_end_index - chirp_start_index)* num_of_loop 

    See updated thread, for only RF signal (in term of front end chirp/frame), you should not assume computation time 

    Further, I assume that user will go over the all provided documents first for basic understanding of mmwave sensor feature/technical-aspects and then only come back with more queries.

    Regards,

    Jitendra

  • Hi Jitendra,

    Thanks a lot for your response and apologies for the delay.

     Here is the customer's response below:

    I read the documents and with the help of "Profile_2d.cfg" file of mmWave Demo, I am able to compute the times given the thread

     (+) AWR1843: Elapsing time between two consecutive chirp sample - Sensors forum - Sensors - TI E2E support forums

    As per the values of profile_2d config,

    Frame time (active) = RampendTime*NumLoops*Tx = 39*32*2 = 2.496 mS
    Frame time (total chirping time) = (RampendTime+Idle Time)*NumLoops*Tx = 46*32*2 = 2.944 mS, which suited already given values in profile_2d.cfg.

    Here I have taken, number of chirps in a sequence = Number of Tx, because from the document www.ti.com/.../swra554a.pdf (MIMO Radar) in TDM-MIMO two chirps are sent after one another from each of the two transmitters. From, the mmWaveSDK, User Guide 1843 uses only TDM-MIMO, not BPM MIMO.

    So I believe, number of chirps in a sequence = Number of Tx, Am I correct?

    This where I h=got the doubt that the 'ChirpCfg' command (which has Chirp-start index, Chirp-end-index, Tx enable) is mentioned two times in profile_2d.cfg, with different Chirp-start index, Chirp-end-index, Tx enable to enable two Tx. (see Figure).

    But the mss.c only has one chirpcfg with chirpstart index =1, end index =1,txEnable=1U, how can I enable 2Tx in it?

     

    Also add
    InterFrameTime (Idle Frame time) = Frame periodicity - Total Frame time =100 - 2.944 = 97.056mS (Frame Periodicity given in frameCfg command) (or)
    InterFrameTime (Idle Frame time) = Frame periodicity - Active Frame time =100 - 2.496 = 97.504 mS

     We'll be waiting for your kind support.

    Best regards,

    Jonathan

  • Hi Johnathan,

    So I believe, number of chirps in a sequence = Number of Tx, Am I correct?

    This depends on your modulation and chirping scheme. You can have more or less number of chirps than number of Tx.

    But the mss.c only has one chirpcfg with chirpstart index =1, end index =1,txEnable=1U, how can I enable 2Tx in it?

    You can change the value of TxEnable. This can be observed in the last value of the chirpCfg (Refer to the CLI cfg format in the mmwave SDK userguide)

    Please note that the documents linked above are sufficient to understand and answer the questions the customer may come up with. Therefore, support on such topics will be limited. Kindly feel free to create a new thread to discuss issues that could've potentially been missed out in the documents.

    Regards,

    Kaushik