工具/软件:Code Composer Studio
大家好、我是 CAN 的新手。 我现在可以毫无问题地发送/接收 CAN 消息(感谢这里的一些论坛成员)。 但是、我认为在根据接收端的 ID 过滤 CAN 消息时遇到了一些问题。
我的代码基于 TI 的 multi_Rx 和 multi_TX 示例代码。
在 CAN 对象1的发送端、我已将其 msdID 从0x1001修改为128解码。 对于这个 msgid、传输工作正常。 但是、在接收端、我将 CAN 对象1的 msdID 保持为0x1001、并且已启用 "(MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER | MSG_OBJ_EXDED_ID);"标志。
但是、我似乎仍然在接收 CAN 对象1的 msdID=ID=0x00080 (12月128日)。 我想知道我在这里有什么问题。 请提供建议。
下面是 CAN 对象1的初始化:
// //初始化消息对象以接收 ID 为0x1001的 CAN 消息。 //必须将预期 ID 与掩码一起设置,以指示全部 ID 中的//位必须匹配。 // sCANMessage.ui32MsgID = 0x1001; sCANMessage.ui32MsgIDMask = 0xffffff; sCANMessage.ui32Flags =(MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER | MSG_OBJ_EXDED_ID); sCANMessage.ui32MsgLen = 8;
下面是 CAN 对象1在发送端的初始化:
//初始化报文对象1以能够发送 CAN 报文1。 这种情况 //消息对象不是共享的,因此只需要初始化一个 //时间,和可用于重复发送相同的消息 ID。 // G_sCANMsgObject1.ui32MsgID = 128; G_sCANMsgObject1.ui32MsgIDMask = 0; G_sCANMsgObject1.ui32Flags = MSG_OBJ_TX_INT_ENABLE; G_sCANMsgObject1.ui32MsgLen = sizeof (g_pui8Msg1); G_sCANMsgObject1.pui8MsgData = g_pui8Msg1;
附件是用于发送和接收以及终端输出的代码。