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.

[参考译文] mmWave Lab Object Data over CAN 实验室演示不起作用

Guru**** 2526700 points
Other Parts Discussed in Thread: AWR1642BOOST, UNIFLASH, SYSBIOS, MMWAVE-SDK, AWR1443BOOST

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/710175/mmwave-lab-object-data-over-can-lab-demo-not-work

器件型号:AWR1642BOOST
主题中讨论的其他器件: UNIFLASHSYSBIOSMMWAVE-SDKAWR1443BOOST

工具/软件:Linux

"mmWave_automotive_toolbox_2_1_2"中的"mmWave lab Object Data over CAN"实验演示。

我正在尝试通过 CAN 传输毫米波实验对象数据。 在使用 PCAN 电缆之前、我将系统设置为与具有 CAN 端口的 NVIDIA TX2配合使用。 我使用的系统是 Ubuntu 16.04、代码使用 CAN 套接字。 读取套接字时、始终返回-1。 连接到示波器、我看不到 CAN 信号(请参阅所附的、脉冲仅为20mV)。 我已经按照文档 swru508b.pdf 第2.3.3节中的说明、使用0 Ω 填充 R11和 R12电阻器;并移除 R4、R6、R28和 R63电阻器。

 oscilloscope

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Tao、
    此主题已分配给 CAN 专家、您将很快得到响应。


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

    已获得 PCAN 电缆。 使用我的另一个 CAN 网络进行测试、它可以正常工作。 然后连接到 AWR1642BOOST 的 CAN 总线、收到一些消息、然后冻结、X-Y 散点图上没有任何内容。 下面是"TI CAN Visualizer"的屏幕截图。

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

    您是否使用 CCS 将映像下载到 AWR1642BOOST? 冻结发生时、您是否在 CCS 控制台中看到任何错误?

    -Raghu
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用 Uniflash、没有错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Tao、
    您正在使用发行版中的预构建二进制文件? 或者您是否构建了二进制文件?

    默认代码为 TIDA_01570。 您将需要从 MSS_main.c 中以及项目属性中删除预处理器定义"TIDA_1570"、并为 AWR1642BOOST 重建代码。


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

    是的、我使用该版本中预构建的二进制文件、因为它在文档"ObjectDataOverCAN_GetingStartedGuide.pdf"中已介绍。

    您是否想指导我如何构建二进制文件? 或者是否有有关如何执行该操作的参考?

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

    大家好、Tao、

    在我的设置中、项目中为 AWR1642BOOST 预构建的二进制文件工作正常、并且看不到 这些二进制文件中 CAN 通信中断的任何问题。  

    若要编译工程、您可以导入 CCS 工程、并从"mmWave_automotive_toolbox_2_1_2_win"工具箱中选择"odoc_16xx_MSS"和"odoc_16xx_DS"。

    您可以执行所需的修改以删除上一帖子中提到的"TIDA_1570"并重新生成代码。

    谢谢、

    -Raghu

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

    你好 Raghu、

    感谢您的帮助!

    我注意到在预构建的二进制文件中有两个文件夹:TIDA_1570和 AWR1642BOOST。 在今天重新闪存之后、它可以在 Windows 上使用 PCAN 电缆正常工作。 我还在 CCS 中执行了重建、它也起作用。  

    现在、我正在尝试使用 CAN 套接字使其在 Ubuntu 16.04中正常工作。 这里是我的 CAN 插槽配置和 CAN 插槽读取代码、我错过了什么? 当读取 CAN 插槽时、始终获取"-1"。  

    int CanSocket::init (std::字符串 ifname)

         struct sockaddr_can addr;
         struct ifreq IFR;

    //打开 CAN 插座
    if ((s_= socket (PF_CAN、SOCK_RAW、CAN_RAW))< 0)

      perror ("打开套接字时出错");
      返回-1;

    setsockopt (s_、SOL_CAN_RAW、CAN_RAW_LOOPY、环回和 sizeof (环回));

    struct timeval tv;
    TV.tV_sec = 1;// 1秒超时
    tV.tV_usec = 0;//不初始化这会导致奇怪的错误
    setsockopt (s_、SOL_socket、SO_RCVTIMEO、(const char*)&tv、sizeof (tv));

    strcpy (IFR.IFR_name、ifname.c_str());
    ioctl (s _、SIOCGIFINDEX、&IFR);

    addr.can_family = AF_CAN;
    addr.can_ifindex = IFR.IFR_ifIndex;

    if (bind (s_、(struct socaddr *)&addr、sizeof (addr))< 0)

      perror ("套接字绑定错误");
      返回-2;


    返回0;

    整型 CANSocket::readCAN (结构 CAN_FRAME *帧)

         int nbytes;

    if (getCANKey())

       nbytes =读取(s_、frame、sizeof (struct CAN_FRAME));

       if (nbytes < sizeof (struct CAN_FRAME))
       {
        返回-1;
       }

       releaseCANKey();

    其他

       返回-1;

         返回 nbytes;

    此致、

    TAO

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


    我们没有 Linux 产品。

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

    你好 Raghu、

    我理解 Linux 没有优惠。 您是否想指导我毫米波将如何发送 CAN 帧的协议、在计算机方面、我应该如何读取 CAN 帧? 我是否需要发送一些 CAN 帧来激活从毫米波发送的 CAN 帧? 还是应该向毫米波发送一些确认帧? 在软件级别上读取 CAN 总线是否有任何时序?

    此致、

    陶王

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

    请参阅函数"get_CanMessageIdentifier()"、它使用 CAN 消息标识符映射演示输出消息。 这将使您对从器件发出的不同 CAN 消息有一个大致的了解。 您还可以参阅“MmwDemo_mboxReadTask()”任务函数,该函数负责根据演示输出消息传输 CAN 消息。

    希望这有助于您了解器件发送的消息。

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

    你好 Raghu、

    感谢你的帮助。

    现在、我可以在修改 CANSocket 配置后从 CAN 总线读取数据。 我得到了重复的整齐数据、如下所示:

    重复   CAN ID         数据长度

    1        C1        48

    1        D1         08

    1        D1         32

    1        D2         08

    8.        D2         64

    1        D3         08

    8.        D3         64

    1        D6.         08

    1        D6.         24

    1        B1         04

    我进入代码中、但无法确定数据是如何排列的、您是否想指导我使用协议或数据格式? 我需要弄清楚传感器的读数。  

    我还想比较 CAN 帧数据和 UART 数据(MMWAVE_INDUSIAL_toolbox_2_4_0/labs/lab0006)。  

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

    在这两种情况下、即接口为 CAN 和 UART 时、器件发送的数据完全相同。 对于 CAN 接口,我们刚刚在传输前将消息标识符附加到有效载荷中。

    您可以参阅 MMWAVE-DEMO-VISUALIZER 代码(JScript),并参阅 MMWAVE.js 中的例程 processDetectedPoints()。 这提供了对检测点的处理。 要将此代码与基于 SDK 的代码(CAN 代码)进行映射,请查看函数 get_CanMessageIdentifier(),该函数将 CAN 消息标识符与毫米波演示输出进行映射。

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

    我终于让演示使用了预构建的二进制文件。 现在、我需要做一些工作、使其适合我们的应用。 因此、我尝试在毫米波上使用 CCS 8.1的调试模式。 我将 ccsdebug 映像刷写到毫米波中、并根据您的建议构建项目。 我遇到错误或被终止。

    在 Linux (Ubuntu 16.04)上、我获得了:

    (小部分

    [Cortex_R4_0]
    调试:启动毫米波演示
    (小部分
    调试:MMWDemoMSS 启动了初始化任务
    调试:SPI 实例@0800d0a4已打开
    ReadData = ffFFFF
    ReadData = ffFFFF
    ReadData = ffFFFF
    ReadData = ffFFFF
    ReadData = ffFFFF
    ReadData = ffFFFF
    ReadData = ffFFFF

    (二

    在 Windows 10上、我得到:

    (三

    [Cortex_R4_0]在 ThreadType_Main 中发生异常。
    主句柄:0x0。
    主堆栈基地址:0x8003360。
    主堆栈大小:0x1000。
    R0 = 0x00000000 R8 = 0x00000000
    R1 = 0x00011354 R9 = 0x00011c74
    R2 = 0x0001b561 R10 = 0x0f2e0000
    R3 = 0x08004254 R11 = 0x00000395
    R4 = 0x0800428c R12 = 0x0001583d
    R5=0x00000001 SP (R13)=0x08004268
    R6 = 0x08003352 LR (R14)= 0x00015843
    R7 = 0x08003340 PC (R15)= 0x00013b20
    PSR = 0x400c019f
    DFSR = 0x0000080d IFSR = 0x00000000
    DFAR = 0x07ffec IFAR = 0x00000000
    TI.SYSBIOS.family.ARM.exc.exception:第209行:E_undefineedInstruction:PC = 0x00013b20、LR = 0x00015843。
    xdc.runtime.Error.raise:终止执行

    (三
    它似乎卡在 BIOS_start()上? 我错过了什么?

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

    您需要从 MSS_main.c 和 makefile 中删除"TIDA_1570"定义。 您正在为 EVM 的不同变体编译代码。

    请通过上述修改重新编译代码、以使用 AWR1642BOOST 上的演示。

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

    你好 Raghu、

    感谢你的帮助。 我仅在代码中删除 TIDA_1570。 我也在编译器选项中找到它。 我将其删除、它在 CCS 中以调试模式工作。

    我还尝试了 xWR16xx 的 SDK 演示、但失败了。 此演示从"Resource Explorer/mmWave Sensors/Industrial Toolbox - v.2.5.1 "中导入。 我只记得我的 AWR1642BOOSTE 不是 ES2.0、SDK 2.0不支持它、而工业工具箱 v2.5.1中16xx 的 SDK 演示需要 SDK 2.0、对吧? SDK 1.2是否有 SDK 演示项目?

    此致、

    陶王

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

    大家好、Tao、

    演示的发行说明将让您了解它支持的 SDK 版本。 正确的选择 TIREX 项目适用于 SDK 版本2.0.0.4

    如果您需要适用于版本1.2的 MMWAVE-SDK 的 mmw 演示、您可以下载 MMWAVE-SDK-LTS 并检查演示。  

    谢谢、

    -Raghu

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

    你过得怎么样!

    我正在尝试使 CAN 在 AWR1443BOOST 上工作、卡在等待 SENSOR_START 事件获取信号量以读取传感器。 您是否介意查看我的另一个问题主题: e2e.ti.com/.../2672497

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

    通过比较 SDK 和 ODOC (CAN 上的对象数据)演示中的"cli.c"、我在演示中找到了用于 CAN FD 的方法:绕过 CLI 并制作雷达配置表。 但是、调试在尝试执行命令"sensorStop"时始终崩溃、该命令是雷达配置的第一个命令。 雷达命令是否有任何额外的初始化? 还是有一些命令到达雷达的时间?

    由于代码变化会导致程序存储器溢出、我注释掉"Initialize LVDS streaming"、这是否会影响发送到雷达的命令?

    TAO

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

    大家好、Tao、

    ODOC 适用于 AWR1642BOOST EVM、不适用于 AWR1443BOOST EVM。  

    AWR1443BOOST 仅具有 CAN 接口,不具有任何 CANFD 接口。  

    谢谢、

    Raghu