Hinweis für die Textformat-Version; um diese Version im PDF Format zu lesen, laden Sie bitte https://www.dk1ri.de/dhw/i2c_rs232_interface.pdf I2C zu RS232 / USB Interface Author DK1RI, Version V07.0, 20231127 This project can be found in https://github.com/dk1ri as well. Einleitung Diese beiden Interfaces sollen im wesentlichen zum Test von MYC Devices und für Softwaretests dienen. Das Interface als Master ist auch als seriell - I2C Konverter verwendbar. Zur Steuerung mit einem Browser: siehe [7]. Zur Zeit kann man allerdings keine Binaerwerte eingeben :( Als serielle Schnittstelle kann je nach Bestückung RS232 oder USB verwendet werden; sowohl für Master als auch Slave. Beschreibung Allgemeines: Es gibt eine Firmwareversion als I2C Master und eine als Slave. Die Eagle Daten für die Leiterplatte stehen unter [1]. Die Stromversorgung ist 7- 10V, Stromaufnahme ca. 20mA max oder über USB. Details: Dieses Interface kann als I2C Master für die Bedienung anderer MYC Devices mit I2C Schnittstelle ohne command-router verwendet werden. Dabei wird an der RS232 Schnittstelle (19,2kB, 8N1) oder an der USB Schnittstelle ein Rechner mit Terminalprogramm oder Browser angeschlossen . Beim Master werden mit dem Terminalprogramm auf der seriellen Seite die MYC Befehle eingeben, so wie die Benutzerschnittstelle in einem MYC System das tun muss. Der Browser macht das auch. Interface als Slave: Dieses Interface ist ein einfaches MYC Device mit I2C Schnittstelle (Adresse ist 1), das (neben den reservierten Befehlen) nur 2 Befehlen an der I2C Schnittstelle versteht: der Schreibbefehl gibt den von der I2C Schnittstelle empfangenen String (mit Länge) auf die serielle Schnittstelle. Der Lesebefehl kopiert die Daten des seriellen Eingabepuffers in den I2C Puffer, wo der I2C Master die Daten abholen kann. Dabei wird die Länge des aktuellen Strings hinzugefügt. Schreibbefehle sind möglich, ohne dass die Lesedaten abgeholt werden. Um Blockaden zu vermeiden, müssen Daten von Lesebefehlen innerhalb von 10 Sekunde abgeholt werden. Danach werden sie gelöscht. Die Firmware kann einfach auf eine Zeit von 1 Sekunden geändert werden. Eingaben auf der seriellen Schnittstelle werden in den seriellen Puffer kopiert. Wenn kein Lesebefehl erfolgt, werden nach 252 Zeichen weitere Zeichen ignoriert. Weitere Funktionen sind an der seriellen Schnittstelle nicht möglich. Die Verwendung des Browsers an der (MYC) I2C Schnittstelle wurde bisher nicht getestet. Interface als Master: Das Interface ist ein Protokollwandler seriell ? I2c mit I2C als Master, das auf der USB Seite nach dem MYC Protokoll bedient wird. Die I2C Adresse des angeschlossenen Slave kann geändert werden. Beispiel : Der Slave als (MYC) Empfänger erwartet mit dem Befehl &H01 einen String mit Länge: &010474657374 Nach dem Befehl &H01 (Sendebefehl des Master) beginnt der Sendestring mit der Länge des folgenden String (06): &H01060104test. Der Befehl H010102 sendet den Befehl &H02 an den Slave. Wenn das ein Befehl ist, der Daten in den I2C Buffer des Slave zur Verfügung stellt, kann der Master die Daten mit &H02 abrufen.. Der Slave als MYC device antwortet mit &H02 . Der Master gibt diese Daten auf der seriellen / USB Schnittstelle aus. Ein weiterer Befehl &H02 liefert ungültige Daten Der Empfangsbefehl &H02 erwartet immer als zweites Byte die Länge des nachfolgenden Strings. Der Befehl &H03 liest so viele Bytes, wie angibt; gegebenenfalls auch ungültige. Einbindung in das MYC System Details zum MYC System stehen in [3]. Die komplette Befehlsliste steht als announcements in der Datei announcements.bas im Bascom Programm. Fehlermeldungen Der Befehl &HFC liefert den letzten Fehler im Format: aktuelle Befehlsnummer - Fehler - Befehlsnummer beim Auftritt des Fehlers Dazu werden die empfangenen Befehle von 0 bis 255 umlaufend gezählt. Nach 254 korrekten Befehlen wird der Fehlereintrag gelöscht. Reset Ist der Reset Jumper JP5 beim Anlegen der Versorgungsspannung überbrückt, werden wieder die Defaultwerte eingelesen. Dies ist hilfreich, wenn die aktuelle I2C Adresse verloren gegangen ist. Watchdog Es gibt einen kompletten Hardware-reset, wenn die Hauptschleife länger als 2 Sekunde dauert. Zusätzlich gibt es drei weitere Watchdogs, die in der vorliegenden Firmware für Tests und „nicht_MYC Betrieb“ nach ca 10 Sekunden ansprechen. Für „MYC Betrieb“ sollte der Wert auf 1 Sekunde gesetzt werden. Die Befehlseingabe und Ausführung muss in dieser Zeit beendet sein. Danach werden die bereits empfangenen Daten gelöscht. Dies soll falsche Eingaben vermeiden. Mit dem &HFC "letzten Fehler" Befehl kann man Eingabefehler sehen. Bei einem I2C Lesebefehl müssen die Daten innerhalb dieser Zeit vom I2C Master abgeholt werden. Danach werden die Daten gelöscht. Neue Befehle können erst eingegeben werden, wenn alle Daten abgeholt wurden oder die Watchdog Zeit abgelaufen ist. Wird die RS232 / USB Schnittstelle verwendet, werden die Daten sofort ausgegeben. Bei einem I2C BusLock (SDA pin auf 0) erfolgt auch ein I2C reset (Slave) Software Die Steuerung übernimmt ein AVR Mikrocontroller Atmega8 oder größer. Das aktuelle Bascom Programm verwendet einen Atmega8. Die Software wurde in BASCOM geschrieben [2] Um das Programm zu kompilieren, muss das Verzeichnis common_1.13 [6] in das Verzeichnis mit dem Programm kopiert werden Programmierung des Prozessors Zur Programmierung des Prozessors ist ein 6poliger ISP Stecker JP6 vorgesehen. Die Fuses müssen möglicherweise programmiert werden (siehe Bascom Programm) !! Prozessortyp und Frequenz müssen gegebenenfalls angepasst werden. Der Jumper J1 sollte während der Programmierung entfernt werden. Serielle (RS232 / USB) Schnittstelle Schnittstellenparameter: 19k2 8N1 Bei Verwendung der RS232 Schnittstelle muss bei Jumper JP8 und JP9 ist jeweils Pin1 und Pin2 überbrückt werden. Alternativ zur RS232 Schnittstelle kann die USB Platine UM2102 von ELV verwendet werden. Die USB Platine wird plan auf der Oberseite der Interfaces verlötet: der USB Stecker zeigt zum Rand. Die mittleren 4 pins des Verbinders ST2 sind mit dem 4 Anschlusspunkten JP7 auf dem Interface zu verbinden. USB Platine und Interface müssen voneinander isoliert werden. Die Stromversorgung erfolgt dann über USB. I2C Schnittstelle Die Default Adresse ist 1 für den Slave Mit dem Befehl &HFE03 kann die Adresse in n (1 … 127) geändert werden. Pullup Widerstände R3 / R4 müssen immer bestückt werden (1k - 10k). Mit JP2 kann festgelegt werden, ob der I2C Bus mit 3V oder 5V betrieben wird. Bei anderer I2C Spannung als 3V kann R5 / R6 angepasst werden. Wenn auf den 3V Betrieb völlig verzichtet werden soll, kann IC3 (PCA9517), R1, R2, R5, R6, JP2 entfallen und alternativ wird JP3 und JP4 bestückt. Der Gesamtwiderstand am I2C Bus sollte bei 1 bis 10 kOhm je nach Leitungslänge liegen Mit IC3 muss R1 / R2 (<=10k) am Slave bestückt werden. Wenn auf IC3 verzichtet wird und JP3 / JP4 verwendet wird,, muss berücksichtigt werden, dass R1 / R2 parallel zu R3 / R4 liegt. R1 / R2 kann also gegebenenfalls entfallen. SL1 und SL2 sind parallel geschaltet. Ein Anschluss kann zur Weitergabe des I2C Signals an das nächste Gerät verwendet werden. Um Buslocks zu vermeiden, wird circa alle 200ms geprüft, ob das SDA Signal auf „0“ liegt. Ist das 50 mal hintereinander der Fall, wird die I2C Schnittstelle neu gestartet (Slave). Browser Schnittstelle Es gibt einen (Windows) Webserver, an das Gerät angeschlossen wird. Die Bedienung erfolgt mit einem Browser, der auf den Webserver zugreift. Details dazu stehen in [7]. Ein Bildschirm Bild und nötige Daten für dieses Device stehen in [8]. SMD Die Leiterplatte ist teilweise mit SMD bestückt. Stromversorgung Die Stromversorgung ist 7- 15V, Stromaufnahme ca. 20mA max. Alternativ erfolgt die Stromversorgung über USB Bestückung der Leiterplatte Da die Leiterplatte auch für andere Anwendungen eingesetzt werden kann, brauchen nur folgende Bauteile bestückt werden: X1, D1, IC1, IC2, Q1, C1 – C5, C10, JP1 (muss für Normalbetrieb überbrückt werden), R3, R4. Verwendung von ISP: JP6 Mit I2C: Siehe I2C oben. Mit serieller Schnittstelle: Bei Verwendung der RS232 Schnittstelle wird IC2, IC4 und C6 – C9 bestückt. Alternativ dazu kann der USB Modul UM2102 verwendet werden. Dann darf IC2 nicht bestückt werden! X1, D1 und C1 braucht auch nicht bestückt werden. Anschlüsse Power Tip 12V Ring GND RS232 (Buchse) 5 GND 2 Jumper 3 Jumper I2C 1 GND 2 SCL 3 SDA Jumper JP1 Power JP2 I2C: 3V/5V Umschaltung JP3 SDA Überbrückung (ohne IC3) JP4 SCL Überbrückung (ohne IC3) JP5 Reset JP6 ISP JP7 Anschluss für USB Modul JP8/JP9 RS232 Umschaltung Versionen Diese Beschreibung gilt für die Leiterplattenversion V05.1 Bascom Version V07.0 für Master und Slave Copyright Die Ideen in diesem Dokument unterliegen der GPL (Gnu Public Licence V2) soweit keine früheren, anderen Rechte betroffen sind. Die Verwendung der Unterlagen erfolgt auf eigene Geafahr; es wird keinerlei Garantie übernommen. The ideas of this document can be used under GPL (Gnu Public License V2) as long as no earlier other rights are affected. The usage of this document is on own risk, there is no warranty. Referenzen [1] https://www.dk1ri.de/dhw/i2c_rs232_interface_eagle.zip [2] https://www.dk1ri.de/dhw/i2c_rs232_interface_bascom.zip [3] https://www.dk1ri.de/myc/MYC.pdf [4] https://dk1ri.de/myc/Description.txt oder https://dk1ri.de/myc/Description.pdf (englisch) [5] https://dk1ri.de/myc/Definitions.txt oder https://dk1ri.de/myc/Definitions.pdf (englisch) [6] https://dk1ri.de/dhw/common_1.13.zip [7] https://dk1ri.de/myc/webserver.pdf oder https://dk1ri.de/myc/webserver.txt [8] https://dk1ri.de/w_dat.htm