de:netzer:s88

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
de:netzer:s88 [2014/01/04 12:41] – [Allgemein] IO_base und IO_pro Bedingung sveschde:netzer:s88 [2025/06/11 20:42] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Auslesen des S88 Busses vom Ethernet ======
  
 +===== Allgemein =====
 +
 +<note important>Für die Funktionalität muss das **[[io_project|IO Projekt]]** (base oder pro) auf den Netzer [[fwupdates|geladen]] werden.</note> 
 +
 +Der S88 ist ein Rückmeldebus für Modellbahnsysteme. 
 +
 +Bis zu 32 verteilte Teilnehmer hintereinander geschaltet bilden ein zusammenhängendes Register, in das zyklisch Werte geladen werden. Diese (binären) Werte kommen von Schaltern, Gleis-Rückmeldern u.ä. Dingen, die rund um die Anlage verteilt sind.
 +
 +Nachdem alle diese Werte einmal in das Register geladen wurden, wird nun der Inhalt sukzessive mit einem Takt in Richtung Zentrale geschoben (Bit für Bit) und dort zwischengespeichert und weiterverarbeitet.
 +
 +Der S88-Bus besteht ingesamt aus 3 Steuerleitungen, **CLOCK**, **LOAD** und **RESET** und einer Datenleitung, **DATA**.
 +
 +Mehr Details zum S88-Bus findet sich bei [[http://www.digital-bahn.de/info_tech/s88.htm|Sven Brandt]] und bei [[http://www.der-moba.de/index.php/S88-R%C3%BCckmeldebus|Der MoBa]].
 +
 +
 +===== Netzer als Zentrale =====
 +
 +Aufgrund der Flexibilität des Netzers ist es sehr einfach möglich einen S88-Strang mit dem Netzer auszulesen. Zur Anwendung kommt der [[serialserver|serielle Server]] im SPI Master Modus. Neben dem Bus wird die Möglichkeit genutzt, dass IO-Pins direkt mit Escape-Sequenzen angesprochen werden können.
 +
 +==== Hardware ====
 +
 +{{ :s88.gif?nolink& |S88 Zusatzschaltung}}
 +
 +Das Bild zeigt eine Schaltung für die Netzer [[playground|Spielfeld]] S88-Erweiterungsplatine. Die Komponenten sind Standardkomponenten, die auch schnell auf einer Lochrasterplatine aufgebaut werden können.
 +
 +Die Schaltung ist schnell erklärt. Da die Betriebsspannung des Netzers +3,3V beträgt, der S88-Bus jedoch im Normalfall mit +5V arbeitet, werden Bustreiber (**IC1**) zwischen die drei Steuerleitungen S88_RESET, S88_LOAD und S88_CLOCK geschaltet. Da die Tristate-Funktion der Bustreiber nicht benötigt wird, werden sie einfach immer eingeschaltet (EN=GND). C1 dient der Abblockung. +5V wird vom [[playground|Netzer Spielfeld]] zur Verfügung gestellt.
 +
 +J1 bietet eine Anschlusstelle nach dem herkömmlichen Verdrahtungsmuster für S88. JP1 ist eine RJ45-Buchse nach dem neuen Verdrahtungsstandard [[http://www.s88-n.eu|S88N]]
 +
 +Nach dem S88-Verdrahtungsstandard S88N ist für die Versorgungsspannung alternativ zu +5V auch eine +12V zulässig, falls das die Module am Bus unterstützen. Für das Umschalten der Versorgungsspannung per Jumper dient **JP2**. VCC_AUX ist die primäre Versorgungsspannung vom Netzer Spielfeld und sollte entsprechend auf +12V geregelt werden.
 +
 +Pin 8 des S88N-Standards ist für das Gleissignal gedacht. Testweise wird hier der SPI-Datenausgang noch über den Bustreiber an diesen Pin gelegt, um ggf. auch Steueraufgaben übernehmen zu können (falls JP3 gejumpert ist).
 +
 +Die Datenleitung des Busses S88_DATA wird direkt an den Netzer angeschlossen, da der SPI-Dateneingang +5V-tolerant ist. Die Suppressor-Diode D1 dient dem zusätzlichen Schutz des Eingangs.
 +
 +<WRAP center round info 60%>
 +Für die weitere Dokumentation wird angenommen, dass LOAD an SPI_INT und RESET an SPI_CS angeschlossen ist.
 +</WRAP>
 +
 +{{ :gallery:s88_test.jpg?nolink& |}}
 +
 +==== Einstellungen Netzer Webinterface ====
 +
 +Der Netzer mit installierter **Pro**-Version (min. Release 1.5) muss zuvor über das Webinterface konfiguriert werden:
 +  - SPI-Master-Mode auf der Allgemein-Seite aktivieren (Danach Neustart nicht vergessen!) 
 +  - SPI-Master-Einstellungen: Frequenz auf 5 kHz (bei langen Leitungen ggf. auf 1,3 kHz), SPI-Modus 2 (Ruhepegel des SPI-Taktes ist 1, Übernahme der Daten erfolgt bei fallender Flanke) Abtasten in der Mitte der Taktperiode (siehe Bild).\\ {{s88_spisettings.gif?nolink&|SPI Einstellungen}} \\ \\ 
 +  - GPIO-Einstellungen: In diesem Beispiel wird SPI_INT sowie SPI_CS benötigt, demnach als digitale Ausgänge konfigurieren! {{s88_gpio.gif?nolink&|GPIO Einstellungen}}
 +==== Herstellen der Verbindung ====
 +
 +Für einen Verbindungstest unter Windows sollte ein Terminalprogramm verwendet werden, mit dem Bytes in Hexadezimal- oder Binärdarstellung versendet oder empfangen werden können wie z.B. das [[http://www.der-hammer.info/terminal|Hammer-Terminal]]). Die eigentliche [[connection|Netzwerkverbindung]] wird mit **com2tcp** aufgebaut.
 +Unter Linux kann auch ganz einfach **netcat** verwendet werden.
 +
 +
 +==== Beispielprotokoll ====
 +Für das Generieren der Steuersignale wird die folgende Sequenz benutzt:
 +^ # ^ ASCII-Notation ^ Hexadezimal-Notation ^ Erläuterung ^
 +| 1 | \1 | 0x5C 0x31 | Umstellen des SPI-Modes auf 1. CLOCK wechselt von 1 auf 0. |
 +| 2 | \J | 0x5C 0x4A | LOAD (am INT-Pin) wird gesetzt. |
 +| 3 | \t | 0x5C 0x74 | Warte mindestens 100 µs (Ruhe). |
 +| 4 | \2 | 0x5C 0x32 | Schalte SPI-Mode auf 2 zurück. CLOCK wechselt von 0 auf 1. Damit werden durch das anliegende LOAD-Signal die Rückmeldesignale entlang des Busses in die Register übernommen. |
 +| 5 | \I | 0x5C 0x49 | Aktiviere RESET (am CS-Pin) von 0 auf 1. Damit werden eventuell vorhandene Latches zurückgesetzt. |
 +| 6 | \i | 0x5C 0x69 | Schalte RESET von 1 auf 0 zurück. |
 +| 7 | \j | 0x5C 0x74 | Schalte LOAD von 1 auf 0 zurück. Nun ist der S88 vorbereitet, um die Daten bitweise zum Netzer zu schieben. |
 +| 8... | a | 0x61 | Nun können beliebige viele Daten übertragen werden (sinnvollerweise nur soviel wie S88-Module am Strang hängen - Module mit 16 Eingängen zählen natürlich doppelt). Jedes Byte (**ohne** Fluchtsequenz) bewirkt ein Schieben des Busses um 8 Bit (normaler SPI-Modus). Gleichzeitig werden die Daten von der Leitung MI übernommen und über das Socket versendet.|
 +
 +Und so sieht es dann aus (Oben ist der Takt, unten LOAD - das Timing des ersten Bytes):
 +{{ :gallery:s88_oszi.jpg?nolink& |Erstes S88 Oszi}}
 +
 +===== PC-Software =====
 +
 +Kommt bald...