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.

[参考译文] TMS320F28067:CAN 总线关闭指示消失

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/795881/tms320f28067-can-bus-off-indication-disappears

器件型号:TMS320F28067

您好!

我能够再现以下情况:

我特意对 CAN_HI 和 CAN_LO 线路短路、以生成总线关闭条件。 此外、我每隔62.5[us]个计时器 IRQ 运行一次以下函数。

可以看到、我检测到总线关闭条件是总线关闭条件的88倍、因此在88 x 62.5us 的持续时间内= 5.5ms。

CANMC 寄存器中的 CCR 位指示这种情况(请注意 ABO 位设置为0)。

 

但 BO 位在5.5[ms]后被清零、我不知道为什么会发生这种情况、因为我还没有通过清除 CCR 位来调用一个退出总线关闭状态的函数。

CAN 控制器不工作、时间戳计数器寄存器 CANTSC 在我清零 CCR 位之前不会递增。 因此、总线关闭条件似乎处于挂起状态。

这是正常情况、尤其是 BO 位在短时间后自动变为0?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    安德烈亚斯
    (置位) CCR 位是总线关闭状态比 BO 位更可靠的指示器。 根据规范、只有第一个标记的错误存储在 CANES 寄存器中。 对于要设置的其他位、需要清除第一个标志。 我想知道先前设置的位是否阻止 BO 被置位。 这确实是一个问题,为什么以前87次没有发生这种情况。

    根据 CCR 位已设置的事实、您的节点似乎处于 BO 状态。

    88次迭代后、您是否始终看到此行为?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Haresh、

    我明白了。 我认为在总线关闭条件被退出时总线关闭标志 BO 被自动清除、但显然每个错误标志都必须被单独清除、并且必须采取措施来摆脱错误状态。

    可能第三方 CAN 堆栈的其他一些代码会在一段时间后通过对 CANES 寄存器的写访问清除脱离总线指示、因此我会遇到上述情况。 我将朝这个方向进一步调查。

    感谢您的澄清。

    Andreas

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