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.

[参考译文] TM4C1294NCPDT:CAN 发送、接收、在201、202、203等特定节点 ID 上发送 RTR

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/694474/tm4c1294ncpdt-can-transmition-reception-sending-rtr-at-particular-node-ids-like-201-202-203-etc

器件型号:TM4C1294NCPDT

尊敬的先生,

               我正在开发 CAN 主站程序、用于与从站通信(已开发)。 我已经能够通过网络广播 CAN 消息并从任何节点接收 CAN 消息(ui32MsgIDMask = 0)。

但是、现在我想完成以下任务

1.在特定节点(201、202、203等)发送数据

2.在特定节点(201、202、203等)发送 RTR 并从这些节点接收数据。

3.从特定节点接收数据。

         那么,请告诉我如何配置 tCANMsgObject??

     现在、对于接收、我使用以下配置

   ui32MsgData = 0;
    sCANMessage.ui32MsgID = 0;
    sCANMessage.ui32MsgIDMask = 0;                                                                                                       ??????????? 在这里写什么??????????????
    sCANMessage.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;         ???????????????? 在这里写什么??????????????
    sCANMessage.ui32MsgLen = 8;

   和传输

     sCANMessage.ui32MsgID = 0;                    
    sCANMessage.ui32MsgIDMask = 0;                                                             ??????????? 在这里写什么??????????????
    sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;                     ??????????? 在这里写什么??????????????
    sCANMessage.ui32MsgLen = sizeof (pui8MsgData);
    sCANMessage.pui8MsgData = pui8MsgData;      。

    

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

    尊敬的先生,

                 我需要的通信显示在附加的快照中。

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

    如果希望允许0x200、0x201、0x202和0x203的消息 ID、则应在接收器上设置 ui32MsgID = 0x200和 ui32MsgIDMask = 0xfc。 对于发送器、您无需设置掩码。

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

    尊敬的先生,

                 感谢你的答复。 现在,我可以使用节点 ID 发送和接收消息。 但现在我正面临新的问题。 我想按快照中所示执行操作。 我想向从器件发送 RTR 请求、然后从从器件接收消息。 现在、我能够使用 MSG_OBJ_TYPE_TX_REMOTE 发送 RTR 请求。 但我无法接收从器件发送的消息。 那么,请告诉我 ,tCANMsgObject 和 CANMessageSet()的配置应该是什么?   实现此操作还需要遵循什么分步过程?

     

    此致、

    Digvijay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要使用下面的类似操作来启动远程帧。
    CANMessageSet (CAN0_BASE、1、&sMsgObjectRx、MSG_OBJ_TYPE_TX_REMOTE);

    下面的帖子有类似的问题。
    e2e.ti.com/.../2372329