CAN总线可以交换CANH和CANL线吗?

电器工程 能够
2022-01-14 05:00:10

类似于问题在 USB 电缆中,可以交换 D+ 和 D- 线吗?,如果我们将CAN-H和CAN-L线互连可以吗?

CAN是一种差分协议。难道显性位和隐性位只不过是这些线上的电压差吗?

有关其他差分协议的信息也将是有用的。

3个回答

我找不到任何给出明确答案的参考资料。但是看一些数据表,我不这么认为。USB 正在查看是否存在电压变化而 CANBus 正在查看电压本身。

以下是 USB 传输的示例:

USB NRZ

1 和 0 的编码取决于是否存在转换。

与 CANBus 不同,CANBus 采用本应用说明中的电压电平差异:

CANBus 差速器

如果我们查看 CANBus 收发器的数据表,例如MCP2551,我们会看到以下内容:

  Sym                  Characteristic                   Min     Max  Units
VDIFF(r)(i)    Recessive differential input voltage    -1.0    +0.5    V
VDIFF(d)(i)    Dominant differential input voltage      0.9     5.0    V

由于提到了负电压,这​​使我相信极性很重要,并且它们没有采用差分电压的绝对值。

所以如果我们有:

CANH=2.5V
CANL=2.5V

通常收发器会:

CANHCANL=2.5V2.5V=0.0V=Recessive

如果你交换了它会做的行:

CANLCANH=2.5V2.5V=0.0V=Recessive

到目前为止,一切都很好。当我们遇到以下问题时,问题就来了:

CANH=3.5V
CANL=1.5V

在这里,收发器通常会:

CANHCANL=3.5V1.5V=2.0V=Dominant

如果你交换了它会做的行:

CANLCANH=1.5V3.5V=2.0V=Recessive(out of spec)

所以你接收端只会看到隐性位。

交换 CAN-High 和 CAN-Low 线不起作用。这很容易凭经验确定。我和我的同事有时会不小心交换线路,很明显它不起作用。

一切都取决于收发器模型。它们对 CAN_H 和 CAN_L 的值具有一定的灵活性,但我确实认为CAN_H 的值在任何情况下都必须更高(至少对于我所见过的所有模型)。

如果您只是更改电缆引脚,只要所有 CAN_L 相互连接,CAN_H 也连接,它应该可以工作。