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.

IWR1443BOOST: mmWaveSDK's TestSource wrong output values

Part Number: IWR1443BOOST
Other Parts Discussed in Thread: IWR1443

Hi,

We are trying to test TestSource API from the mmWave SDK,
but there is a mismatch in the distance displayed on the DemoVisualizer
and the distance pointed in API. We are not sure if we have missed something in the API usage
or if there is something wrong in the Firmware version.

Below is the test result:

TestSource Specified value:(x,y,z)= Object1(4m, 0m, 0m) Object2(0m, 0m, 0m)
DemoVisualizer Displayed value:(x,y,z)= (-2m, 0m, 0m), (-3.7m, 0m, 0m) , (3.9m, 0m, 0m)...etc

We are using below APIs to enable the fuction in TestSource.
・rlSetTestSourceConfig API
・rlTestSourceEnable API
the return values of these APIs were "0", so we believe it is being executed normally.

Tools used:
・IWR1443BOOST EVM(v1.1)
・mmWaveSDK(v1.1.0.2)
・mmWave DemoVisualizer

I am going to attach the source(sample.c) and configuration file(profile.cfg),
this source is based on the "mmw_example.c" provided on the E2E post here.

Please let me know if there is anything missing.

Best Regards
paddu

int32_t SetTestSource(void)
{
    uint8_t deviceMap = RL_DEVICE_MAP_CASCADED_1;
    
    rlTestSource_t tsArgs = {0};
    int retVal = RL_RET_CODE_OK;

    tsArgs.testObj[0].posX = 400;
    tsArgs.testObj[0].posY = 0;
    tsArgs.testObj[0].posZ = 0;

    tsArgs.testObj[0].velX = 0;
    tsArgs.testObj[0].velY = 0;
    tsArgs.testObj[0].velZ = 0;

    tsArgs.testObj[0].posXMin = -32760;
    tsArgs.testObj[0].posYMin = 0;
    tsArgs.testObj[0].posZMin = -32760;

    tsArgs.testObj[0].posXMax = 32700;
    tsArgs.testObj[0].posYMax = 32700;
    tsArgs.testObj[0].posZMax = 32700;

    tsArgs.testObj[0].sigLvl = 25;

    tsArgs.testObj[1].posX = 700;
    tsArgs.testObj[1].posY = 0;
    tsArgs.testObj[1].posZ = 0;

    tsArgs.testObj[1].velX = 0;
    tsArgs.testObj[1].velY = 0;
    tsArgs.testObj[1].velZ = 0;

    tsArgs.testObj[1].posXMin = -32700;
    tsArgs.testObj[1].posYMin = 0;
    tsArgs.testObj[1].posZMin = -32700;

    tsArgs.testObj[1].posXMax = 32700;
    tsArgs.testObj[1].posYMax = 32700;
    tsArgs.testObj[1].posZMax = 32700;

    tsArgs.testObj[1].sigLvl = 25;

    tsArgs.rxAntPos[0].antPosX = 0;
    tsArgs.rxAntPos[0].antPosZ = 0;
    tsArgs.rxAntPos[1].antPosX = 4; // +1/2 lamda
    tsArgs.rxAntPos[1].antPosZ = 0;
    tsArgs.rxAntPos[2].antPosX = 8; // +1 lamda
    tsArgs.rxAntPos[2].antPosZ = 0;
    tsArgs.rxAntPos[3].antPosX = 12;// +3/2 lamda
    tsArgs.rxAntPos[3].antPosZ = 0;

    tsArgs.txAntPos[0].antPosX = 0;
    tsArgs.txAntPos[0].antPosZ = 0;
    tsArgs.txAntPos[1].antPosX = 8;  // +1 lamda
    tsArgs.txAntPos[1].antPosZ = 4;  // +1/2 lamda
    tsArgs.txAntPos[2].antPosX = 16; // +2 lamda
    tsArgs.txAntPos[2].antPosZ = 0;

    System_printf("CaptureDemo_CSI2TestCfg\n");

    retVal = rlSetTestSourceConfig(deviceMap, &tsArgs);
    
    return retVal;
}

int32_t EnableTestSource(void)
{
    uint8_t deviceMap = RL_DEVICE_MAP_CASCADED_1;
    int retVal = RL_RET_CODE_OK;
    
    rlTestSourceEnable_t tsEnableArgs = {0};
    
    tsEnableArgs.tsEnable = 1U;
    tsEnableArgs.tsMode = 1U;
    
    retVal = rlTestSourceEnable(deviceMap, &tsEnableArgs);
    
    return retVal;
}

1538.profile.cfg

  • Hi paddu,

    I will need to look into the rlSetTestSourceConfig and rlTestSourceEnable APIs to verify their input parameters.

    Can you clarify which IWR1443BOOST EVM version you have? Only IWR1443 ES2.0 works with mmWave SDK 1.1.

    Regards,
    John
  • Hi John,

    Thank you for the reply.

    The Device Part Markings has "964D" which means ES2.0.
    EVM Revision 1243/1443-EVM PROC010 REV A.

    Please let me know if you need any other information.

    Best Regards
    paddu

  • Hi paddu,

    Looking at your sample.c file, it looks like you have two 0 velocity test objects configured for 4m and 7m in X, and 0m in Y and Z. The second object is not at (0, 0, 0) as you mentioned. And both objects have the same signal strength.

    Best Regards,
    Anand
  • Hello Anand,

    Thank you so much for the information.

    Coulf you please let me know what could be the solution.

    Best Regards
    paddu
  • Hi paddu,

    The coordinate system used by the mmWave SDK mmw demo is that from the point-of-view of the antenna on the IWR1443BOOST EVM: X=right, Y=forward (away from antenna), and Z=up. The settings used by the sample.c file you sent are as follows.

    Object 0 is setup 4m to the right at 0m in front of the antenna and at 0m elevation :
    tsArgs.testObj[0].posX = 400; // 4m to the right
    tsArgs.testObj[0].posY = 0; // 0m in front of the antenna
    tsArgs.testObj[0].posZ = 0; // 0m up

    Object 1 is setup 7m to the right at 0m in front of the antenna and at 0m elevation:
    tsArgs.testObj[1].posX = 700;
    tsArgs.testObj[1].posY = 0;
    tsArgs.testObj[1].posZ = 0;

    Both of these objects would be outside the normal field-of-view of the antenna since they are completely beside the antenna and not in front of it at all. Please try placing the objects in front of the antenna by setting posY to a value larger than 0. For example, setting posY to 400 would mean 4m in front of the antenna.

    Also, the strength of the reflection of the objects in the file you sent is very small.

    tsArgs.testObj[0].sigLvl = 25;
    tsArgs.testObj[1].sigLvl = 25;

    You can try setting the sigLvl to a larger number. (The mmw_example.c uses values of 150 and 948.)

    Please mark as answered if your issue is resolved or reply if you have more questions.

    Regards,
    John
  • Hi John,

    Thank you very much for the well detailed answer.
    We were able to get the correct results with your suggestions.

    We shall continue with other tests,will come back if there are any additional questions.

    Best Regards
    paddu