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.

[参考译文] TMS570LC4357:CAN 总线不发送 ACK

Guru**** 2926860 points

Other Parts Discussed in Thread: HALCOGEN, TCAN337

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1158710/tms570lc4357-can-bus-not-sending-acks

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGENTCAN337

在需要接收具有任意 ID 的扩展 ID CAN 总线帧的设计中使用 TMS5704357我们的 HALCoGen 配置如下图所示。

您可以在下面的逻辑分析仪捕获中看到没有 ACK、这应该由 TMS570提供。 我认为、使用我们的 HALCoGen 配置、它应该会返回任何帧 ID。  为什么 TMS570不在这些帧上发送 ACK?  我还应该注意的是、在任何时候都不会输入 CAN 中断处理程序代码。

如果需要、可使用 TCAN337 IC 将 MCU 与系统 CAN 总线相连。

谢谢你。

-Mark

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

    Mark、您好!

    1. TMS570是否具有与发送器相同的波特率?

    2. TMS570 CAN 模块是否已正确初始化?  

    3.要接收中断、应选择 VIM 中的 CAN 通道:  

    并通过调用来启用 IRQ 中断:

    _enable_IRQ ();

    4.您能否为 TX 配置邮箱1、并检查您是否可以发送 CAN 消息?

    _enable_IRQ ();

    canInit();

    canEnableErrorNotification (canREG1);
    canEnableStatusChangeNotification (canREG1);

    canTransmit (canREG1、canMESSAGE_BOX1、TX_PTR);  

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

    我创建了一个使用 mailbox2接收 CAN 消息的示例:

    e2e.ti.com/.../TMS570LC43x_5F00_CAN_5F00_RX.zip

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

    Mark、您好!

    这可能是由节点之间不同的波特率引起的。 确保 CAN 总线网络上的所有节点都配置为具有相同的波特率。

    每个无误地接收帧的 CAN 消息接收器将把 CAN 总线驱动至确认槽中的显性状态。 CAN 报文发送器检测到 CAN 总线被驱动至显性状态、因此知道至少有一个其他节点接收到了报文而没有错误。