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:如何向毫米波雷达项目添加硬编码配置

Guru**** 2477255 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1023135/faq-iwr6843-how-to-add-a-hard-coded-configuration-to-mmwave-radar-projects

器件型号: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 以接收命令。
      • 但是、此时仍有其他初始化需要在器件准备好启动之前进行。 因此、cfg 参数不能在该 CLIInit 函数之后直接设置、而应在 cli.c (C:\ti\mmwave_sdk_VER\packages/ti\utils\cli\src)中将其添加到 cli_task()中。
    • 在 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_for_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 参数。 这将替换将从 UART 连接获取 cfg 参数的 UART_READ 行。 如果 HCC 被关闭、使用#ifdef/#else 来绕过这个、以恢复到 UART 通信。
         

    #ifdef USE_HARD_CODED_CONFIG

            /* Run hard-coded commands, one at a time until '!!!END_OF_HARD_CODED_COMMANDS' is reached: */

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

            {

                //CLI_write (hardCodedConfigCommands[hardCodedConfigIndex]);

                CLI_write ("Command\n");

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

    strlen(hardCodedConfigCommands[hardCodedConfigIndex]));

                hardCodedConfigIndex++;

            }

            /* Accept commands from UART after all hard-coded commands done: */

            else

            {

                /* Read the command message from the UART: */

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

            }

     

    #else

            /* Read the command message from the 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 "(版本和特定实验应更新为您要修改的实验)