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.

[参考译文] TMS320F280039:MCAN 总线错误屏蔽以避免进入 Bus_Off

Guru**** 2419530 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1539815/tms320f280039-mcan-bus-error-masking-to-avoid-enter-bus_off

器件型号:TMS320F280039

工具/软件:

尊敬的专家:

客户使用 F280039 MCAN 模块、想知道是否有任何寄存器可以清除所有故障(例如 CRC、ACK 等)、以避免触发总线关闭。 或者、如果客户希望实现此类目标、是否存在任何可能最终阻止 MCAN 进入总线关闭状态的 ISR 或配置?  

在数据表中、我找到了以下相关要点、但不确定:

  • 用于自检的环回模式
  • 可屏蔽中断(两条可配置的中断线路,可纠正的 ECC,计数器溢出和时钟停止或唤醒)
  • MCAN_CCCR.INIT

您能提供一些见解吗?

Joyce

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

    您好 Joyce、

    CAN 协议中集成了每个节点上的自动检查功能、以确定 CAN 总线始终处于良好状态、如果在其中一个节点中检测到异常、则会关闭该节点、以便其他节点可以继续运行。  当达到错误阈值 255 时、如果强制进入总线关闭状态、则为节点。  传输错误会使错误计数器递增 8 个计数、对于其他错误、增加一个计数。 如果总误差达到 255、则发送节点将进入总线关闭状态、这样其他节点将有机会通过仲裁请求 CAN 总线、以便其他节点有机会进行通信。  在 CAN 中、如果节点在仲裁中胜出、它将具有控制 CAN 总线的优先级。  较低地址的节点将优先声明总线。  只有具有优先级的节点才会进行发送、除非从任何节点接收到 ACK 信号、否则该节点将继续进行发送。  如果存在传输错误并且节点未置于总线断开状态、则对 CAN 总线具有优先级或控制的节点将无限期地继续发送、从而使其他节点没有机会传输其数据。  这是节点处于总线关闭状态而无法被屏蔽的主要原因。

    正确的方法应该是首先确定错误的原因。  客户应检查错误和 LEC 寄存器、以确定主要错误发生的原因并首先进行处理。

    此致、

    Joseph