使用 RS-485 收发器运行 CAN 总线

电器工程 rs485 能够
2022-01-14 14:05:53

最近我讨论了是否可以将 RS-485 收发器用于 CAN 总线网络,以便获得在 CAN 环境或半双工 RS-485 网络中使用相同硬件的灵活性,尽管使用不同的软件.

示意图

模拟此电路- 使用CircuitLab创建的原理图

这个想法是在使用 RS-485 设置中的板时像往常一样使用 RS-485 总线驱动程序。当一个人想要发送时,发送器由 DEN 启用,并且这些位像往常一样出现在 D 输入端。提供额外的上拉和下拉以确保开放总线线路上的有效总线电平。

在 CAN 模式下,D 输入连接到低电平(显性),DEN 输入用于在传输时呈现位流。当 DEN=1(驱动器使能)时,总线被驱动为低电平(显性),否则线路保持隐性。这应该模仿 CAN 总线的集电极开路特性,因为只有一种状态被主动驱动,而另一种状态仅由上拉电阻被动拉动。

我考虑的部分是SN64HVD11SN65HVD230作为 3V3 CAN 收发器的参考。

SN64HVD11 的驱动器启用时序为最大值。55ns,下降时间限制在 30ns,小于“真实”CAN 驱动器的比较数字。

以前有人试过吗?有没有我可能完全错过的问题?

澄清:整个系统旨在用于学术领域的小型无人驾驶车辆控制,因此与第三方组件的互操作性并不重要。

3个回答

它可能可以工作,尽管我不会称它为“生产解决方案”!

您需要做的一件事是反转 DEN 信号,因为 CAN 是低主导的,而不是高主导的。

您还需要调整端接,因为尽管 CAN 和 RS485 都设计为在总线的每一端由一个 120 欧姆电阻端接,但 RS485 通常包含的附加偏置电阻会将总线线路拉到稍微“电压”中心点的一侧”,而 CAN 需要在两条线路上以约 2.5V 的电压闲置隐性。

IIRC,在检测到显性位之前允许大约 0.5V 的差分电压。

这会起作用,但它会降低相对于适当的 RS485 或适当的 CAN 的噪声容限。

最大的问题是在接收端。CAN 阈值典型值为 700mV(+500 至 +900mV)。RS485 阈值为 0V 典型值(-200 至 +200mV)。

终端网络仅位于 RS-485 总线的每一端。这是为了在 A 和 B 之间提供大约 200mV 的差分(RS485 收发器需要保证“1”输出)。

对于 RS-485 接收器,在寻找 CAN 总线上的非主导状态时(在最坏的情况下),您最终会得到负噪声容限,因为标准 RS485 接收器的阈值指定为 +/- 200mV,其中 CAN 仅承诺 500mV。一些较新的 RS485 收发器典型值为 -50mV,最坏情况为 0mV,但这些仍然无法检测到 500mV。

使用较新的收发器,并交换“B”和“A”,使 CANL 为 RS485A,CANH 为 RS485B,您将在总线上获得额外的 -200mV 偏置,因此 RS485 接收器将有更好的机会检测到非- 显性状态(偏置电阻会拉动与显性位相反的方向,因此 RS485 收发器将有更好的机会看到交叉)。

CPLD 需要做一些工作才能在所有正确的位置进行反转。

当我看到这个时,我决定安装 CAN 和 485 收发器,两者都连接到总线,并添加逻辑以确保一次只有一个处于活动状态。

在某处我听说一些最早的 CAN 应用程序使用 rs485。不确定现代 CAN 是否仍然兼容,但从表面上看,它们看起来很相似。我看到的问题是 RS485 收发器在启用驱动程序后可能会出现开启延迟,但这将在数据表中提及。

但是,如果协议真的足够相似,为什么不在 rs485 总线上添加上拉/下拉,并使用 CAN 收发器来完成这两项任务呢?CAN 收发器价格相同或更便宜,并且似乎具有比相同成本的 rs485 收发器更好的故障保护。

那是如果它们实际上是兼容的,我不确定。