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.

AWR1843BOOST: Auto-Starting Radar on Boot - AWR1843 EVM

Part Number: AWR1843BOOST
Other Parts Discussed in Thread: UNIFLASH, AWR1843

Tool/software:

Hello,

I am using the AWR1843 EVM for a parking assist solution. I am deploying both DSS and MSS applications (Demo application provided by TI ) using Code Composer Studio and Uniflash. I can start the radar successfully using a Python script that sends configuration commands over UART. However, I want to auto-start the radar on boot without requiring an external script.

To achieve this, I attempted to send the necessary configuration and sensorStart command within the CLI init() function as follows:

// 1. Set Data Output Mode  
sprintf(cmd, "dfeDataOutputMode 1\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 2. Configure Channels  
sprintf(cmd, "channelCfg 15 3 0\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 3. ADC Configuration  
sprintf(cmd, "adcCfg 2 2\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 4. Profile Configuration  
sprintf(cmd, "profileCfg 0 60.25 100 5 40 0 0 20 1 256 5000 0 0 30\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 5. Chirp Configuration  
sprintf(cmd, "chirpCfg 0 0 0 0 0 0 0 0\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 6. Frame Configuration  
sprintf(cmd, "frameCfg 0 1 128 0 40\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 7. Low Power Mode  
sprintf(cmd, "lowPower 0 0\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 8. GUI Monitor  
sprintf(cmd, "guiMonitor 0 1 1 0 0 0 0\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 9. CFAR Configuration  
sprintf(cmd, "cfarCfg 0 0 2 8 4 3 0 15.0 1\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 10. Multi-Object Beamforming  
sprintf(cmd, "multiObjBeamForming 0 1 0.5\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 11. Clutter Removal  
sprintf(cmd, "clutterRemoval 0 0\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 12. Calibration  
sprintf(cmd, "calibDcRangeSig 0 0 -5 5 8\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

// 13. Start Sensor  
sprintf(cmd, "sensorStart\n");  
UART_writePolling(gMmwMssMCB.loggingUartHandle, cmd, strlen(cmd));  

CLI_write("Sensor started via UART commands\n");  

However, this does not work, and the radar does not start automatically on boot.

I am using SDK version 3.06.02.

Could you please guide me on correctly auto-start the radar on boot? Are there specific functions or hooks that I should modify, or any known limitations in the CLI init process?

Thanks in advance!

  • Hello Hitanshu,

    A better way to do it, would be to comment out the UART cli command completely.
    You can hardcode the values which are being picked up by the functions and call the functions directly in the initial part of the code before sensor start.

    Regards,
    Saswat Kumar

  • Hi Saswat,

    Thanks for your response.

    The solution suggested by you is what we are trying to do right now.

    As explained above, the hardcoded values are being given directly to set the configuration in the CLI_Init() function - the one which initializes CLI in the hope that when the system initializes CLI, it would set the config values and start the radar, but that is not working.

    Please let me know if any change is required in the above-given code or methodology.

    Regards,

    Hitanshu

  • Hello Hitanshu,

    What you have shared as code is not hard coding.
    When you say not working you will have to debug whether you have filled all the parameters, have you called it int he right order the functions and all of that has to be taken care as well.

    Regards,
    Saswat Kumar

  • Hello Hitanshu,

    Also, in the MRR application in RTB: Medium Range Radar Users Guide
    We have done some of the static configuration in file cfg.c. You can refer that as well.

    Regards,
    Saswat Kumar

  • Hi Saswat,

    Taking the idea from the mentioned medium-range radar application, I tried with the following -

    //#if 0

        /* Open the CLI: */
        if (CLI_open (&cliCfg) < 0)
        {
            System_printf ("Error: Unable to open the CLI\n");
            return;
        }
        System_printf ("Debug: CLI is operational\n");

    //#endif


        //  gMmwMssMCB..cfgStatus = false;
        //  gMmwMssMCB.runningStatus = false;
        //  gMmwMssMCB.isMMWaveOpen = false;


    #if  1

        gMmwMssMCB.sensorState = MmwDemo_SensorState_OPENED;
        
        char* args2[] = {"sensorStop"};
        MmwDemo_CLISensorStop(1, args2);

        char* args8[] = {"adcbufCfg", "-1", "0", "1", "1", "1"};
        MmwDemo_CLIADCBufCfg(6, args8);

        char* args3[] = {"guiMonitor", "-1", "1", "1", "0", "0", "0", "1"};
        MmwDemo_CLIGuiMonSel(8, args3);

        char* args4[] = {"cfarCfg", "-1", "0", "2", "8", "4", "3", "0", "15", "1"};
        MmwDemo_CLICfarCfg(10, args4);

        char* args41[] = {"cfarCfg", "-1", "1", "0", "4", "2", "3", "1", "15", "1"};
        MmwDemo_CLICfarCfg(10, args41);
        
        char* args5[] = {"multiObjBeamForming", "-1", "1", "0.5"};
        MmwDemo_CLIMultiObjBeamForming(4, args5);

        char* args7[] = {"clutterRemoval", "-1", "0"};
        MmwDemo_CLIClutterRemoval(3, args7);

        char* args6[] = {"calibDcRangeSig", "-1", "0", "-5", "8", "256"};
        MmwDemo_CLICalibDcRangeSig(6, args6);

        char* args13[] = {"extendedMaxVelocity", "-1", "0"};
        MmwDemo_CLIExtendedMaxVelocity(3, args13);

     
        char* args17[] = {"lvdsStreamCfg", "-1", "0", "0", "0"};
        MmwDemo_CLILvdsStreamCfg(5, args17);


        char* args9[] = {"compRangeBiasAndRxChanPhase", "0.0","1","0","1","0","1","0","1","0","1","0","1","0","1","0","1","0","1","0","1","0","1","0","1","0"};
        MmwDemo_CLICompRangeBiasAndRxChanPhaseCfg(6, args9);

        char* args10[] = {"measureRangeBiasAndRxChanPhase", "0", "1.5", "0.2"};
        MmwDemo_CLIMeasureRangeBiasAndRxChanPhaseCfg(4, args10);

        char* args14[] = {"CQRxSatMonitor", "0", "3", "4", "63", "0"};
        MmwDemo_CLIChirpQualityRxSatMonCfg(6, args14);

        char* args15[] = {"CQSigImgMonitor", "0", "127", "4"};
        MmwDemo_CLIChirpQualitySigImgMonCfg(4, args15);

        char* args16[] = {"analogMonitor", "0", "0"};
        MmwDemo_CLIAnalogMonitorCfg(3, args16);

        char* args11[] = {"aoaFovCfg", "-1", "-90", "90", "-90", "90"};
        MmwDemo_CLIAoAFovCfg(6, args11);

        char* args12[] = {"cfarFovCfg", "-1", "0", "0", "49.99"};
        MmwDemo_CLICfarFovCfg(5, args12);

        char* args121[] = {"cfarFovCfg", "-1", "1", "-1", "1.00"};
        MmwDemo_CLICfarFovCfg(5, args121);

        char* args20[] = {"calibData", "0", "0", "0"};
        MmwDemo_CLICalibDataSaveRestore(4, args20);

        char* args18[] = {"configDataPort", "921600", "1"};
        MmwDemo_CLIConfigDataPort(3, args18);

        // char* args19[] = {"queryDemoStatus"};
        // MmwDemo_CLIQueryDemoStatus(1, args19);

        char* args1[] = {"sensorStart"};
        MmwDemo_CLISensorStart(2, args1);

    Please note :

        //  gMmwMssMCB..cfgStatus = false;
        //  gMmwMssMCB.runningStatus = false;
        //  gMmwMssMCB.isMMWaveOpen = false;

    It resulted in the error, as gMmwMssMCB does not have these parameters defined.

    The execution and values of the above commands are directly captured from the config file, which otherwise works to start the radar when commands from that config file are sent over a UART interface using a Python script.

    Please let me know if I missed something.

  • Hello Hitanshu,

    That is not the way to do it.
    I am telling you to call the functions which all these cli functions are calling and then inside those functions hardcode the value. What you have done above is not hardcoding, look at the below for example:

    and then it is called:

    Please follow it this way and populate.

    Regards,
    Saswat Kumar