TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] TM4C1294KCPDT:对象编号的 CANbus 中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/711176/tm4c1294kcpdt-canbus-interrupt-for-object-number

器件型号:TM4C1294KCPDT

您好!

我正在尝试提高我的 canbus 知识、但我对 canbus 对象编号有疑问。

我只想使用0x180 - 0x18F、0x280 - 0x28F、0x380 - 0x38F、0x480 - 0x48F

我的问题是:

对于0x180、只进行一次中断调用、第二次从不进行中断调用

对于0x280、只进行一次中断调用、第二次从不进行中断调用

对于0x380、只进行一次中断调用、第二次从不进行中断调用

对于每个0x480、始终中断调用、直到出现0x48F 消息。

为什么我的代码如此操作?

提前感谢

我的对象标识符代码是

setCANMSG.ui32MsgID = 0x180;
setCANMSG.ui32MsgIDMask = 0xFF0;
setCANMSG.ui32Flags=(MSG_OBJ_RX_INT_ENABLE|MSG_OBJE_ID_FILTER);
setCANMSG.ui32MsgLen = 8;
ROM_CANMessageSet (base_CANBUS、5、&setCANMSG、MSG_OBJ_TYPE_RX);

setCANMSG.ui32MsgID = 0x280;
ROM_CANMessageSet (base_CANBUS、6、&setCANMSG、MSG_OBJ_TYPE_RX);


setCANMSG.ui32MsgID = 0x380;
ROM_CANMessageSet (base_CANBUS、7、&setCANMSG、MSG_OBJ_TYPE_RX);

setCANMSG.ui32MsgID = 0x480;
ROM_CANMessageSet (base_CANBUS、8、&setCANMSG、MSG_OBJ_TYPE_RX); 

我的中断处理程序代码如下所示;

tCANMsgObject canIntObj;

uint8_t data[8];

CANStatus = CANIntStatus (BASE_CANBUS、CAN_INT_STS_CAUST);


if (canStatus = CAN_INT_INTID_STATUS)
{
ROM_CANEnable (BASE_CANBUS);
CANStatus = ROM_CANStatusGet (BASE_CANBUS、CAN_STS_CONTROL);
CANIntClear (BASE_CANBUS、CANStatus);

}
其他
{

canIntObj.pui8MsgData=data;
objStatus = CANIntStatus (base_CANBUS、CAN_INT_STS_object);
ROM_CANMessageGet (base_CANBUS、canStatus、&canIntObj、0);
CANIntClear (BASE_CANBUS、CANStatus);
CheckCanControl (&canIntObj);
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在以下位置看到了示例:"C:\ti\TivaWare_C_Series-2.1.4.178\examples\peripheral\CAN\simple_rx.c"? 您似乎增加了一些对我来说没有意义的复杂性。 您不需要在中断服务例程中调用"ROM_CANEnable()。 您是否看到在中断例程中收到错误? 您是否已验证您期望的 CAN ID 是否实际在总线上传输?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    我没有看到错误标志。 我第一次收到0x180消息、我第一次收到 CANStatus 0x8000、而我收到 CANStatus 5。 对于第二条0x180消息、I onlu 得到0x8000、这意味着成功接收。

    我使用了 Rom_、因为它仅适用于该库。
    正如我之前提到的、我可以多次获得0x480、0x481...0x48F、但0x180、0x280、0x380我只收到这些消息一次。
    这毫无意义。