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.

[参考译文] IWR6843:针对毫米波 IWR6843和 CC3235之间的 UART 通信进行布线与放大器;电路修改

Guru**** 2555360 points
Other Parts Discussed in Thread: TIDA-010022, MMWAVEICBOOST, IWR6843, CC3235S, SYSCONFIG, AWR1843BOOST

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/909334/iwr6843-wiring-circuit-modification-for-uart-communication-between-mmwave-iwr6843-and-cc3235

器件型号:IWR6843
主题中讨论的其他部件:TIDA-010022MMWAVEICBOOSTCC3235SSysConfigAWR1843BOOST

我查看了 TI 的 TIDA-010022文档、但它没有源代码。 阅读后、我想问:

该文档中的 wifi 模块是 CC1352。 为了在 IWR6843和 CC1352之间通过 UART 进行通信、两个模块都必须修改某些器件。 如果我通过 UART 连接 IWR6843和 CC3235、是否需要进行修改? 如果是、我需要添加/删除哪个部分? 在该文档中、它提到 MMWAVEICBOOST 需要添加 R81、R122、但没有说明我需要使用哪个电阻器值。 如果使用 CC3235、请提供详细信息。

2.在 CC1352上、连接到 IWR6843之前必须先卸下 SMA 连接器。 CC3235呢?

在 CC1352上、它必须移除以下跳线:"5V"、"3V3"、"RXD"和"TXD"、并将 XDS110电源跳线切换至"Extern Power (示波器电源)"。 在 CC3235上、我看不到3V3跳线。 是 VBAT 还是 BRD 跳线? 是否必须同时移除 VBAT 和 BRD 跳线?

4.如何将 XDS110切换到   示灯电源?

为了进行 UART 通信、我需要连接哪些引脚? 据我了解、将 CC3235上的 P1.3连接到 J5连接器的引脚5、并将 CC3235上的 P1.4连接到 MMWAVEICBOOST 上 J5连接器的引脚7、对吧?

6.如下图所示,请说明 UART (数据端口 )与 UART (CLI 端口)之间的区别。 我知道、IWR6843 MMWAVEBOOST EVM 和 CC3235只有1个 USB 端口。 它们如何通过2个独立的 UART 端口进行通信?

