0

我正在尝试通过带有内核 2.6.39 的 Linux 机器上的串行接口 RS-485 进行通信。我将这个分线板pySerial模块一起使用。当我通过界面写东西时,我的数据经常被破坏。在分线板的产品页面上有人提到:

我从一开始就注意到,在发送串行数据之后,我需要延迟大约 25 毫秒,然后才能将 RTS 线拉低,否则传输会损坏或无法传输。

我发现 RTS 线在我写入字节时很快变高,但在写入后立即变低。我如何保持这条线高(更长一点)?

4

2 回答 2

0

经过大量的反复试验,我想我找到了问题所在。我的假设是,当我使用 serial.write() 时,内核之外的 RS-485 驱动程序将 RTS 线设置为高电平。serial.write() 将字符写入 /dev/ttyS1。从这一刻起,用于 RS-485 的 Linux 驱动程序控制串行总线以写入字符。在此操作期间,它在实际写入时刻将 RST 线设置为高电平。

我无法在更高级别上控制此写入操作,我想我必须侵入驱动程序或将 RTS 线连接到我可以控制的不同 GPIO。

于 2013-10-23T09:44:18.053 回答
0

您可以使用以下方法手动设置 RTS:

setRTS(level=True)

然后在 25ms 延迟后清除它:

setRTS(level=False)
于 2013-10-22T22:12:44.417 回答