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.

IWR1843: Subframes with unequal frame rates

Part Number: IWR1843

Hi there,

I am currently trying to develop a system using the IWR1843 module for obstacle avoidance on a drone platform. We were hoping to utilise multiple subframes - one for short range (<15 m) and one for long range (detecting other vehicles in the air at longer distances). Our issue is that in order for the short range to work properly, we need to run it at ~25 Hz or greater, whereas for the long range, it could run at a slower rate (potentially 5Hz). From the demo visualiser, the maximum number of subframes per second is limited to 30, and if multiple subframes are configured, every frame contains both subframes. Therefore, with two subframes configured, the maximum frame rate is dropped to 15 Hz. Hence two questions arise:

Is it possible to run the two subframes at different rates? (eg. one at 25 Hz, the other at 5Hz)

Alternatively, is the maximum frame rate actually higher than 30, and is this easy to calculate given the specific profiles I aim to use?

  • Hello.

    This should be possible as the subframe periodicity can be set for each subFrameCfg CLI command via the last parameter.  Please note that this value should be the same as the burst periodicity parameter in the subFrameCfg command.  This information can be found in the mmwave_sdk user guide document.

    Sincerely,

    Santosh

  • Hi Santosh, 

    Thanks for your reply. I too thought that this would give the desired output, however I found it to actually be slightly different. As shown below, when I set the periodicity of subframe 0 to 50 ms and of subframe 1 to 200ms, it outputs the two subframes one after the other at an overall period of 250 ms.

    With the config

    advFrameCfg 2 0 0 1 0
    subFrameCfg 0 0 0 3 20 50 0 1 1 50 
    subFrameCfg 1 0 3 3 20 200 0 1 1 200
    The frames are outputted as below:
    Subframe 1 Outputted at time: 4.13 s

    Subframe 0 Outputted at time: 4.33 s

    Subframe 1 Outputted at time: 4.38 s

    Subframe 0 Outputted at time: 4.58 s

    Subframe 1 Outputted at time: 4.63 s

    Subframe 0 Outputted at time: 4.83 s

    Subframe 1 Outputted at time: 4.88 s

    Subframe 0 Outputted at time: 5.08 s

    Subframe 1 Outputted at time: 5.13 s
     
    Have you witnessed different behaviour using the same commands?
    Regards,
    Sam
  • Hello.

    Is that not what you want?  Each frame will be a combination of the two subframes, so the overall frame periodicity of the frame should be the sum of the two subframe periodicities.  It also looks according to your output that each subframe is executing at its specified periodicity.

    Sincerely,

    Santosh

  • Hi Santosh,

    Sorry, I must not have explained myself properly. As mentioned in the initial thread, the ideal behavior is to have the two subframes running at different frame rates (1/SUBFRAME_PERIODICITY) as opposed to both running at the same frame rate (1/FRAME_PERIODICITY).

    For the example I showed above, the ideal output for my use case would be:

    Subframe 0 Outputted at time: 0.025 s

    Subframe 0 Outputted at time: 0.075 s

    Subframe 0 Outputted at time: 0.125 s

    Subframe 0 Outputted at time: 0.175 s

    Subframe 1 Outputted at time: 0.2 s

    Subframe 0 Outputted at time: 0.225 s

    Subframe 0 Outputted at time: 0.275 s

    Subframe 0 Outputted at time: 0.325 s

    Subframe 0 Outputted at time: 0.375 s

    Subframe 1 Outputted at time: 0.4 s

    I understand this is probably not possible by solely editing the config file, however I was wondering if anyone had experience with editing the demo code to achieve this behavior? Alternatively, I may just have to set up a number of duplicate subframes in order to achieve this behavior.

    Regards,

    Sam

  • Hello Sam.

    I believe that subframes are configured to operate consecutively, so subframe 0 will execute, then subframe 1 will execute, and that will be the completion of the frame.  Something you could explore is changing the frame configuration after the completion of each frame so you can just use frame configuration rather than using subframes.  In the Power Switching Modes example project under Fundamentals, something like this is done to switch between two entire chirp profiles.  However, you could just restrict this to reconfiguring the frame configuration.  In that guide, you can look at the developer's guide and adapt what is useful for what you are trying to do, and ignore the steps regarding reconfiguring the tracker.  Something similar is also done in the 6432 implementation of the gesture_recognition demo so you can also check out that lab for a reference.  

    Sincerely,

    Santosh