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.

[参考译文] THVD1429:在高可靠性系统中避免 RS485碰撞

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1263355/thvd1429-rs485-collision-avoidance-in-high-reliability-systems

器件型号:THVD1429

大家好!  

我有这样的情况:有一个子系统(在一个利用两个 MSP430微控制器的 PCB 板周围)。 子系统通过 RS485总线与卫星总线通信。 在子系统内部、这两个 MCU 都连接到同一总线、因此在默认运行模式下、它们使用该总线相互交换信息、但在随机时刻、可能会收到来自 OBC (因此卫星平台)的更高优先级命令。  
连接如此所示、因为如果发生故障模式、并且其中一个微控制器发生故障、OBC 可以直接访问第二个微控制器。  
问题是、我如何能够:
a)避免标准两个 MCU 通信和 OBC 高优先级消息之间的冲突、
b)避免垃圾邮件在公共汽车上,在线路上到 OBC -我想隐藏内部通信,
使用半双工收发器。  

到目前为止、我发现我可以避免 a)使用消息优先级并在 Eachj 传输之前验证总线是否处于空闲状态、但 b)呢? 我认为 RS485中继器在使用方面有一定的潜力-我可以在特定情况下关闭驱动器、但这真的是一个可靠的解决方案吗?  

我会很高兴有任何建议,也许解决方案是很容易,但我还不知道这一点。

BTW。 在这种情况下、使用 CAN 尚不是选项(兼容性)。  

祝您度过美好的一天!

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

    这听起来就像内部信息和 OBC 信息需要单独的总线。 (如果 MCU 和 OBC 可以同时传输并且您希望接收 OBC 消息、那么唯一的解决方案是使用单独的接收器。)

    由于两个 MCU 在同一个板上、您无需为其使用电气 RS 至485总线;您可以直接连接 UART、或使用另一个协议、如 I²C μ A 或 SPI。

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

    Slawomir、您好!

    因此、对于您的第一个问题(A)-使用优先级系统可能是最佳解决方案;您似乎已经了解了这一点。 由于 RS -485只是一个 PHY 层规范(也就是说、它只定义了收发器的电气层) 这些器件本身在碰撞过程中基本上可以得到保护、由于 THVD1429已集成了接收器失效防护装置、因此碰撞将导致收发器的"R"引脚上出现"高电平"输出而不是毛刺。 然而、系统如何处理冲突通常是在较高层通过固件完成的-优先级系统可能是最简单的方法。

    对于第二个问题 b)将不需要的信号从 OBC 输入中保持下去会更具挑战性。

    从硬件角度来看、Clemens 建议使用两个不同的总线可能是最好的方法。  微控制器之间的通信、使用 I2C 上的 SPI 等设备、通过专用的 RS 至485总线作为 OBC 转仅微控制器通信。  

    如果您希望同一总线上的所有内容、则会变得复杂。 如果您看一下中继器-我们通常建议如何为 RS -485进行中继器设计、它们是两个背对背 RS 485收发器、其具有一些逻辑来基本上确保器件在 RX 或 TX 模式下始终处于运行状态(使用施密特触发缓冲器或单触发电路)。  https://www.ti.com/lit/ug/tidu590/tidu590.pdf?ts = 1685988921498 -参考设计。 请注意、这使用隔离器件、因为使用中继器的主要原因是延长总线长度、这会导致额外的接地漂移风险、因此、如果使用隔离器件、它有助于缓解接地电位差较大的问题。 由于此应用不需要此类保护、因此您可以使用任何具有类似启用方案的 RS 至485收发器-只是某些组件的值可能发生变化。  此设计还需要恒定的帧速率-因此、通信采用标准化的数据包大小、因为该设计将针对控制电路的特定延迟时间进行调整。  

    可以使用一些额外的逻辑和来自 MCU 的 GPIO 信号来防止与 OBC 通信-从我们的上述参考设计可以看出:

    本质上、中继器位于 MCU 和 OBC 之间、如果您获取来自 MCU 的 GPIO 信号、将其与中继器两侧控制电路的输出进行结合。 如果 MCU 在内部通信时强制 GPIO 为低电平、中继器将不会主动重复、因为中继器将卡在仅 RX 模式下。 当 MCU 之间没有通信时、您强制 GPIO 为高电平、并且中继器将正常工作。 这将更改一些更高级别的固件、因为 OBC 的总线仅在 MCU 与之直接通信时才处于活动状态。 因此、如果 OBC 想要发送消息、它将不知道 MCU 是否正在通信、可能需要发送一条消息、询问 MCU 是否准备就绪、如果在您定义的超时时间内没有发生响应、则 OBC 可以等待并重试、直到 MCU 释放中继器。  请再次注意、此参考设计使用隔离式器件-但在您的用例中、您不需要隔离、您只需要能够根据需要基本上打开和关闭总线的一部分。  

    此解决方案确实存在风险、因为其他问题可能导致无响应、并且很难检测到这种情况。  

    所以可以使用中继器、但可能比分开外部和内部总线更为复杂。  

    如果您有任何其他问题、敬请告知。  

    此致!

    帕克·道德森