Baugruppen Aktoren /Sensoren
 
 

 

 

           Grafik-TouchDisplay EA eDIP240

 

 
.. Datenblätter .. SPI-Schnittstelle

 

 

 
 
 
 
 
SPI -Schnittstelle
Die Anzeige verfügt über eine SPI-Schnittstelle. Diese wird durch ein 0-Signal an Pin 11, SPImode ausgewählt, also indem dieser Pin an GND gelegt wird. An der SPI-Schnittstelle ist eine dauerhafte Datenübertragung mit 200 kHz zum eDIP möglich. Wird nach den 8Bits eines übertragen Bytes eine Pause von 100µs eingelegt, so sind für Bytes Übertragungsfrequenzen bis 3MHz möglich.
 
 


Daten lesen
Um Daten vom eDIP zu lesen (z.B. das ACK-Signal) muss ein Dummybyte (z.B.0xFF) gesendet werden. Das eDIP benötigt Zeit um Daten bereitstellen zu können. Deshalb muss vor jedem zu lesenden Byte mindestens 6µs gewartet werden (keine Aktivität auf der CLK-Leitung)

Einstellung des SPI-Übertragungsmodus

DORD (Data Order)
Es kann bestimmt werden, ob das Most Signifikant Bit (MSB) eines Bytes, also das höchste Bit, oder das Least Signifikant Bit (LSB) das niedrigste Bit als erstes gesendet werden soll. Diese Einstellung orientiert sich an den Einstellungsmöglichkeiten der Gegenstelle.

CPOL (Clock Polarity)
Hier wird vorgegeben, in welchem Zustand, Low (0) oder High (1), das Taktsignal des Masters seinen Ruhezustand besitzt.

CPHA (Clock Phase)
Die Taktphasen werden nach erster Flanke und zweiter Flanke unterschieden, nicht nach steigender oder fallener Flanke. Ob beispielsweise die erste Flanke steigt oder fällt, ist von dem Ruhezustand des Taktes abhängig. Bei welcher Flanke die Daten auf einer der Datenleitungen gelesen werden sollen, kann hier entschieden werden.

 

Reset
Das EAeDIP240 TouchDisplay ist letztlich ein Steuercomputer mit 32kByte internem Speicher. Dieser verfügt über einen Rücksetzteingang (Reset). Wird dieser Anschluss auf GND gezogen, so wird der Steuerrechner der Anzeige zurückgesetzt. Ein RESET wird auch automatisch beim Einschalten der Anzeige durchgeführt (PowerOnReset)

DPOM
Wird dieser Pin an GND gelegt, so wird das PowerOnMakro beim Start der Anzeige unterdrückt. Dies ist sinnvoll, wenn das PowerOnMakro im Verlauf der Entwicklung falsch programmiert wurde, so dass es sich in einer Endlosschleife 'aufhängt' und die Anzeige damit nicht mehr reagiert. Im Normalbetrieb hat dieser Pin keine Bedeutung.

Test
Wird dieser Pin an GND angeschlossen, so stehen fest abgelegte interne Demo- Makros zum Betrieb der Anzeige bereit. Dies ist für den Normalberieb nicht interessant.
Wird der Pin als Ausgabepin (für IRQs) benutzt, so zeigt ein Low-Signal an, dass im internen Sendebebuffer der Anzeige Daten bereitstehen.

 
 
 
 

Problembeschreibung.
Datenpakete (Small Protokoll formatiert) können ohne Problem über die MOSI Leitung vom MCU (Master) zum Display (Slave) übertragen werden, vor dem ersten Byte muss das "SS" Signal von 1 auf 0 gesetzt werden, nach dem letzten Byte von 0 auf 1 (ein Absetzen des Signals zwischen den Bytes ist - wie im SPI Protokoll üblich - nicht nötig).

Wenn nach dem letzten Byte eines Pakets das "ACK" Byte vom Display abgeholt werden soll, sollte es gemäss üblicher SPI Praxis reichen (noch während das SS Signal auf 0 steht) ein Leerzeichen zu senden und damit die SCL Taktleitung für die Dauer eines weiteren Bytes mit SCL Taktimpulsen zu belegen; damit wird das ACK (NAK) Byte über die MISO Leitung vom Slave zum Master zu geschoben und kann dann dort gelesen werden. Das funktioniert aber im eDIP so nicht: der Master erhält nicht - wie erwartet - ein ACK oder NAK, sondern das Echo des letzten gesendeten Datenbytes (im allgemeinen ist dies das BCC Byte).

Dieses Problem kann folgender Weise umgangen werden: vor dem Senden des Leerzeichens (Belegen der SCL Leitung mit Takten zum Transfer der ACK Antwort) ist das "SS" Signal für mindestens 10 usec (empirisch gefunden) auf 1 und dann wieder auf 0 zu setzen. Danach legt das eDIP korrekt das ACK Byte auf die MISO Leitung und es wird korrekt übertragen.

Neben dem Problem dieser nicht dokumentierten Anforderung hat dieser Sachverhalt auch eine schwerwiegende Folge auf den möglichen Durchsatz beim Abholen von Daten vom Display - bei 100 KHz Taktrate wird er auf die Hälfte des theoretisch möglichen Durchsatzes reduziert. Dieses Problem ist besonders schwerwiegend, wenn Datenpakete (z.B. nach einem Touchpanel Hit) vom Speicher des Displays zum Master geholt werden sollen: vor jedem einzelenen Byte muss "SS" für ca. 10 µsec auf 1 und dann wieder auf 0 gesetzt werden.

Zusätzliche Frage: ich habe die minimal erforderliche Dauer des Signals auf der SS Leitung wurde empirisch mit 10 µsec angenommen - kann dieser Wert von Ihnen in der Spezifikation des eDIP klar definiert werden ? (auch bei Interrupt getriebenem Betrieb mit ca. 100 KHz Taktrate leicht zu implementieren durch Senden eines zusätzlichen Leerzeichens während die SS Leitung auf 1 liegt).

Meine Testumgebung: MCU = AT90CAN128, Taktrate = 62.5 KHz, Problem unabhängig vom verwendeten SPI Modus.

J. Harms
Universität Genf
 
 

 
www..de