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.

AWR2944P: Questions about Adv Frame Configuration of 2x44p

Part Number: AWR2944P

Tool/software:

Hi expert

I'm encountering some issues when configuring adv frame for 2x44p. As far as I know, up to 4 subframes can be configured under adv frame. Currently, we've used 2 subframes named A and B. Here are my two questions:
  • Trigger Sequence: When performing trigger operations, is it necessary to trigger in the order of A, B? Can we achieve triggering A, A, A, A for a certain period of time, and then triggering A, B, A, B, A, B, A, B for another period?
  • Reconfiguration Time: I've found that reconfiguring 1 subframe of adv frame takes a significant amount of time, exceeding 12ms. Is this normal?
  • the configuration is as follows:
        rlAdvFrameCfg_t  advFrameCfg;
        uint8_t u8DeviceMap;
        uint8_t subFrameNum;
        /* Initialize the frame configuration: */
        memset ((void *)&advFrameCfg, 0, sizeof(rlAdvFrameCfg_t));

        /* Populate the frame configuration: */
        advFrameCfg.frameSeq.numOfSubFrames = 1;
        advFrameCfg.frameSeq.forceProfile = 0;
        advFrameCfg.frameSeq.numFrames = 1;
        advFrameCfg.frameSeq.triggerSelect = 1;
        advFrameCfg.frameSeq.frameTrigDelay = 0;
        advFrameCfg.frameData.numSubFrames = 1;

        /* Populate the sub_frame configuration: */
        subFrameNum = 0;    

        /* Initialize the sub_frame configuration: */
        memset ((void *)&advFrameCfg.frameSeq.subFrameCfg[subFrameNum], 0, sizeof(rlSubFrameCfg_t));

        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].forceProfileIdx = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdx = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfChirps = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numLoops = 768;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].burstPeriodicity = (uint32_t)(50* 1000000 / 5);
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdxOffset = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurst = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurstLoops = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].subFramePeriodicity = (uint32_t)(50 * 1000000 / 5);

        {  
            /* Create a local device map to select each device one per one */
            u8DeviceMap = (uint8_t) ((uint32_t) 1U << 0);
       
            errorCode = rlSetAdvFrameConfig(u8DeviceMap, &advFrameCfg);
            if(errorCode != 0)
            {
            }
        }  
I look forward to your answers.
  • Hello,

    For the desired trigger sequence, will it be possible to split it into two different types of frames? First frame only consisting of one subframe A repeating either using numOfBurstLoops or by using numFrames as required, and the next frame can contain two subframes A and B repeating using numFrames? Otherwise, see if you can use Advanced Chirp Configuration feature to define A and B configurations as two different bursts in same subframe and then repeat A and B bursts for the second frame.

    Secondly, are you looking to reconfigure a subframe during active framing? Will it be possible for you to keep the subframe configured before-hand and only update the number of subframes to be used for a frame so as to avoid the amount of configuration updates? Then, depending on the amount of reconfiguration involved, I can get you an estimate of time required. 

    Regards,
    Shailesh

  • Hi Shailesh
    Thanks for your support. But it still needs to reconfigure to choose which subframe to use. Is it possible to use the rlFrameStartStop function for this purpose? Do you have any suggestions on using this function?
    Best regards,
    Patrick
  • Hi Patrick,

    I am not sure how FrameStartStop will help here as it only stops ongoing frames or starts a transmission. The configuration update time should be independent of whether you are transmitting or not. Ideally, you should be able to make minor updates to configurations during an active frame which will be used in the next frame. If your frame is less than 12 ms, it should not be a problem that it is taking that long to update something in the background. Does it makes sense in your usecase?

    Regards,
    Shailesh

  • Hi Shailesh

      Thanks for your support. Currently, we are using advance chirp mode and advance frame mode. Since the number of chirps in the two subframes is different, we need to re-update the advance chirp after each subframe. Whether advance chirp mode and advance frame mode support reconfiguration during DSP processing time after the current waveform transmission ends, and take effect in the next waveform transmission?

    Regards,
    Patrick

  • Hi Patrick,

    Unless you have used up the Advanced Chirp Config LUT (12KB) you can keep all the LUT values stored before you start any frames. Then, between frames/subframes you only need to update the address configuration to the corresponding location of data in the LUT and not the LUT itself. You can update your number of chirps and other configuration as well. These configuration (and not LUT) updates should not take a lot of time. 

    You should be able to update these configurations during DSP processing time or in-between transmission. \

    Regards,
    Shailesh 

  • Hi Shailesh

    Thank you for your reply. I'm trying this approach, but I've run into a problem. I'm using 2 subframes with  frame triggering. Sometimes, only the first subframe needs to be triggered, while other times, both are needed. I'm using rlFrameStartStop to control whether to trigger only the first subframe. However, I'm getting error code 21. In my configuration code, the transmit time exceeds 20ms, so when configuring rlFrameStartStop, the device should still be transmitting. Why is error code 21 occurring?

    detail config:

        retVal = rlSensorStart(1);
        rlFrameTrigger_t data;
        data.startStop = 0x0002;
        retVal = rlFrameStartStop(1,&data);
    in this case, it also has error code 21:
        retVal = rlSensorStart(1);
        ClockP_usleep(1 * 1000U);
        rlFrameTrigger_t data;
        data.startStop = 0x0002;
        retVal = rlFrameStartStop(1,&data);

    Regards,
    Patrick

  • Hi Patrick, can you try checking this with some normal frame configuration instead of advanced frame configuration?

    Regards,
    Shailesh