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.

[参考译文] RM48L950:RM48 L950AZWT

Guru**** 2032800 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/926647/rm48l950-rm48-l950azwt

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

您好!

我正在关注 YouTube 上的 CAN 通信视频。 有人能告诉我如何配置 CAN 消息 ID 吗?

视频链接:- https://www.youtube.com/watch?v=TrKQN-sor-s

谢谢、此致、

Prathamesh Yawalkar

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

    您好!

    通过 CAN 总线进行通信是通过 CAN 帧完成的。 CAN 帧由 CANID 或仲裁 ID、CAN 数据和 CRC 组成。 CAN ID 或仲裁 ID 用于标识报文并指示报文的优先级。 帧有两种格式:标准格式使用11位仲裁 ID、扩展格式使用29位仲裁 ID。

    CAN 是对等网络。 当 CAN 节点准备好传输数据时、它会检查总线是否占线、然后简单地将 CAN 帧写入网络。 CAN 帧不包含发送节点或任何目标接收节点的地址。 相反、整个网络中唯一的仲裁 ID 会标记帧。 CAN 网络上的所有节点都接收 CAN 帧、并且根据该传输帧的仲裁 ID、网络上的每个 CAN 节点决定是否接受帧。

    如果多个节点试图同时向 CAN 总线发送一条消息、那么具有最高优先级(最低仲裁 ID)的节点将自动获得总线访问权限。 低优先级节点必须等到总线可用后再尝试再次发送。

    在 RM48上、 DCAN IF1ARB 或 DCAN IF2ARB 用于存储消息的仲裁 ID。

    例如:

    CANREG1->IF1MSK = 0xC0000000U |(UINT32)((UINT32)((UINT32) 0x000007FFU &(UINT32) 0x1FFFFFFFU)<<(UINT32) 0U);
    CANREG1->IF1ARB =(uint32) 0x800000U |(uint32) 0x40000000U |(uint32) 0x20000000U |(uint32)(((uint32) 1U &(uint32) 0x1FFFFFFFU)<<(uint32) 0U);
    CANREG1->IF1MCTL = 0x00001000U |(UINT32) 0x00000000U |(UINT32) 0x00000000U |(UINT32) 0x00000000U |(UINT32) 8U;
    CANREG1->IF1CMD =(uint8) 0xF8U;
    canREG1->IF1NO = 1U;

    请使用 HALCoGen 进行外设配置。 HALCOGen 包括轮询模式和中断模式下的2个 CAN 示例。

    https://www.ti.com/tool/HALCOGEN