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.

[FAQ] IWR6843: 如何将硬编码配置添加到毫米波雷达工程

Part Number: IWR6843

问:如何将硬编码配置添加到毫米波雷达工程

  • 答:

    默认情况下,毫米波雷达演示实验接受通过 UART 配置命令,以使用所需的设置来设置器件。为了提供灵活性,这些命令通常存储在文本文件中并在启动时发送,但这需要 PC 连接并花费少量时间。远程使用器件或重复测量时,以下做法非常有用:将这些配置值改成“硬编码”,这样器件将引导、配置、Chirp和输出数据,而无需用户进行进一步的输入。

    使用已构建的 CLI 驱动程序,可以非常轻松地将此功能添加到任何现有演示中。以下说明介绍了添加此功能的快速方法。

    硬编码 cfg 文件的主要方法有 2 种:使用现有的 CLI 驱动程序并绕过 CLI

    实验“Hard Coded Config for OOB Demo”中提供了使用具有 CLI 旁路的 HCC 的示例。

    这种方法运行良好,但修改 cfg 参数可能相当困难,并且很容易出现影响功能的拼写错误

    通过利用现有的 CLI 驱动程序,可以更轻松地实施 HCC,这将使得在 HCC 之间切换和在一个工程中发送 CFG 文件变得非常简单。

    IWR 器件和 CLI 的设置采用以下简化流程。

    PcountDemo3D_initTask --> Pcount3DDemo_CLIInit --> CLI_open

    常规初始化任务调用 CLIInit 函数。在该 CLIInit 函数的末尾,打开 CLI 以接收命令。

    但是,此时仍有其他初始化需要在器件准备好启动之前进行。因此,不能在该 CLIInit 函数之后直接设置 cfg 参数,而应将它们添加到 cli.c 中的 CLI_task() 中 (C:\ti\mmwave_sdk_VER\packages\ti\utils\cli\src)

    在 cli.c 中

    定义 HCC 选项

    将“#define USE_HARD_CODED_CONFIG”添加到文件顶部。(您可以随意选择宏名称)

    添加一个包含所有配置参数的字符数组,这些参数将显示在 .cfg 文件中。如果需要,可使用“#ifdef USE_HARD_CODED_CONFIG”在将来启用关闭 HCC 功能。添加一个整数变量,用于循环 cfg 参数。

    #ifdef USE_HARD_CODED_CONFIG

    int32_t hardCodedConfigIndex;

    char * hardCodedConfigCommands[]

    {

    "sensorStop ",

     "flushCfg ",

    "dfeDataOutputMode 1 ",

     …

     …

    "!!!END_OF_HARD_CODED_COMMANDS"

    };

    #endif

     

    在该数组内添加一个用以表示命令结束的标识符,可以是“!”或 cfg 参数中未使用的其他字符。

    例如,“!!!END_OF_HARD_CODED_COMMANDS”

    在 CLI_task() 内部

    在 while(1) 循环之前

    添加一个部分以暂停任务,从而进一步进行系统初始化。如有需要,请添加一些 UART 打印件以确保清晰。

    #ifdef USE_HARD_CODED_CONFIG

        hardCodedConfigIndex = 0;

        CLI_write ("Wait some time for system to initialize...\n");

        Task_sleep(100);

        CLI_write ("Performing hard-coded config\n");

    #endif

     

    在 while(1) 循环内部

    添加要在 cfg 参数(添加在文件顶部)的 cha 数组中读取的循环。这将替换 UART_read 行,以从 UART 连接获取 cfg 参数。如果 HCC 被关闭,则使用 #ifdef/#else 跳过此操作,以恢复到 UART 通信。

     

    #ifdef USE_HARD_CODED_CONFIG

            /* 运行硬编码命令,一次一个,直到到达“!!!END_OF_HARD_CODED_COMMANDS”:*/

            if (hardCodedConfigCommands[hardCodedConfigIndex][0] != '!')

            {

                //CLI_write (hardCodedConfigCommands[hardCodedConfigIndex]);

                CLI_write ("Command\n");

                memcpy((void *)&cmdString[0], (void *)hardCodedConfigCommands[hardCodedConfigIndex],  

    strlen(hardCodedConfigCommands[hardCodedConfigIndex]));

                hardCodedConfigIndex++;

            }

            /* 在完成所有硬编码命令后接受来自 UART 的命令:*/

            else

            {

                /* 从 UART 读取命令消息:*/

                UART_read (gCLI.cfg.cliUartHandle, &cmdString[0], (sizeof(cmdString) - 1));

            }

    #else

            /* 从 UART 读取命令消息:*/

            UART_read (gCLI.cfg.cliUartHandle, &cmdString[0], (sizeof(cmdString) - 1));

    #endif

     

    根据 SDK 用户指南中的说明在 SDK 中重新编译 cli 驱动程序

    重新编译您正在使用的 CSS 工程并将生成的二进制文件(或在调试模式下运行)重新烧写到 IWR 器件上。加电时,器件应启动并开始在 UART 线路上输出数据(或 HCC 部分中配置的任何输出),而无需等待用户从 GUI 或以其他方式输入。

    如果您不希望修改 SDK cli.c 文件(如果您将 SDK 用于多个不同的工程或配置),则可以将此文件复制到 CCS 工程文件夹并将其包含在工程中,以构建覆盖 SDK 文件的本地版本。

    从上面的 SDK CLI 路径复制文件,并将其放置在所需工具箱工程的公共 src 文件夹中。(这可能是 cli.c 和 cli_mmwave.c)

    “C:\ti\mmwave_industrial_toolbox_VER\labs\lab_folder\68xx_lab\src\common”(应根据您要修改的实验更新版本和特定实验)