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.

[参考译文] TCAN1146-Q1:一些总线故障仅锁存近一秒、但实际会在总线上出现故障

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1527398/tcan1146-q1-some-bus-faults-are-latched-only-for-almost-one-second-although-the-fault-is-physically-applied-on-bus

器件型号:TCAN1146-Q1

工具/软件:

您好:

 我这边发生了一些关于总线故障的奇怪行为、这些故障包括:

  • 将 CANH 与 CANL 短接
  • 将 CANL 与 VBAT 短接
  • 将 CANH 与 GND 短接

故障物理施加在总线上、我可以通过 INT_CANBUS 寄存器读取总线故障源错误、几乎仅持续 1 秒。 然后、与总线故障源相对应的位再次翻转为 0、就像故障不再应用、尽管该故障仍在总线上实际应用。

例如:将 CANH 与 CANL 短接
我可以从 INT_CANBUS 寄存器读取值 0b00100000 (0x20)、其中在施加指示相关总线故障的故障后、位 5 被正确设置为 1。 但是、在 1 秒后再次检查该位、我从 INT_CANBUS 读取了 0x0、这意味着收发器不再检测到故障、尽管该故障仍应用在总线上。

分段场景:

  • 施加总线故障
  • 故障值在 INT_CANBUS 寄存器中锁存 1 秒
  • 故障值在 1 秒后不再锁存(但实际上仍会应用)
  • 然后、通信中断

对代码的见解:

  • 总线故障检查是通过轮询函数中的 INT_CANBUS 寄存器定期完成的、该函数每 500ms 轮询一次。
  • 我只能从 INT_CANBUS 读取正确的值 2 次(500ms * 2 = 1 秒)、因此该值不再被锁存。
  • 每次读取 INT_CANBUS 寄存器后、 代码都会手动清除被翻转为 1 的位、即总线故障源、因为该寄存器是 R/W1C、不是自清零位。

另一方面、这种行为 器件的正常运行 出现以下错误:

  • 将 CANL 与 GND 短接
  • 将 CANH 与 VBAT 短接

其中、只要实际施加了故障、就始终会在 INT_CANBUS 寄存器中锁存该故障。 但是、在这种情况下、通信将始终开启。

谢谢。

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

    尊敬的 Omar:

    实际上、 该功能最好用于总线阻抗为 60 欧姆的小型 CAN 总线。 您能否检查您的总线终端是否为 60 欧姆、以及您的测试网络是如何配置的?

    此致、

    Sean