我正在尝试通过内核2.6.39的Linux机器上的串行接口RS-485进行通信。我正在使用this breakout board和pySerial模块。当我通过界面写东西时,我的数据经常被破坏。在分组讨论板的产品页面,有人提到:
我从一开始就注意到,在发送串行数据之后我需要延迟大约25 ms,然后才能将RTS线路拉低,否则传输会被破坏或传输。
我发现写入字节时RTS线很快变高,但写入后立即变低。如何保持该线高(更长一点)?
答案 0 :(得分:0)
您可以使用以下方式手动设置RTS:
setRTS(level=True)
然后在25ms延迟后清除它:
setRTS(level=False)
答案 1 :(得分:0)
经过大量的反复试验,我认为我发现了问题。我的假设是当我使用serial.write()时,关闭内核的RS-485驱动程序将RTS线设置为高电平。 serial.write()将字符写入/ dev / ttyS1。从这时起,用于RS-485的Linux驱动程序控制串行总线以便写入字符。在此操作期间,它会在实际写入时刻内将RST线设置为短时间到高电平。
我无法在更高级别上控制此写操作,我想我应该入侵驱动程序或将RTS线连接到我可以控制的其他GPIO。