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't 在 ABO 开启的情况下从总线中断开 CAN 总线

Guru**** 2468560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/664021/tms570lc4357-can-t-get-can-bus-out-of-bus-off-with-abo-turned-on

器件型号:TMS570LC4357

我想使用自动总线打开(ABO)在 CAN 总线进入总线关闭状态时将其复位。 遗憾的是、即使在检查 ABO 已启用并且将 ABO 计时器从0更改为10之后、我似乎也无法实现这一点(如果在设置为0时、触发器以某种方式禁用 ABO)。

我的设置是一台实时 Linux 计算机、它通过4条 CAN 总线在4个 CAN 端口上连接到我的主板、所有这些总线均已正确端接。 我在总线上的两个方向上发送大量消息、以尝试在测试过程中尽可能地使总线保持加载状态。 我运行测试10分钟。 在前5分钟内、我断开一条总线大约一分钟(可能更短)、然后重新连接。 在测试结束时、总线仍然处于总线关闭状态、错误计数有时为0、但可以是任意数字、自动总线打开仍然被启用、INIT 为 false、并且在测试期间发生了大量不同的错误。 这向我表明 ABO 没有尝试重置总线、或者如果确实没有成功、即使总线连接正确、也应该恢复。

我是否需要设置其他内容以使 ABO 正常工作?

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

    CAN 控制器有2个错误计数器:发送错误计数器和接收错误计数器(DCAN ERRC)。 当发送错误计数器的值超过255 (大于或等于256)时、它将转换为脱离总线状态。 请读取 DCAN ERRC 寄存器的 RP 字段以检查它是否处于总线关闭状态。
    由于错误计数器将在脱离总线恢复序列结束时复位、请在检查 RP 字段之前禁用 ABO。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    如上所述、我通过物理断开总线进入总线关闭状态。 我正在使用错误和状态寄存器(DCAN ES)的 Boff 位检查我是否处于该状态。 我在初始化时启用了 ABO、并将时间设置为0 (或10)。 我从未看到总线离开总线关闭状态。 我的全部测试运行10分钟。

    ABO 是否正常工作?

    它是否可以在我的测试中工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Diana、

    Hercules DCAN 模块支持 CAN 协议版本2.0 A、B 部分。它具有 ABO (自动总线开启)功能。 DCAN 证书(CAN 性能认证)附在数据表(模块认证的一章)中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    因为它应该起作用、所以我的测试是否是使用此功能的正确方法?

    ABO 是否可以启动恢复序列但永远不会完成?

    除了 ABO 位获取 ABO 以恢复总线之外、我还应该设置什么其他设置吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Diana、

    我不确定断开 DCAN 总线是否会强制 CAN 节点进入总线关闭状态。 如果您有 Vector CANstress 等工具、您可以精确地操控数据以确保正确的总线关闭。 您是否可以尝试将 CAN 高电平和 CAN 低电平短接以生成总线关闭? 如果有时间、我明天将进行此测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Diana、

    在 DCAN 规范的第 A 部分-第26页和第 B 部分-第63页上:

    启动/唤醒:

    如果在启动期间只有1个节点处于联机状态、并且该节点传输了一些消息、则它将不会得到确认、检测到错误并重复该消息。 由于此原因,它可能变为“错误被动”,但不会变为“总线关闭”。

    当您断开 CAN 总线时、CAN 节点是总线上的唯一节点、因此它将保持为错误无源、但永远不会进入 BUS_OFF 状态。

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

    您好 OJ、

    我知道会发生这种情况、但是您必须正确地终止总线才能实现这种情况。 如果我断开总线与端接(因此总线上没有正确的端接)的连接、我会得到与 ACK 错误不同的错误、并且节点不知道这是总线上唯一的错误。 这可能是现场的一个真正问题(有人未正确终止总线)、因此我正在对其进行仿真。 在这种情况下、总线是否应该使用 ABO 返回到错误激活状态?

    谢谢

    Diana

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

    我知道。 如果总线未处于"总线关闭"状态、则不会使用 ABO 返回。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Qj、

    是的、我理解这一点。 在没有正确端接的情况下、当总线断开时、我的板将关闭总线、但当我使用正确端接重新连接时、我无法使其返回到错误激活状态。 此测试是否有效?

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

    您的"正确端接"是否意味着120欧姆端接电阻器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    是的、这就是我的意思。

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

    我在 HDK 电路板上使用 CAN1和 CAN2进行了测试。 CAN 总线关断是通过使用蓝色导线将 CAN_H 和 CAN_L 短时间来实现的。 CAN 总线将自动恢复、以排除任何问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    您将其短接了多长时间? 如果您将其短接一两分钟、会怎么样?

    谢谢

    Diana

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

    您好、Diana、

    是的、CAN 总线上有两个120欧姆的终端电阻器。  对于 CAN、信号线对的两端(CAN_H 和 CAN_L)必须端接。 这是因为通信在 CAN 总线上双向流动。  如果电缆上有多个器件、则只有电缆末端的器件需要端接电阻器。

    ISO11898 (CAN 标准)要求电缆的标称阻抗为120 Ω;因此、我们应使用120 Ω 电阻器进行端接。

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

    我问过、您将 CAN_H 和 CAN_L 短接了多长时间? 如果您将其短接一分钟或两分钟、应该会发生什么情况? 我假设您在执行此操作时将总线保持在正确的端接状态。

    谢谢
    Diana
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我断开总线连接时、我始终处于总线关闭状态、因为我在总线上保持正确的端接。 重新连接后、我无法使用 ABO 恢复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的总线与 ABO 处于总线关闭状态、但未恢复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要纠正导致总线首先关闭的问题。 例如、移除用于短接 CAN_H 和 CAN_L 的导线
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    我明白了。 我只断开它1或2分钟、然后重新连接它、但它无法恢复。 这是否有效? 您的测试结果说、它会在非常短的时间内短路、它是否会在更长的时间内工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Diana、

    它确实起作用。 我将它们短接了几分钟、它们就恢复了、没有任何问题。 这是我的设置:CAN_L 和 CAN_H 使用一根导线(右下角的接头)短接。