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 连接并花费少量时间。远程使用器件或重复测量时,以下做法非常有用:将这些配置值“硬编码”,这样器件将引导、配置数据,将数据转换为线性调频脉冲,然后输出数据,而无需用户进行进一步的输入。 

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

    • 硬编码 cfg 文件的主要方法有 2 种:使用现有的 CLI 驱动程序并绕过 CLI
      • 实验“用于 OOB 演示的硬编码配置”中提供了使用具有 CLI 旁路的 HCC 的示例。
        • 这种方法运行良好,但修改 cfg 参数可能相当困难,并且很容易出现影响功能的拼写错误
      • 通过利用现有的 CLI 驱动程序,可以更轻松地实施 HCC,这将使得在 HCC 之间切换和在一个工程中发送 CFG 文件变得非常简单。
    • IWR 器件和 CLI 的设置采用以下简化流程。

    • PcountDemo3D_initTask --> Pcount3DDemo_CLIInit --> CLI_open
      • 常规初始化任务调用 CLIInit 函数。在该 CLIInit 函数的末尾,打开 CLI 以接收命令。
      • 但是,此时仍有其他初始化需要在器件准备好启动之前进行。因此,不能在该 CLIInit 函数之后直接设置 cfg 参数,而应将它们添加到c 中的 CLI_task() 中 (C:\ti\mmwave_sdk_VER\packages\ti\utils\cli\src)
    • 在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 文件夹中。(Probably this is cli.c and cli_mmwave.c)

      • “C:\ti\mmwave_industrial_toolbox_VER\labs\lab_folder\68xx_lab\src\common”(应将版本和具体实验按您要修改的任何实验进行更新)