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.

[参考译文] CCS/TMS570LS0914:从 CAN 消息接收 CAN ID

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/677208/ccs-tms570ls0914-receiving-the-can-id-from-can-message

器件型号:TMS570LS0914

工具/软件:Code Composer Studio

大家好、


我想知道是否可以获取传入的 CAN ID。
我希望发送和接收具有不同 CAN ID 的 CAN 消息、以供后续应用使用。
但是、如果我尝试从仲裁寄存器中获取已发送的 ID、它始终向我显示我首先自行配置的 ID。 您可以在下面看到它。
我将 CAN2用于我的应用。


 已接收消息的配置:
const CANMessageObjectConfig receiveConfig =
 {
 .DIRECTION = CAN_DIRECT_RECEIVE、
 .id = 0x000、
 .idMask = 0x000、
 .ideMask = 1、
 .mode = CAN_standard_ID、
 .node = CAN_NODE_1                              //CAN2
 };


 仲裁寄存器的内部配置:
object->tmsObj->IF2ARB =(uint32) 0x8000000000U |(uint32) 0x00000000U |(uint32) 0x000000000000U |(uint32)((uint32)((uint32)(config->id)&(uint32) 0x000007FFU)<<(uint32);u/reg18uarb;

首先、我尝试在仲裁寄存器中写入传入 ID、如下所示。


           if (object->config->mode = CAN_standard_ID){
               MSG->id = object->tmsObj->IF2ARB;  // IF2ARB 寄存器中的 id (18-28)
               MSG->id = msg->id >> 18;
               MSG->ID = msg->ID &0x7FF;
           }


使用 canGetID 函数。

           MSG->id = canGetID (object->node、object->MessageBox);


但它始终显示我配置的 ID (本例中为"0")。
从消息获取数据或长度没有任何问题。 因此,我希望有人可以帮助我解决我的问题,我认为我对如何使用仲裁登记册有误解。

感谢你的帮助、
Simon

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

    canGetID 函数" msg->id = canGetID (object->node、object->MessageBox);"
    请给我一个号码533545541! 不是配置的 ID。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我把它修好了!

    我只需将错误的对象指定给 canGetID 函数。 无法从寄存器中读取 ID。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simon、

    很高兴您能够解决此问题。 如果出现任何其他问题、请告知我们。