de:netzer:spi-master

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:spi-master [2012/02/17 08:19] – Escape-Zeichen ergänzt. sveschde:netzer:spi-master [2025/06/11 20:42] (current) – external edit 127.0.0.1
Line 56: Line 56:
 Sobald eine [[de:netzer:connection|Verbindung]] aufgebaut ist, kann der SPI Master verwendet werden. Alle vom TCP Client empfangenen Zeichen bis auf den Backslash '\' (Escape) werden durch den Netzer transparent an das SPI Master Modul durchgeleitet. Escaped Zeichen, die von der jeweiligen Firmwareversion nicht unterstützt werden, werden ebenfalls transparent durchgeleitet. Für eine vollständige Auflistung der unterstützten Escape-Sequenzen siehe weiter unter. Der 256 Byte große Ringpuffer auf Netzerseite puffert größere Datenbursts.  Sobald eine [[de:netzer:connection|Verbindung]] aufgebaut ist, kann der SPI Master verwendet werden. Alle vom TCP Client empfangenen Zeichen bis auf den Backslash '\' (Escape) werden durch den Netzer transparent an das SPI Master Modul durchgeleitet. Escaped Zeichen, die von der jeweiligen Firmwareversion nicht unterstützt werden, werden ebenfalls transparent durchgeleitet. Für eine vollständige Auflistung der unterstützten Escape-Sequenzen siehe weiter unter. Der 256 Byte große Ringpuffer auf Netzerseite puffert größere Datenbursts. 
  
-Das SPI Master Modul generiert für jedes Byte 8 Takte an SPI_CLK und schiebt das Datum an SPI_MO hinaus. Zeitgleich liefert der Slave im Takt des Masters Daten an SPI_MI (siehe Grafik oben). Das so empfangene Byte wird automatisch an den TCP Client gesendet. +Das SPI Master Modul generiert für jedes Byte 8 Takte an SPI_CLK und schiebt das Datum an SPI_MO hinaus. Zeitgleich liefert der Slave im Takt des Masters Daten an SPI_MI (siehe Grafik oben). Das so empfangene Byte wird automatisch an den TCP Client gesendet. In diese Richtung wird kein Escaping verwendet.
  
  
Line 66: Line 66:
  
 SPI_CS dient der Selektierung und Synchronisierung des Slaves - sobald Daten übertragen werden, setzt der Netzer diese Leitung automatisch auf 0. Das Zurücksetzen auf 1 erfolgt durch eine spezielle Escapesequenz (0x5C 0x00). SPI_CS dient der Selektierung und Synchronisierung des Slaves - sobald Daten übertragen werden, setzt der Netzer diese Leitung automatisch auf 0. Das Zurücksetzen auf 1 erfolgt durch eine spezielle Escapesequenz (0x5C 0x00).
 +
 +Alle anderen GPIO-Pins des Netzers sind wie gewohnt frei verwendbar und z.B. über das Webinterface bzw. den [[gpioserver|GPIO-Server]] steuerbar.
  
 Unterstützte Escape-Sequenzen in der Basisversion: Unterstützte Escape-Sequenzen in der Basisversion:
Line 74: Line 76:
  
  
 +===== Firmware Proversion =====
 +
 +{{:spi_master_pro.gif?nolink& |Netzer als SPI-Master in der Proversion}}
 +
 +Im Unterschied zur Basisversion nutzt die Proversion keine dedizierte ChipSelect-Leitung sondern bietet über spezielle Escapesequenzen Zugriff auf alle Netzer-Pins, die als digitale Ausgänge konfiguriert sind. Damit können nicht nur bis zu 10 verschiedene SPI-Slaves selektiert werden. Es können damit auch spezielle Steuerpins bedient werden, die bei speziellen SPI Bausteinen benötigt werden.
 +
 +Alle GPIO-Pins (bis auf SPI_CLK, SPI_MO und SPI_MI) des Netzers sind auch frei verwendbar und z.B. über das Webinterface bzw. den [[gpioserver|GPIO-Server]] steuerbar.
 +
 +Weiterhin kann der SPI-Mode dynamisch umkonfiguriert werden. Ferner können Wartezeiten eingefügt werden, um z.B. bestimmte Setup/Hold-Zeiten von Slaves zu erreichen.
 +
 +Um den Netzer nicht zu lang zu blockieren, werden alle empfangenen Escape-Sequenzen sequentiell bearbeitet. D.h. zwischen der Verarbeitung von Escape-Sequenzen entstehen mehr oder weniger große Pausen, was zu leichten Jitter von Kontrollsequenzen führen kann. Um feste Zeiten zwischen Signalwechseln zu erreichen, sollten dafür die Escapesequenzen für Wartezeiten verwendet werden.
 +
 +Unterstützte Escape-Sequenzen in der Proversion:
 +
 +^ Sequenz (in ASCII) ^ Sequenz (in hex) ^ Bedeutung ^ Ab Firmware-Version ^
 +| 0 | 0x30 | SPI-Mode 0 wird aktiviert. | 1.5 |
 +| 1 | 0x31 | SPI-Mode 1 wird aktiviert. | 1.5 |
 +| 2 | 0x32 | SPI-Mode 2 wird aktiviert. | 1.5 |
 +| 3 | 0x33 | SPI-Mode 3 wird aktiviert. | 1.5 |
 +| a | 0x61 | Setze Pin IO0 auf 0. | 1.4 |
 +| b | 0x62 | Setze Pin IO1 auf 0. | 1.4 |
 +| c | 0x63 | Setze Pin IO2 auf 0. | 1.4 |
 +| d | 0x64 | Setze Pin IO3 auf 0. | 1.4 |
 +| e | 0x65 | Setze Pin IO4 auf 0. | 1.4 |
 +| f | 0x66 | Setze Pin IO5 auf 0. | 1.4 |
 +| g | 0x67 | Setze Pin TX auf 0. | 1.4 |
 +| h | 0x68 | Setze Pin RX auf 0. | 1.4 |
 +| i | 0x69 | Setze Pin SPI_CS auf 0. | 1.4 |
 +| j | 0x6A | Setze Pin SPI_INT auf 0. | 1.4 |
 +| A | 0x41 | Setze Pin IO0 auf 1. | 1.4 |
 +| B | 0x42 | Setze Pin IO1 auf 1. | 1.4 |
 +| C | 0x43 | Setze Pin IO2 auf 1. | 1.4 |
 +| D | 0x44 | Setze Pin IO3 auf 1. | 1.4 |
 +| E | 0x45 | Setze Pin IO4 auf 1. | 1.4 |
 +| F | 0x46 | Setze Pin IO5 auf 1. | 1.4 |
 +| G | 0x47 | Setze Pin TX auf 1. | 1.4 |
 +| H | 0x48 | Setze Pin RX auf 1. | 1.4 |
 +| I | 0x49 | Setze Pin SPI_CS auf 1. | 1.4 |
 +| J | 0x4A | Setze Pin SPI_INT auf 1. | 1.4 |
 +| t | 0x74 | Warte 100\ µs bis zur Verarbeitung des nächsten Zeichens. | 1.5 |
 +| T | 0x54 | Warte 1\ ms bis zur Verarbeitung des nächsten Zeichens. | 1.5 |
 +| Alle anderen || Zeichen wird transparent durchgereicht. | 1.5 |