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.

[参考译文] TMS470MF06607:接收到的 CAN 消息的实际 ID

Guru**** 2442090 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/626386/tms470mf06607-actual-id-of-received-can-message

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

您好!

在我的项目中、我需要收集中断我的硬件的所有消息。 同样、我只使用了消息 box1、并将框配置为这样

ID = 0xAB (不应影响对吗?)

掩码= 0x00

现在、我应该会将所有消息都输入到中。 这是肯定发生的、并且在收到任何消息时都会收到中断。 我还可以使用 canGetData 获取数据、但随后便开始了问题!

如何知道该数据随附的消息? 如何获取实际的消息标识符和 DLC? IF2->ARB 中的位28至位18始终显示为0xAB、而不管门是什么 ID。

从代码点开始、这就是在通知函数中尝试执行的操作

void canMessageNotification (canbase_t *节点、uint32 MessageBox)
{
if ((node=canREG2)&&(MessageBox ==1)) //检查由于报文对象1而产生的中断
{
//消息框1中接收到所有 Rx 消息
memset (&Msg_Data[0]、0、8);
canGetData (canREG2、canMESSAGE_BOX1、&Msg_Data[0]);//这始终有效,我获得正确的数据
MessageID = canREG2->IF2ARB; //我始终看到0xAB 位28到18

}
} 

如何知道硬件中的实际 CAN 消息标识符(消息框)? 请帮助

此致、

Shankar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有一个标准函数可调用(canGetID)。
    如果 ID 未扩展、则返回 ID 值并将其移至左侧18位(11位未扩展、29位已扩展)、因此您需要根据扩展位执行右移。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我还觉得必须有一个 canGetID 函数可用。 遗憾的是、它不可用。 我检查了几次、还再生了 Halcogen。 无功能。 您是否实现了该函数? 请帮助
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于我有的目标(RM46 HDK)、可以在 CAN.h/c 中找到 canGetID 函数

    如果您的目标没有该函数、那么您已经成为 IF2ARB 解决方案中最重要的部分(位28:0)。 IF2ARB 还应包含扩展/非扩展位。 请务必查看目标器件技术手册以确认位、以防这种情况发生变化
    (节点->IF2ARB & 0x40000000U)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,捕获是由 Halcogen 生成的 canREG2->IF2CMD。 这是 CAN 初始化中的此行

    CANREG2->IF2CMD = 0x17;

    问题是此设置要求 if2不要从新消息中更新 MSG Ctrl 和 ARB 字段。 (请参阅第页码 419是技术参考手册)。 为此、我们需要按如下方式修改行

    CANREG2->IF2CMD = 0x17 | 0x70;

    因此、问题得以解决! 感谢您的支持