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.

[参考译文] TMS570LS3137:读取消息框 CAN ID

Guru**** 2540650 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1327405/tms570ls3137-reading-of-message-box-can-id

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

您好!

在我们的应用中、我们在 halcogen 中配置了一些 DCAN1消息框。

在运行期间、根据要发送的 CAN ID、我们循环查看消息框并找到具有正确 CAN ID 的消息框。

这是使用 halcogen 中的`canGetID`函数完成的。  

最近、我们对 RTOS 任务进行了一些更改(halcogen 生成的代码相同)、自此之后、我们在识别正确消息框方面存在问题。

因此、使用错误的 CAN ID 发送消息有效载荷。

为了模拟该问题、我创建了一个测试函数来循环查看所有消息框并在启动时读取所有 CAN ID。

以下是该读取的代码(从 halcogen 获得灵感):

for (curr_msg_box = 1; curr_msg_box < 10U; curr_msg_box++) {
        if((curr_msg_box % 2) == 0) {
            /** - Wait until IF2 is ready for use */
            while ((canREG1->IF1STAT & 0x80U) ==0x80U)
            {
            } /* Wait */
            canREG1->IF1CMD = 0x20U;
            canREG1->IF1NO = (uint8) curr_msg_box;
            while ((canREG1->IF1STAT & 0x80U) ==0x80U)
            {
            } /* Wait */
            curr_id32 = (canREG1->IF1ARB & 0x1FFFFFFFU);
        } else {
            /** - Wait until IF2 is ready for use */
            while ((canREG1->IF2STAT & 0x80U) ==0x80U)
            {
            } /* Wait */
            canREG1->IF2CMD = 0x20U;
            canREG1->IF2NO = (uint8) curr_msg_box;
            while ((canREG1->IF2STAT & 0x80U) ==0x80U)
            {
            } /* Wait */
            curr_id32 = (canREG1->IF2ARB & 0x1FFFFFFFU);
        }
        idList[curr_msg_box] = curr_id32;
        idListShifted[curr_msg_box] = ((curr_id32 >> 18) & 0x7FF);
    }

我在此运行期间注意到一些奇怪的行为、如果我逐步全面执行此代码、我将按预期读取所有 CAN ID (请参考快照):

但是、如果我运行一段代码、结果如下:

您可以看到、CAN ID 位置会发生移位。

您能帮助我解决这个问题吗?  

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

    Anudeep、您好!

    我已开始处理此问题、并将尽快为您提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    Anudeep、您好!

    我根据您提供的信息创建了一个示例项目。

    我能够正确读取这里的 ID。

    我随附了我的项目供您参考、请提供必要的机会来触发您正在讨论的问题。 进行更改后、请重新连接项目、以便我可以对其进行调试。

    e2e.ti.com/.../DCAN_5F00_IDs_5F00_Reading_5F00_LS3137.zip

    --
    谢谢。此致、
    Jagadish。

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

    您好、我的 MPU 配置好像有问题。 我解决了问题。 谢谢。