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.

IWR6843AOP: Vital Signs with People Tracking modify the BPM mode to TDM mode

Part Number: IWR6843AOP

Tool/software:

Dear Ti Group,

I am research the Vital signs with people tracking Demo, and I'm having the same issue as discussed in this forum: "e2e.ti.com/.../iwr6843aop-vital-signs-with-people-tracking-demo

Now, I want to modify the BPM mode to TDM mode, so the config param is modified as below:

chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
chirpCfg 2 2 0 0 0 0 0 4
fineMotionCfg -1 1
bpmCfg -1 0 0 0

I found that the BPM processing logic related to HR/BR calculation in the source code you gave is as follow,is part of the code of the MmwDemo_vitalsignPickupPoint function

        //de-modulation the BPM
        //[0:3] TIM1, [4:7] TIM2, [8:11] TIM3 RX signals
   //RADARDEMO_aoaEst2DCaponBF_bpmDemodulation
        //AOP
//      pData_temp[20].real = (pData_temp[0].real + pData_temp[8].real)/2;
//      pData_temp[20].imag = (pData_temp[0].imag + pData_temp[8].imag)/2;
//      pData_temp[21].real = (pData_temp[1].real + pData_temp[9].real)/(-2); //phase rotation
//      pData_temp[21].imag = (pData_temp[1].imag + pData_temp[9].imag)/(-2);
//      pData_temp[22].real = (pData_temp[2].real + pData_temp[10].real)/2;
//      pData_temp[22].imag = (pData_temp[2].imag + pData_temp[10].imag)/2;
//      pData_temp[23].real = (pData_temp[3].real + pData_temp[11].real)/(-2);
//      pData_temp[23].imag = (pData_temp[3].imag + pData_temp[11].imag)/(-2);
//
//      pData_temp[24].real = (pData_temp[4].real);
//      pData_temp[24].imag = (pData_temp[4].imag);
//      pData_temp[25].real = (pData_temp[5].real)*(-1); //phase rotation
//      pData_temp[25].imag = (pData_temp[5].imag)*(-1);
//      pData_temp[26].real = (pData_temp[6].real);
//      pData_temp[26].imag = (pData_temp[6].imag);
//      pData_temp[27].real = (pData_temp[7].real)*(-1);
//      pData_temp[27].imag = (pData_temp[7].imag)*(-1);
//
//      pData_temp[28].real = (pData_temp[0].real - pData_temp[8].real)/2;
//      pData_temp[28].imag = (pData_temp[0].imag - pData_temp[8].imag)/2;
//      pData_temp[29].real = (pData_temp[1].real - pData_temp[9].real)/(-2);
//      pData_temp[29].imag = (pData_temp[1].imag - pData_temp[9].imag)/(-2);
//      pData_temp[30].real = (pData_temp[2].real - pData_temp[10].real)/2;
//      pData_temp[30].imag = (pData_temp[2].imag - pData_temp[10].imag)/2;
//      pData_temp[31].real = (pData_temp[3].real - pData_temp[11].real)/(-2);
//      pData_temp[31].imag = (pData_temp[3].imag - pData_temp[11].imag)/(-2);

if it is configured to TDM mode, I think it should be modified to the following,

        pData_temp[20] = pData_temp[0];
        pData_temp[21] = pData_temp[1];
        pData_temp[22] = pData_temp[2];
        pData_temp[23] = pData_temp[3];

        pData_temp[24] = pData_temp[4];
        pData_temp[25] = pData_temp[5];
        pData_temp[26] = pData_temp[6];
        pData_temp[27] = pData_temp[7];

        pData_temp[28] = pData_temp[8];
        pData_temp[29] = pData_temp[9];
        pData_temp[30] = pData_temp[10];
        pData_temp[31] = pData_temp[11];

That is, compared with the BPM processing logic in the source code, when TDM works in the working mode, the received 12 virtual channel data does not need to be processed, and can be used directly. I am not sure if my modification is correct, I hope to get your correction, thank you very much
  • Hi

    Yes, the changes mentioned seem correct. Below configuration makes sure that only 1 Tx is active during chirping and and sensor is working in TDM mode

    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    chirpCfg 2 2 0 0 0 0 0 4
    bpmCfg -1 0 0 0

    Also, the code changes mentioned seem to be correct.

    What is the reason you want to move from the default BPM configuration to TDM mode?

    Regards

  • Hi,

    Thanks for your reply.

    The reason I moved from the default BPM configuration to TDM mode was that the original default BPM configuration parameters were not for IWR6843AOP, but for ISK, the default configuration is shown below

    chirpCfg 0 0 0 0 0 0 0 5
    chirpCfg 1 1 0 0 0 0 0 2
    chirpCfg 2 2 0 0 0 0 0 5
    fineMotionCfg -1 1
    bpmCfg -1 1 0 2

    and when I changed to those for AOP, the radar didn't work.The configuration of AOP is as follows:

    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 6
    chirpCfg 2 2 0 0 0 0 0 6
    fineMotionCfg -1 1
    bpmCfg -1 1 1 2

    The reference document describes the following:

  • Hi

    You can use the below BPM configuration if you want to continue using the BPM for IWR6843AOP

    You can use the below configuration, which works with AOP vital signs

    chirpCfg 0 0 0 0 0 0 0 2
    chirpCfg 1 1 0 0 0 0 0 5
    chirpCfg 2 2 0 0 0 0 0 5
    bpmCfg -1 1 1 2

    If you want to move to TDM, the changes you mentioned earlier seems fine

    Regards

  • Hi,

    Thank you for the solution.

    But I'd like to know why BPM mode can't use the following set of parameters, Hope to get your answer, thank you.

    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 6
    chirpCfg 2 2 0 0 0 0 0 6
    fineMotionCfg -1 1
    bpmCfg -1 1 1 2

  • Hi

    BPM mode used depends on the antenna pattern used by the IWR6843AOP. IWR6843AOP has a fixed position for azimuth and elevation positions

    The Vital signs demo supports only the configuration mentioned above. So, all other combinations of BPM is not supported by the demo

    Regards