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.

[参考译文] AWRL1432BOOST-BSD:如何获取目标列表(检测到的目标数组、包括位置和速度)的 CAN 数据

Guru**** 1986165 points
Other Parts Discussed in Thread: TCAN4550, AWRL1432
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1414961/awrl1432boost-bsd-how-to-get-the-can-data-of-target-list-array-of-detected-targets-include-position-and-velocity

器件型号:AWRL1432BOOST-BSD
主题中讨论的其他器件:TCAN4550AWRL1432

工具与软件:

尊敬的专家:

我想获取目标列表(检测到的目标数组、包括位置和速度)并通过 CAN 进行传输。 我根据要尝试的演示源代码进行了以下修改。

设置  gMmwMssMCB.guiMonSel.pointCloud = 1 (guiMonitor 的第一个参数)

2.添加可以传输"void mmww Demo_Transmit esedOutputTask()"函数中的代码,见下图

  

但存在一个问题、"GET_CANMessageIdentifier"函数没有"MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST" 类型、它被判定为"CAN_MESSAGE_MMWDEMO_MAX"

您能给我一些建议、以便 通过 CAN 实现目标列表数据传输吗?

B.R.

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

    尊敬的 Li:

    要进行确认、您是否能够传输目标列表数据、但获得了不正确的消息 ID?  

    如果是这样、只需少量修改、即可将 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST 添加为 ID:

    1. 在  mmwDemo_CAN_MESSAGE_TYPE 枚举中、添加 CAN_MESSAGE_MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST 作为高优先级 ID。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    typedef enum mmwDemo_can_message_type_e
    {
    /*! @brief List of detected points */
    - CAN_MESSAGE_MMWDEMO_DETECTED_POINTS = 0xD1,
    + CAN_MESSAGE_MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST = 0xD1,
    /*! @brief List of detected points */
    CAN_MESSAGE_MMWDEMO_DETECTED_POINTS,
    /*! @brief List of detected points */
    CAN_MESSAGE_MMWDEMO_EXT_DETECTED_POINTS,
    /*! @brief Range profile */
    CAN_MESSAGE_MMWDEMO_RANGE_PROFILE,
    /*! @brief Noise floor profile */
    CAN_MESSAGE_MMWDEMO_NOISE_PROFILE,
    /*! @brief Samples to calculate static azimuth heatmap */
    CAN_MESSAGE_MMWDEMO_AZIMUT_STATIC_HEAT_MAP,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    1. 在  Get_CANMessageIdentifier()中、为 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST 添加另一个条件。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    mmwDemo_can_message_type Get_CANMessageIdentifier(MmwDemo_output_message_type type)
    {
    mmwDemo_can_message_type can_msgId;
    + if(type == MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST)
    + {
    + can_msgId = (mmwDemo_can_message_type)CAN_MESSAGE_MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST
    + {
    * else if(type == MMWDEMO_OUTPUT_MSG_DETECTED_POINTS)
    {
    can_msgId = (mmwDemo_can_message_type)CAN_MESSAGE_MMWDEMO_DETECTED_POINTS;
    }
    else if(type == MMWDEMO_OUTPUT_EXT_MSG_DETECTED_POINTS)
    {
    can_msgId = (mmwDemo_can_message_type)CAN_MESSAGE_MMWDEMO_EXT_DETECTED_POINTS;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    通常、CAN ID 旨在针对最终应用进行自定义。 只要考虑到邮件优先级和过滤器、您就可以根据需要对它们进行自定义。

    谢谢!

    Jin

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

    尊敬的 Jin:

    首先、我添加了以下代码、以 从 UART 获取目标列表数据来进行 CAN 数据传输、对吗?

    其次、根据您的建议、我为 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST 添加了相关代码。 然后、我测试 CAN 数据传输、可以看到我从1432接收到的数据、一个帧数据的末尾有许多0、我不知道它是否正确?

    谢谢您和 B.R.

    Daowei

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

    尊敬的 Daowei:

    首先、我添加了以下代码、以 从 UART 获取目标列表数据来进行 CAN 数据传输、对吗?

    是的、我觉得很好。

    其次、根据您的建议、我为 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST 添加了相关代码。 然后、我测试 CAN 数据传输、可以看到我从1432接收到的数据、一个帧数据的末尾有许多0、我不知道它是否正确?

    在实际消息之后似乎有一条包含64字节 DLC 的空消息。 您能分享一下 它们的价值吗 uint8_t * Result->objOut 和  sizeof (DPIF_PointCloudCartesian * Result->numObjOut ? 在 CCS 上运行时、您可以在 Variables 选项卡中查看它们。  

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

    尊敬的 Jin:

    以下是的值  uint8_t * Result->objOut

    是以下值  sizeof (DPIF_PointCloudCartesian * Result->numObjOut

    供参考。

    谢谢您和 B.R.

    Daowei

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

    尊敬的 Daowei:

    感谢您提供屏幕截图。  

    CAN-FD 发送长度是正确的。 如果 length=112、TCAN4550将发送128 (2*64字节)的消息。  

    但是、MMW_UartWrite()正在发送(uint8_t*)Result->objOut、其中 TCAN4550_TCAN4550_T* Transmit_Schedule 正在发送(uint8_t*) 屏幕截图中的 results->objOut。

    这可能是为什么每次传输*(objOut)(=0x004154C0)(后跟相同的随机数据序列)的地址、而不是目标数据本身。  

    谢谢!

    Jin

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

    尊敬的 Jin:

    根据您的建议、我删除了  在 Results->objOut 之前、然后出现 类似这样的 CAN 消息、请 参见下图

    我认为现在很正常、对吧?

    顺便说一下、我们仍然不知道如何解码 CAN 消息(版本是 awrl1432_adas_BSD_demo_v2.2)、您能给我一些帮助吗?

    谢谢您和 B.R.

    Daowei

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

    尊敬的 Daowei:

    是的、数据现在看起来正常。

    顺便说一下、我们仍然不知道如何解码 CAN 消息(版本是 awrl1432_adas_BSD_demo_v2.2)、您能给我一些帮助吗?

    由于我们通过 CAN-FD 发送与通过 UART 发送相同的数据、因此 UART 和到主机的输出可用作 TLV 结构的参考:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    typedef struct DPIF_PointCloudCartesian_t
    {
    float x; /* x - coordinate in meters. */
    float y; /* y - coordinate in meters. */
    float z; /* z - coordinate in meters. */
    float velocity; /* radial velocity away from sensor in m/s */
    } DPIF_PointCloudCartesian;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    因此、每个点云结构为16个字节。

    如果问题是关于解释来自 CAN 总线的消息、则需要 CAN 收发器或测试仪(例如 PCAN-USB)来接收消息。

    谢谢!

    Jin

x 出现错误。请重试或与管理员联系。