简而言之、请为我提供说明、其中包含通过 UART 在 IWR6843和 CC3235之间进行布线的原理图、用于在2个模块上进行硬件修改的电阻器值等...

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

    尊敬的 Hector:

    概括而言、对于 UART RX/TX、您需要使用 MMWAVEICBOOST 下方的40引脚接头连接到 CC3235 LP。 执行此操作时、您需要执行以下操作:

    -要找到合适的原理图、您需要知道您正在使用的天线模块的名称:ISK、ODS 或 AOP

    了解使用 MMWAVEICBOOST/IWR6843原理图和 MMWAVEICBOOST 用户指南 UART 信号如何从40引脚连接器(将连接到 CC3235)传输到60引脚连接器(连接到 IWR6843) 以及分别连接到 CC3235和 IWR6843芯片的 RX/TX 引脚编号/多路复用设置。

    2.对 MSS_main.c 进行修改、以便当您通过 MSS 记录器信号发送数据(请参阅原理图)时、您不会从雷达的数据处理链发送任何内容、而是发送如下简单内容: "Hello World"、并在 CC3235末尾修改了软件、可以读取"Hello World"进行验证。

    这些步骤是高级步骤、不应被视为分步说明、您需要自行确定其中的一些方面、尤其是对于 CC3235。 以一种方式制定战略、在这种方式下、您可以执行最简单的基础步骤、使其正常工作、然后逐步接近最终目标。

    此致、

    Connor Desmond

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

    您好 Connor、

    我正在使用 IWR68-ISK 连接 MMWAVEICBOOST。

    这是 SysConfig 上的 CC3235S 引脚设置。 因此、我必须将 P62用作 TX、将 P45用作 RX、以便与 IWR6843 MMWAVEICBOOST 进行 UART 通信、对吧? 以前、我以为需要将 P04和 P03用于 UART。

    3. 在 SimpleLink SDK 中、我看不到 MAIN_MSS.c 程序。 有2种类型的 FREE-RTOS、TI-RTOS。 。 我应该选择哪种类型作为基础项目? 此外、在每种类型中都有 CCS、GCC 文件夹。 刷写后、应该在器件上刷写哪个 bin 文件(CCS 或 gcc)?

    4.在 MMWAVEICBOOST 上,文档说我需要添加 R122,但我找不到 R122的位置。 它在哪里、需要哪种电阻值?

    5.我不知道您的观点:"UART 信号从40引脚连接器(将连接到 CC3235)传输到60引脚连接器(连接 到 IWR6843)"。

    -> 40引脚连接器位于 CC3235上。 40引脚连接器在 CC3235上已安装时如何连接到 CC3235?

    您是否意味着我需要修改跳线和其他东西来启用 CC3235上的 UART TX/RX 和 MMWAVEICBOOST 连接在一起?

    6.我真的需要修改2个模块上的电路以便通过 UART 进行通信吗? 如果我不修改电路、是否会发生损坏?

    SPI 通信的修改要求如何?

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

    尊敬的 Hector:

    任何特定于 CC3235的内容都最好定向到支持这些器件的论坛。 我将专门就 IWR6843为您提供帮助。 MMWAVEICBOOST 的底部有一个40引脚连接器、可直接放置在 TI Launch Pad (例如 CC3235器件的 LaunchPad)的顶部。 现在不能保证 TX/RX 引脚将保持一致、即使其物理尺寸合适也是如此。 在这里、您需要使用提供的原理图验证它是否适合。 然后、使用 MMWAVEICBOOST 的原理图查找 RX/TX 连接、并按照这些连接一直返回到天线模块安装在顶部的60引脚连接器。 它是60引脚连接器、其信号最终将传输到您的 CC3235。 执行此操作并让我知道结果。

    您能否链接您在第4点中引用的、涉及电阻器修改的文档。

    刚才您知道、我谈论的是 ICBOOST+ISK 上的硬件、而不是 CC3235上的硬件。

    此致、

    Connor Desmond

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

    您好 Connor、

    在 TIDA-010022文档中、我们必须使用2个 UART 端口进行配置和雷达数据输出。 我是否需要在 CC3235上声明两个 UART 端口? RS232_RX 和 RS232_TX 是 UART1、对吧?  

    是否需要使用 UART1进行配置、使用 UART0_Tx 进行数据输出?

    所有引脚都不是固定的、但可以通过 SysConfig 上的引脚设置进行自定义、因此我们不应该根据下面的原理图进行布线、对吧?

    请告诉我如何根据 以下引脚设置为配置和雷达数据输出进行 UART 引脚布线。

    这是我参考 http://www.ti.com/lit/ug/tidue71d/tidue71d.pdf?ts=1590999826113的文档

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

    尊敬的 Hector:

    这是一个我将在 CC3235论坛上发布的问题。 您对 IWR6843以及我为您提供的尝试步骤有任何疑问吗?

    此致、

    Connor Desmond

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

    尊敬的 Connor:

    如何在 MMWAVEICBOOST 上启用 MSS_Logger 引脚以发送数据? 我看到它位于 J6连接器的引脚9中。 但不确定我可以为其编写哪个 pinmux 设置代码。 当我们进行引脚多路复用设置时、我认为 MSS_LOGGER 是 UAR-3 (对应于数据表中的 MSS_UARTB_TX、对吧?  在 AWR1843BOOST 等某些模块上、MSS_Logger 未连接、但必须通过将电阻器焊接到电路来启用。 IWR6843-ISK 如何?

    这是我从 IWR6843写入 MSS_logger 数据的代码草案

    /*设置 PINMUX 以显示 MSS UART-3 */
    Pinmux_set_OverrideCtrl (SOC_XWR68XX_PINF14_PADAJ、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
    Pinmux_Set_FuncSel (SOC_XWR68XX_PINF14_PADAJ、SOC_XWR68XX_PINF14_PADAJ_MSS_UARTB_TX);
    
    
    UART_writePolling (handle、ptrTestBanner、strlen ((const char*) ptrTestBanner));
    对于(索引= 0;索引< 64;索引++)
    {
    /*写出字符:*/
    STATUS = UART_writePolling (handle、&txData、1);
    如果(状态< 0)
    {
    System_printf ("错误:无法在 UART-3上发送数据[%d]\n"、索引、状态);
    返回-1;
    }
    
    /*下一个迭代;下一个字符*/
    if (txData ='Z')
    {
    txData ='A';
    }
    其他
    {
    txData++;
    }
    }
    System_printf ("调试:成功写入 UART-3。 请验证控制台应用程序。\n");
    UART_Close (句柄); 

    2. RS232 TX/RX 引脚(J5连接器 MMWAVEICBOOST 上的引脚5和引脚7)需要连接到 CC3235上的 RS232 RX/TX 引脚以传输配置、对吧? 如果我在启动时将 Cfg 直接从 PC 发送到 IWR6843、该怎么办? 在这种情况下、我是否仍然需要使用 RS232 RX/TX 引脚来连接这2个模块?

    3.如果我想通过 RS232 TX/RX 引脚将 IWR6843BOOST 连接到 CC3235进行配置、是否需要在 MMWAVEICBOOST 上添加一些电阻器? 如果是、哪个电阻器?

    4.您说过我需要通过 MSS_logger 引脚将数据从 IWR6843发送到 CC3235。 正如我看到的、 MSS_LOGGER 引脚用于 UART 功能。 如果我使用 SPI 或 I2C、我猜在这种情况下无法使用 MSS_Logger 引脚、那么我需要使用哪个引脚将数据发送到 CC3235?

    请告诉我如何在 CCS 调试模式下调试 SimpleLink 器件(CC3235)。 我可以通过 xer4f 文件使用毫米波器件实现它。 但 SimpleLink 器件没有 xer4f。 因此我不知道如何操作。

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

    Hector、

    MSS_Logger 信号连接到40引脚连接器的引脚9、并具有0欧姆电阻。 根据我目前的理解、EVM 应该没有硬件更改、以便通过 UART 获取数据。 按照 MMWAVEICBOOST 用户指南第11页中的设置更改开关设置、以便将 MSS_Logger 重新路由至 MMWAVEICBOOST EVM 下方的40引脚连接器。 尝试一下。 同时、也可以使用 Tera-Term 或 PuTTY 来验证您是否可以在 CC3235端接收 UART 数据 如果您这样做、并且正常工作、您将知道问题(如果有)在 IWR6843的侧面、并将加快调试过程。 这应该足以让您从 MMWAVEICBOOST 中获取 UART 信号。 我要关闭此主题。

    此致、

    Connor Desmond

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

    您好 Connor、

    1.无论我们如何设置 Pinmux、MMWAVEICBOOST 和 CC3235S WIFI 模块接头上的引脚位置都是固定的、例如、对的 我可以为 MSS_Logger 信号设置 F14、H14或下表中的任何焊球编号、但我们仍然连接到 J6连接器 MMWAVEICBOOST 引脚9处的 MSS_logger、对吧?

    2.我知道、UART 接线只需要连接  

    CC3235  IWR6843

    TX         RX

    RX         TX

    GND       GND

    但有一份文档说、我还需要连接 CTS 和 RTS 引脚。 请确认是否需要。

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

    Hector、

    只针对 IWR6843等芯片的引脚执行引脚多路复用。 J6接头上的引脚是固定的。 关于使用 CTS 和 RTS、该信号用于流量控制、某些应用需要这些信号。 我会尝试在您的应用中使用或不使用它们。

    此致、

    Connor Desmond

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

    Connor、

    因此 IWR6843接头引脚不同于 CC3235S。 关于 CC3235S、我们必须根据 SysConfig 引脚设置选择接头上的引脚进行布线、但 IWR6843接头引脚始终是固定的。

    我想通过 SPI 将雷达数据从 IWR6843发送到 CC3235S 的情况如何? 从 IWR6843发送数据时需要使用哪个引脚? 我想这些引脚是:MMWAVEICBOOST 的 J6上的引脚2、6、12、14和 J5上的引脚13连接到 CC3235S 上的相应引脚、对吧?

    在这种情况下、我是否仍然需要使用 UART 引脚将配置从 CC3235S 发送到 IWR6843?

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

    赫特:

    因此 IWR6843 接头引脚不同于 CC3235S。 关于 CC3235S、我们必须根据 SysConfig 引脚设置选择接头上的引脚进行布线、但 IWR6843 接头引脚始终是固定的。

    [CD]>>如果 MMWAVEICBOOST 上的开关设置被设置为将 UART 信号重新路由至40引脚接头、则信号应在此处。 40引脚接头上的信号是固定的。 如前所述、我们不支持 CC3235器件、因此我认为您使用的 CC3235 LP 可能无法完美匹配。 您可能需要使用跳线电缆进行原型设计。

    2.我想 通过 SPI 将雷达数据从 IWR6843发送到 CC3235S 的情况如何? 从 IWR6843发送数据时需要使用哪个引脚? 我想这些引脚是:MMWAVEICBOOST 的 J6上的引脚2、6、12、14和 J5上的引脚13 连接到 CC3235S 上的相应引脚、对吧?

    [CD]>>此问题已发布在以下主题中:

    e2e.ti.com/.../3348072

    这种情况下、我是否仍然需要使用 UART 引脚将配置从 CC3235S 发送到 IWR6843?

    [CD]>>开箱即用演示以及我们提供的使用 UART 进行配置的 EVM。 话虽如此、仍可使用其他外设、但这需要您修改现有代码并自行调试。 我建议您的系统首先使用 UART 启动并运行、因为有已经起作用的参考代码。

    此致、

    Connor Desmond

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

    Connor、

    在该线程中从 IWR6843接收到数据后、我对 UART FIFO 清空有疑问。 请帮我解决此问题: (4) CC3235S:UARTCC32XX.h FIFO 清空(TIDA-010022参考)- Wi-Fi 论坛- Wi-Fi - TI E2E 支持论坛

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

    Connor、

    关于 UART 从 IWR6843读取到 CC3235、我将 IWR6843的 UART0和 UART1连接到 CC3235。 我将 Cfg 直接从 PC 发送到 IWR6843、然后引脚 MSS_Logger 连接到 CC3235的 UART1_RX。 但是、当我使用 Teraterm 时、尽管我在 IWR6843上看到了点云、但我在 CC3235的 UART 数据端口上看不到任何数据。 如果我直接从 PC 将 Cfg 发送到 IWR6843、是否需要修改 CC3235传感器节点的代码以不发送配置参数?

    正如我看到的、为了通过 BoosterPack 接头传输数据、我们必须将 J9跳线设置到底部。 那么、如果我们无法同时为 COM 端口和 BoosterPack 在 CC3235上设置 J9跳线、您如何检查 CC3235是否可以通过 Teraterm 正确接收来自 IWR6843的数据?

    我尝试连接 CC3235S 上 RX J9跳线的3个引脚以传输数据并检查从 MSS_logger 引脚 IWR6843接收到的数据。 LED D7指示灯呈绿色亮起、但 Teraterm 在 CC3235S 的数据端口上仍然没有显示任何内容。 什么可能导致此问题?

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

    Hector、

    关于 UART 从 IWR6843读取 到 CC3235、我将 IWR6843的 UART0和 UART1连接 到 CC3235。 我将 Cfg 直接从 PC 发送到 IWR6843、然后引脚 MSS_Logger 连接到 CC3235的 UART1_RX。 但是、当我使用 Teraterm 时、尽管我在 IWR6843上看到了点云、但我在 CC3235的 UART 数据端口上看不到任何数据。 如果我 直接从 PC 将 Cfg 发送到 IWR6843、是否需要修改 CC3235传感器节点的代码以不发送配置参数?

    [CD]>>您是否更改了 MMWAVEICEBOOTST 上的开关设置。 如果您这样做、则与 PC 的连接将不再存在。 否则 UART 将不会转至40引脚接头。

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

    Connor、

    我在 MMWAVEICEBOOTST 上设置开关设置为第3列。 目前、我仍然可以通过 XDS110 USB 端口将 Cfg 从 PC 发送到 IWR6843。 但是 、下面的开关设置应该能够让 MSS_Logger 引脚将数据发送到 CC3235、我不知道为什么 CC3235上没有接收到数据。

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

    Hector、

    我将在几天内回复您、我需要验证一些与您的问题相关的信息。

    BR、

    Connor Desmond

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

    谢谢 Connor、

    以下是更多详细信息:

    由 SysConfig 设置的 UART0、UART1的引脚设置以及 CC3235S 的接线 如下:

    UART0 引脚设置(将配置从 CC3235发送到 IWR6843)

    .rxPin = UART2CC32XX_PIN_57_UART0_RX、
    .txPin = UART2CC32XX_PIN_55_UART0_TX、 

    UART1 引脚设置(用于从 IWR6843 EVM 的 MSS_LOGGER 引脚接收雷达数据)
    .rxPin = UARTCC32XX_PIN_02_UART1_RX、
    .txPin = UARTCC32XX_PIN_Unassigned、 

    CC3235S  和 MMWAVEICBOOST 的布线

    CC3235S(BoosterPack 接头)     IWR6843 MMWAVEICBOOST

     GND                           GND

     P57.                            TX (J5上的引脚5)

     P55.                            RX (J5上的引脚7)

     P45.                            MSS_LOGGER (J6上的引脚9)

    BoosterPack 接头 CC3235S 上的接线位置

    我将 J9跳线设置到底部。 因此、CC3235S UART 会路由到 BoosterPack 接头、以连接到 ICBOOST 上的 TX/RX 和 MSS_logger 引脚

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

    尊敬的 Hector:

    1.如果 MMWAVEICBOOST 的设置正确、则可以从40引脚连接器获取 MSS_LOGGER 信号。 我已经亲自测试并验证了这一点。

    2.如果您要通过40引脚连接器获取配置 TX/RX、则必须将 S1.5更改为关闭位置、但根据 MMWAVEICBOOST 的用户指南、将其他开关保持不变。

    假设您的电路板具有完整功能、则可以将这些步骤连接到外部器件。 关于使这项工作的进程超出了本论坛的范围,将更好地面向该器件的论坛,例如 CC3235。

    此致、

    Connor Desmond

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

    您好 Connor、

    我使用示波器检查 MSS_LOGGER 引脚和引脚45 (CC3235上的 UART1_RX)上的信号。  MSS_LOGGER 电压始终处于高电平(约33~35V)。 这意味着雷达未成功初始化(尚未收到 Cfg 设置)。 请告诉我如何解决。 这里是我用于将 Cfg 从 CC3235S 发送到 IWR6843以及从 MSS_logger 引脚接收数据的代码。  之后、我将 mmwaveTaskInit();放在 CC3235S 项目的 main_tirtos.c 中。 如上所述、结果为6843未初始化。

    注意:我设置开关 S1.1~S1.12以启用 MMWAVEICBOOST 上的40引脚连接器、并为 IWR6843刷写演示代码。  

    //#define debug_print
    #define MMWAVE_SENSOR 1
    
    #define MMWAVE_TASK_STACK_SIZE 1024
    #define MMWAVE_TASK_PRIORITY 1
    
    #define MMWAVE_COMMAND_DELAY 1000000 // 1秒
    #define MMWAVE_START_DELAY 20000000 // 20秒
    
    Task_Structt mmwaveTask;
    Char mmwaveTaskStack[mmwave_task_stack_size];
    
    Semaphore_handle 毫米波 SemHandle;
    Semaphore_Structm 毫米波 Semt;
    
    UART_Handle 毫米波 UartHandle;
    UART_Params mmwaveUartParams;
    UART_Handle mmwaveLoggerUartHandle;
    UART_Params mmwaveLoggerUartParams;
    
    uint8_t currentInterval = 0;
    volatile uint8_t SENSOR_Connected = 0;
    
    Smssgs_mmst SensorField_t latestMmwaveData;
    
    
    //更新了命令列表以显示"60Hz"(
    *命令列表)、"60hz (命令列表)(1)
    "通道配置15 5 0\r"、
    "adcCfg 2 1\r"、
    "adcbufCfg 0 1 1 \r"、
    "ProfileCfg 0 60.6 30 10 62 0 53 1 128 2500 0 30\r"、
    "线性调频脉冲配置0 0 0 0 0 0 0 0 1 \r\n、
    "线性调频脉冲配置1 1 0 0 0 0 0 4 \r\n "、
    "frameCfg 0 1 128 0 50 1 0\r"、
    "低功耗0 1\r"、
    "guiMonitor 1 0 0\r"、
    "CfarCfg 6 4 4 4 4 16 4 50 62 0\r"、
    "doaCfg 600 1875 30 1 0\r"、
    "SceneryParam -6 0.5 6\r"、
    "GatingParam 4 3 2 0\r"、
    "StateParam 10 5 100 100 5\r"、
    "AllocationParam 250 0.25 10 1 2\r"、
    "AccelerationParam 1 1\r\n"、
    "PointCloudEn 0\r"、
    "TrackingCfg 1 2 250 20 52 82 50 90\r\n"、
    "sensorStart\r\n"
    };
    
    void mmwaveTaskInit (void)
    {
    /*构造信标*/
    Semaphore_Params semParams;
    Semaphore_Params_init (semParams);
    Semaphore_construction (&mmwaveSemStruct, 0,&semParams);
    mmwavSemHandle = Semaphore_handle (&mmwavSemStruct);
    
    /*配置显示任务。 *
    Task_Params taskParams;
    Task_Params_init (&taskParams);
    taskParams.stack = mmwaveTaskStack;
    taskParams.STACKSIZE = MMWAVE_TASK_STACK_SIZE;
    taskParams.priority = mmWave_task_priority;
    Task_construction (&mmwaveTask、mmwaveTaskFxn、&taskParams、NULL);
    
    UART_INIT();
    
    /*打开毫米波配置 UART 端口*/
    UART_PARAMS_INIT (mmwaveUartParams);
    mmwaveUartParams.writeDataMode = UART_DATA_BINARY;
    mmwaveUartParams.readDataMode = UART_DATA_BINARY;
    mmwaveUartParams.readReturnMode = UART_RETURE_FULL;
    mmwaveUartParams.readEcho = UART_ECHO_OFF;
    mmwaveUartParams.波特 率= 115200;//配置波特率
    mmwaveUartParams.readTimeout = 500000 / Clock_tickPeriod;
    
    //mmwaveUartHandle = UART_OPEN (Board_UART0、&mmwaveUartParams);
    mmwaveUartHandle = UART_open (CONFIG_UART_0、mmwaveUartParams);
    if (mmwaveUartHandle = NULL){
    /* UART_open()失败*/
    while (1);
    }
    
    /*打开毫米波记录器 UART 端口*/
    UART_Params_init (&mmwaveLoggerUartParams);
    mmwaveLoggerUartParams.writeDataMode = UART_DATA_BINARY;
    mmwaveLoggerUartParams.readDataMode = UART_DATA_BINARY;
    mmwaveLoggerUartParams.readReturnMode = UART_return_full;
    mmwaveLoggerUartParams.readEcho = UART_ECHO_OFF;
    mmwaveLoggerUartParams.波特 率= 921600;//配置波特率
    mmwaveLoggerUartParams.readTimeout = 500000/ Clock_tickPeriod;
    
    //mmwaveLoggerUartHandle = UART_OPEN (Board_UART1、&mmwaveLoggerUartParams);
    mmwaveLoggerUartHandle = UART_OPEN (CONFIG_UART2_0、&mmwaveLoggerUartParams);
    
    if (mmwaveLoggerUartHandle = NULL){
    /* UART_open()失败*/
    while (1);
    }
    }
    
    void mmWave_init (void)
    {
    int command_index;
    int byte_index;
    Int 重试;
    字符输入[4];
    char dump;
    Int CommandLength;
    
    ///uart_control (mmwaveUartHandle、UARTCC32XX_CMD_RX_FIFO_FLUSH、0);
    
    //解析配置文件中的所有命令
    对于(COMMAND_INDEX = 0;COMMAND_INDEX "dump"="" &commandlist[command_index][byte_index],="" 1);="" uart_read(mmwaveuarthandle,="" &dump,="" }="" take="" care="" of="" additional="" "\n"="" 4="" bytes="" "input"="" input,="" 4);="" keep="" reading="" until="" reaches="" last="" "="">"
    while (转储!=">")
    {
    UART_READ (mmwaveUartHandle、转储、1);
    }
    
    //如果数组“输入”等于“完成”,这意味着它接收正确的命令
    if (input[0]='D'&& input[1]='o'&& input[2]='n'&& input[3]='e')
    {
    中断;
    }
    }
    #endif
    }
    }/*
    
    !
    *@简介 主任务函数
    *
    *@param A0 -
    *@param A1 -
    */
    #define empty_test
    
    void mmwaveTaskFxn (UARg a0、UARg A1)
    {
    //在初始化毫米波之前等待毫米波加电
    Task_sleep (MMWAVE_START_DELAY / Clock_tickPeriod);
    
    //等待传感器连接到收集器
    while (!sensor_connected);
    
    //初始化并启动毫米波
    MMWAVE_INIT();
    
    //UART_CONTROL (mmwaveLoggerUartHandle、UARTCC32XX_CMD_RX_FIFO_FLUSH、0);
    
    #ifdef MMWAVE_SENSOR
    while (1)
    {
    /*获取毫米波值*/
    uint8_t status = readmmwave (&mmwaveSensor);
    
    交换机(状态)
    {
    案例 MMWAVE_STATUS_SUCCESS:
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"S"、1);
    #endif
    //Util_setEvent (&Sensor_Events、sensor_mmWave_EVT);
    //SSF_PostAppSem();
    中断;
    案例 MMWAVE_STATUS_INVALID_SYNC:
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"!SYNC\n\n"7);
    #endif
    中断;
    案例 MMWAVE_STATUS_TLV_TO_long:
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"TLV>PKT\n\r\n、9);
    #endif
    中断;
    案例 MMWAVE_STATUS_PKT_TO_long:
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"PKT!=CNT\n\r\n、10);
    #endif
    中断;
    案例 MMWAVE_STATUS_INVALID_TLV:
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"!TLV\n\n"6);
    #endif
    中断;
    }
    
    }
    #endif
    }
    
    Smsgs_mmwaveSensorField_t mmwaveSensor =
    {0};
    
    uint8_t readmmwave (Smsgs_mmwaveSensorField_t* mmWaveData)
    {
    mmWaveDataUART_t mmWaveUart;
    CHAR 输入= 0x0;
    char pBuf[250];
    uint32_t i = 0;
    uint32_t count = 0;
    uint32_t len_cnt = 0;
    uint32_t len_pkt = 0;
    
    uint32_t num_tlv = 0;
    uint32_t tlv_index = 0;
    uint32_t tlv_type = 0;
    uint32_t tlv_length = 0;
    
    uint32_t obj_index = 0;
    uint32_t num_obj = 0;
    
    //同步字:02 01 04 03 06 05 08 07
    //等待同步字的开始
    while (输入!= 0x02)
    {
    UART_READ (mmwaveLoggerUartHandle、INPUT、1);
    }
    
    //验证接下来的7个字节是正确的同步模式
    len_cnt = 1;
    计数= 0;
    while (count < 7)
    {
    len_cnt += uart_read (mmwaveLoggerUartHandle、&INPUT、1);
    switch (count)
    {
    情况0:if (input = 0x01) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    情况1:if (input = 0x04) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    情况2:if (input = 0x03) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    案例3:if (input == 0x06) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    情况4:if (input = 0x05) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    情况5:if (input = 0x08) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    情况6:if (input == 0x07) count++;否则返回 MMWAVE_STATUS_INVALID_SYNC;break;
    }
    }
    
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"$"、1);
    #endif
    
    //读取剩余的帧头
    len_cnt += uart_read (mmwaveLoggerUartHandle、pBuf、44);
    len_pkt=((uint32_t)((pBuf[12])& 0x00FF)+
    (((uint32_t)((pBuf[13])& 0x00FF)<< 8)+
    (((uint32_t)(((pBuf[14])& 0x00FF)<< 16)+
    (((uint32_t)(((pBuf[15])& 0x00FF)<< 24));
    
    mmWaveData->frame_number =((uint32_t)((pBuf[16])& 0x00FF)+
    (((uint32_t)((pBuf[17])& 0x00FF)<< 8)+
    (((uint32_t)(((pBuf[18])& 0x00FF)<< 16)+
    (((uint32_t)(((pBuf[19])& 0x00FF)<< 24));
    
    num_tlv =(pBuf[40]和0x00FF)+((pBuf[41]和0x00FF)<< 8);
    
    
    //处理每个 TLV 结构
    for (tlv_index=0;tlv_index <len_pkt){
    返回 MMWAVE_STATUS_TLV_TO_long;
    }
    
    switch (tlv_type)
    {
    情况0x07:
    
    //保存脱机处理的长度。 不想放慢速度
    //通过计算对象数量来读取 UART 流
    TLV_length = tlv_length - 8;
    num_obj = tlv_length;
    obj_index = 0;
    
    while (tlv_length >0)
    {
    //Board_LED_TOGGLE (board_LED_TYPE_LED1);
    
    //保存前10个对象信息
    if (obj_index < SMSGS_sensor_mmwave_MAX_obj)
    {
    //保存对象信息(tid、posx、posy)
    len_cnt += uart_read (mmwaveLoggerUartHandle、mmWaveUart.objInfo[obj_index].info、12);
    //丢弃不需要的信息
    len_cnt += UART_read (mmwaveLoggerUartHandle、pBuf、56);
    }
    其他
    {
    //已读取最大对象数。 读取其余物体并丢弃
    len_cnt += UART_read (mmwaveLoggerUartHandle、pBuf、68);
    }
    //增加保存的对象数
    obj_index++;
    //减量长度计数器,查看是否有要处理的其他数据
    TLV_length = tlv_length - 68;
    }
    
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"&"、1);
    #endif
    
    中断;
    
    情况0x06:
    TLV_length = tlv_length - 8;
    while (tlv_length > 0){
    len_cnt += uart_read (mmwaveLoggerUartHandle、pBuf、16);
    TLV_length = tlv_length - 16;
    }
    
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"^"、1);
    #endif
    中断;
    情况0x08:
    TLV_length = tlv_length - 8;
    len_cnt += uart_read (mmwaveLoggerUartHandle、pBuf、tlv_length);
    #ifdef debug_print
    UART_WRITE (mmwaveLoggerUartHandle、"*"、1);
    #endif
    中断;
    默认值:
    返回 MMWAVE_STATUS_INVALID_TLV;
    }
    }
    
    
    //后处理
    
    //仅在接收到完整帧时继续处理
    if (len_cnt!= len_pktt)
    返回 MMWAVE_STATUS_PKT_TO_long;
    
    //对象数
    mmWaveData->num_objs = num_obj / 68;
    //对象信息
    对于(i=0;i 's="" valid="" data="" in="" the="" array="" if(i="" num_objs)
    {
    mmWaveData->objInfo[i].tid = Util_buildUint32 (mmWaveUart.objInfo[i].info[0]、
    mmWaveUart.objInfo[i]、
    mmWaveUart.objInfo[i]、info[2]、
    mmWaveUart.objInfo[i]。info[3]);
    mmWaveData->objInfo[i]。posx = Util_buildUint32 (mmWaveUart.objInfo[i]。info[4]、
    mmWaveUart.objInfo[i]、
    mmWaveUart.objInfo[i]、info[6]、
    mmWaveUart.objInfo[i]。info[7]);
    mmWaveData->objInfo[i].posy = Util_buildUint32 (mmWaveUart.objInfo[i].info[8]、
    mmWaveUart.objInfo[i]、info[9]、
    mmWaveUart.objInfo[i]、info[10]、
    mmWaveUart.objInfo[i]。info[11]);
    }
    其他
    {
    mmWaveData->objInfo[i].tid = 0;
    mmWaveData->objInfo[i]。posx = 0;
    mmWaveData->objInfo[i]。posy = 0;
    }
    }
    
    
    //UART_CONTROL (mmwaveLoggerUartHandle、UARTCC32XX_CMD_RX_FIFO_FLUSH、0);
    
    返回 MMWAVE_STATUS_SUCCESS;
    }
    
    void mmwaveStart (void)
    {
    SENSOR_Connected = 1;
    Semaphore_post (mmwaveSemHandle);
    }
    

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

    Hector、

    我已经亲自为您验证过、借助您的设置(IWR6843+ICBOOST)、我可以配置器件并通过 ICBOOST 下方的40引脚接头从器件获取数据、并为此提供了显式指令。 此外、我们还确认您可以运行开箱即用演示、因此您的电路板在这方面可以正常工作。 这些信号超出 IWR6843+ICBOOST 范围的应用超出了该线程的范围、因此我将关闭该线程。

    此致、

    Connor Desmond