主题中讨论的其他器件: SN65HVD75
工具/软件:Linux
我们使用的是连接到 RS485收发器的 UART 4和5、并已将 Tx/RX 控制线连接到各自来自 UART 的 RTS 信号。
当应用程序运行时、一切工作正常、但在启动期间、RTS 线路默认为"1"、这将启用 RS485发送器。 我明白为什么会发生这种情况、但我有点被误认为是要做什么。
那么、我的问题是、在串行驱动器的 RS485模式需要使用它们之前、有哪些解决方案可以让系统以低 RTS 线路启动?
谢谢
Ty
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.
工具/软件:Linux
我们使用的是连接到 RS485收发器的 UART 4和5、并已将 Tx/RX 控制线连接到各自来自 UART 的 RTS 信号。
当应用程序运行时、一切工作正常、但在启动期间、RTS 线路默认为"1"、这将启用 RS485发送器。 我明白为什么会发生这种情况、但我有点被误认为是要做什么。
那么、我的问题是、在串行驱动器的 RS485模式需要使用它们之前、有哪些解决方案可以让系统以低 RTS 线路启动?
谢谢
Ty
**我在键入此问题时解决了我的问题,我已将其提交将来参考**
我想我在解释我要实现的目标方面做得不好、我将添加更多详细信息。
我们有一个电路板、在该电路板上、我们从 AM3358向 UART 4和5添加了 RS485收发器。 我已经创建了一个器件树来设置引脚多路复用器、以便将 Tx、Rx 和 RTS 从每个 UART 路由到焊盘、在这里、它们可以连接到 SN65HVD75 RS485收发器。 每个收发器的 DE 和/RE 引脚连接在一起并连接到 RTS 引脚、RO 引脚连接到 Rx、DI 引脚连接到 UART 的 Tx 线路。 查看我的不良喷漆图:
在软件中、我将8250驱动程序配置为模拟 RS485模式、在该模式下、驱动程序将根据发送还是接收来控制 RTS 线路。 要求是驱动程序在传输输出字节之前将 RTS 线路拉为高电平、然后在最后一位之后将线路返回低电平。
上述所有功能均正常工作、并且我们有正常工作的 RS485端口。
我的问题是、当没有应用程序打开 COM 端口时、就像在系统启动期间一样、8250串行驱动程序会将 RTS 线路置于空闲状态、正如 Biser 指出的那样、空闲状态为高电平(低电平有效、高电平空闲)。 这种高空闲状态会导致启用 RS485收发器的线路驱动器、这将导致其他想要使用 RS485总线的设备出现问题。
**解决方案**
最新内核(此时为4.18.16)在内核串行驱动程序中支持名为 Linux、在引导时启用 RS485 、可在驱动程序探测期间将 UART 设置为 RS485仿真模式、因此 RTS 线路在系统引导时不会变为高电平。 您可以将此参数添加到器件树中的每个 UART 中以启用此功能。
抱歉、当前的 TI Linux 内核 SDK (目前为5.01.00.11)不包含这些更改、您必须将其修补到中。