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.

CCS/IWR1642: IWR1642 use a Standalone

Part Number: IWR1642

Tool/software: Code Composer Studio

Hello TI,

I Want to replace IWR1642 with PIR.....

I am using PPLCount Demo code for my application(I Trgger LED ON using GPIO2 when pplcount>0)

1.Can I use IWR1642 without GUI ...? (Plase explain how it is possible any document or references)

a.I flash Source code 

b. EVM connect with GUI Shows output properly 

c.After step b, disconnect and Connect  EVM with PW Supply try to Observe O/P nothing happen (LED off because of PPLCount 0)  I WANT TO USE IWR1642 THIS CONDITION IN MY APPLICATION  

d.After step c, disconnect & Connect  EVM with PW Supply and Connect EVM with GUI try to Observe O/P  (LED operate as expected ON/OFF)

2.Can I Use IWR1642 with Wireless data transfer devices (Bluetooth, WIFI)...?

 

 

Thanks TI for Your Support

Rahul

  • Hello Rahul,

    It is possible to  run People counting demo code without using the GUI to start or display it.   In order to initialize and run the people counting code uart based commands (config commands) are sent to the device.   Initialization step is needed after every power on  cycle, this is why step 1.c might not be working in your case.

    Your options would be:

    A) No code modification needed:

    No gui: Use Com port console via PC to send CLI config 

    B) Modify the device code to not wait on CLI input for configuration and provide configuration internally.

    IWR1642 EVM has TI's launchpad interface which can be used to interface with Ti's EVM's for Bluetooth and wireless devices. This could be option to send data out over wireless interface.  We have TI Design that achieves this and will point you to the same in follow up response.

    Thank you,

    Vaibhav

  • Hello Vaibhav,

    Thank you for response....

    You mention point B. , is it possible in existing PPLcount code ...?

    Please guide me or if have any reference of How to Provide configuration internally ,it's help me to resolve my issues

    Thanks and regards,
    Rahul
  • Rahul,

    Below is an excerpt from this tread (LINK).

    I think this will resolve your issue.

    Alex

    The demo relies CLI to receive the radar config parameters . You can  "bypass this CLI" and hardcode the configuration by adding the below code  in the $mmwave_sdk_01_01_00_02\packages\ti\utils\cli\src\cli.c (have just taken an sample configuration you can use your own)

    #define CLI_BYPASS 1

    #define MAX_RADAR_CMD               22

    uint8_t* radarCmdString[MAX_RADAR_CMD] =

    {

    {"sensorStop \n\r"},

    {"flushCfg \n\r"},

    {"dfeDataOutputMode 1 \n\r"},

    {"channelCfg 15 3 0 \n\r"},

    {"adcCfg 2 1 \n\r"},

    {"adcbufCfg -1 0 0 1 0 \n\r"},

    {"profileCfg 0 77 287 7 200 0 0 20 1 384 2000 0 0 30 \n\r"},

    {"chirpCfg 0 0 0 0 0 0 0 1 \n\r"},

    {"chirpCfg 1 1 0 0 0 0 0 2 \n\r"},

    {"frameCfg 0 1 16 0 150 1 0 \n\r"},

    {"lowPower 0 0 \n\r"},

    {"guiMonitor -1 1 1 1 0 0 1 \n\r"},

    {"cfarCfg -1 0 0 8 4 4 0 5120 \n\r"},

    {"cfarCfg -1 1 0 4 2 3 0 5120 \n\r"},

    {"peakGrouping  -1 1 1 1 1 511 \n\r"},

    {"multiObjBeamForming -1 0 0.5 \n\r"},

    {"clutterRemoval -1 0 \n\r"},

    {"calibDcRangeSig -1 0 -5 8 256 \n\r"},

    {"extendedMaxVelocity -1 0 \n\r"},

    {"compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 \n\r"},

    {"measureRangeBiasAndRxChanPhase 0 1.5 0.2 \n\r"},

    {"sensorStart \n\r"},

    };

    static int32_t CLI_ByPassApi(CLI_Cfg* ptrCLICfg)

    {

    //uint8_t cmdString[128];

    char* tokenizedArgs[CLI_MAX_ARGS];

    char* ptrCLICommand;

    char delimitter[] = " \r\n";

    uint32_t argIndex;

    CLI_CmdTableEntry* ptrCLICommandEntry;

    int32_t cliStatus;

    uint32_t index, idx;

    uint16_t numCLICommands = 0U;

    /* Sanity Check: Validate the arguments */

    if (ptrCLICfg == NULL)

    return -1;

    /* Cycle through and determine the number of supported CLI commands: */

    for (index = 0; index < CLI_MAX_CMD; index++)

    {

    /* Do we have a valid entry? */

    if (ptrCLICfg->tableEntry[index].cmd == NULL)

    {

    /* NO: This is the last entry */

    break;

    }

    else

    {

    /* YES: Increment the number of CLI commands */

    numCLICommands = numCLICommands + 1;

    }

    }

    /* Execute All Radar Commands */

    for (idx = 0; idx < MAX_RADAR_CMD; idx++)

    {

    /* Reset all the tokenized arguments: */

    memset ((void *)&tokenizedArgs, 0, sizeof(tokenizedArgs));

    argIndex = 0;

    ptrCLICommand = (char*)radarCmdString[idx];

    /* Set the CLI status: */

    cliStatus = -1;

    /* The command has been entered we now tokenize the command message */

    while (1)

    {

    /* Tokenize the arguments: */

    tokenizedArgs[argIndex] = strtok(ptrCLICommand, delimitter);

    if (tokenizedArgs[argIndex] == NULL)

    break;

    /* Increment the argument index: */

    argIndex++;

    if (argIndex >= CLI_MAX_ARGS)

    break;

    /* Reset the command string */

    ptrCLICommand = NULL;

    }

    /* Were we able to tokenize the CLI command? */

    if (argIndex == 0)

    continue;

    /* Cycle through all the registered CLI commands: */

    for (index = 0; index < numCLICommands; index++)

    {

    ptrCLICommandEntry = &ptrCLICfg->tableEntry[index];

    /* Do we have a match? */

    if (strcmp(ptrCLICommandEntry->cmd, tokenizedArgs[0]) == 0)

    {

    /* YES: Pass this to the CLI registered function */

    cliStatus = ptrCLICommandEntry->cmdHandlerFxn (argIndex, tokenizedArgs);

    if (cliStatus == 0)

    {

    CLI_write ("Done\n");

    }

    else

    {

    CLI_write ("Error %d\n", cliStatus);

    }

    break;

    }

    }

    /* Did we get a matching CLI command? */

    if (index == numCLICommands)

    {

    /* NO matching command found. Is the mmWave extension enabled? */

    if (ptrCLICfg->enableMMWaveExtension == 1U)

    {

    /* Yes: Pass this to the mmWave extension handler */

    cliStatus = CLI_MMWaveExtensionHandler (argIndex, tokenizedArgs);

    }

    /* Was the CLI command found? */

    if (cliStatus == -1)

    {

    /* No: The command was still not found */

    CLI_write ("'%s' is not recognized as a CLI command\n", tokenizedArgs[0]);

    }

    }

    }

    return 0;

    }

    You can call API "CLI_ByPassApi" in the "CLI_task" instead of existing implementation.