Ich habe meinen Prototyp einer RS-485-Schaltung zum Laufen gebracht. Jetzt habe ich es über RS-232 an meinen PC angeschlossen, da ich den PC zum Master machen möchte. Wenn ich mich jedoch über Hyperterminal mit der Schaltung verbinde, geht die RTS-Leitung, die mit RE und DE verbunden ist, immer hoch. Der PC kann Daten an die Schaltung senden, aber nicht empfangen, da das RTS niemals niedrig wird. Das Umstellen des Handshakings von None auf Hardware hat nicht geholfen.
Ich habe später Modifikationen an der Schaltung vorgenommen, sodass auf der PIC-Seite der Pin, der RE und DE des SN75176 beim Übertragen von Daten hoch treibt, auch RE und DE des SN75176 auf der PC-Seite niedrig treibt, um den Empfang zu ermöglichen. Dadurch ändert sich die Linie von zwei auf drei. Es ist falsch, aber ich mache es nur, um zu sehen, wie es wirklich funktioniert, wenn der RTS-Pin richtig funktioniert.
Wie mache ich weiter, damit der RTS-Pin richtig funktioniert? Ich weiß, dass ich einfach eine App mit Visual Studio erstellen kann, um eine Verbindung zur Leitung herzustellen und RTS manuell umzuschalten, aber das ist zu mühsam und ich hätte lieber eine Hardwarelösung, wenn möglich.
Dieser RS485-zu-RS232-Konverter von Mann - scheint das zu tun, was Sie tun, und Erfolge zu erzielen.
Es hört sich so an, als ob Hyperterminal in der Lage sein sollte, eine ordnungsgemäße RTS-Steuerung durchzuführen.
FTDI-USB-zu-Seriell-Konverter wie FT232R, FT2232R, FT2232H usw., wenn sie in einem UART-Modus betrieben werden, haben einen Richtungs-Pin, der hoch geht, während der Chip sendet. Ich habe eine USB / RS-485-Konverterkarte mit einem FTDI-IC implementiert, und es funktioniert ohne Probleme. Das wollen Sie wahrscheinlich nicht hören, aber es ist wahrscheinlich die einfachste und zuverlässigste Methode. In Bezug auf RS-232 zu RS-485 erinnere ich mich, dass ich über die Verwendung eines Monostabilen gelesen habe, um das Richtungssignal für den RS-485-Treiber-IC bereitzustellen.
Auf meinem Orange Pi Zero habe ich das RTS über GPIO gesteuert ... Ich verwende Python, also definitiv nicht sehr genau, aber für eine 19200 UART - RS485-Verbindung zu meinem ABB-Wechselrichter ist es genau genug.
Ausschnitt:
ser = serial.Serial('/dev/ttyS1', 19200)
gpio.output(led, 1)
data ="\001\002\003\004"
ser.write(data)
print len(data)
sleep(len(data)*8.0/19200)
gpio.output(led,0)
sleep(0.1)
ser.close()
Ergebnis:
Chris Stratton