EA DIP203-4 an Raspberry Pi anhängen

Gast #4197118
Lesenswert?

Hi Leuts,

ich habe einen Raspberry Pi B+ und ein vierzeiliges LCD-Modul mit der 
Bezeichnung EA DIP203-4.

Hier sind Links zu den Datenblättern des LCD-Moduls
http://www.lcd-module.de/fileadmin/pdf/doma/dip203-4.pdf
http://www.lcd-module.de/fileadmin/eng/pdf/zubehoer/ssd1803_2_0.pdf

Ich möchte das Modul via SPI mit dem Raspberry PI verbinden. Auf der 
Rückseite des LCD-Bausteins ist eine Lötbrücke für SPI, die habe ich 
geschlossen.

SPI hat vier Datenleitungen. Auf dem Raspi heissen sie CS, SCL, MISO und 
MOSI. Auf dem EA Dip... sind die Bezeichnungen ein bißchen anders - 
SCLK, CS, SOD und SID.

Ich habe sie jetzt so verbunden

CS ------> CS
SCL -----> SCLK
MOSI ----> SID
MISO <---- SOD

Dann noch VCC an 3,3V vom Rasp., GND an GND Rasp.

Ich hab jetzt ein kleines Python-Programm geschrieben, um das 
anzusteuern, aber es klappte nicht. Das Python-Programm sieht so aus:

<c>
import spidev

spi = spidef.SpiDev()
spi.open(0,0)

spi.xfer2([0x0F])

spi.close()

</C>


Die Sequenz 0x0F steht für: Display ein, Cursor ein, Cursor blinken

Leider funktioniert nichts, was kann ich falsch gemacht haben?
Gast #4197127
Lesenswert?

Hi

>Die Sequenz 0x0F steht für: Display ein, Cursor ein, Cursor blinken

>Leider funktioniert nichts, was kann ich falsch gemacht haben?

Und was ist mit dem Rest der Initialisierung (Datenblatt S.3)?

MfG Spess
Gast #4197194
Lesenswert?

Ok, danke für die Infos - aber der Rest ist dann schon mal richtig, dass 
ich MOSI mit SID verbunden hab und MISO mit SID?

Und die Startsequenz wäre dann das hier alles hintereinander gesendet:

<<c>>
...
spi.xfer2([0x34)]
sleep(0.001)
spi.xfer2([0x09)]
sleep(0.001)
spi.xfer2([0x30)]
sleep(0.001)
spi.xfer2([0x0F)]
sleep(0.001)
spi.xfer2([0x01)]
sleep(0.001)
spi.xfer2([0x06)]
...
<</c>>
Gast #4197391
Lesenswert?

Hi

>Ups - sorry

>habe das EA DIP203-4  mit dem EA DIP204-4 verwechselt.

Ich habe mal auf die Schnelle die Datenblätter des KS0073 und des 
SSD1803 verglichen. Die scheinen mindestens ähnlich, wenn nicht gar 
mehr, gestrickt zu sein.

MfG Spess
Gast #4197585
Lesenswert?

spess53 schrieb:
> Dann sieh dir mal das Datenblatt vom SSD1803 an. Das ganze ist etwas
> komplizierter als du dir das vorstellst.
>
> MfG Spess

Ich weis einfach nicht, wo ich da schauen soll in dem Datenblatt des 
SSD1803.

Die Hauptfrage, die mich grade beschäftigt ist die, ob ich es denn 
überhaupt richtig an den Raspberry Pi angeschlossen habe und ob ich so 
gleich über SPI anfangen kann, Sequenzen zu verschicken.

Ich hab auch noch nicht mal im Datenblatt gefunden, mit welcher 
Übertragungsrate man via SPI Daten senden kann. Es steht dort auch 
nichts explizit für SPI, sondern irgendwie immer für 8bit oder 
4bit-Modus und ich weis garnicht, wie ich da überhaupt starten soll.
Gast #4197590
Lesenswert?

Hallo meine , allgemeine Empfehlung:

Gönne dir mal einen Logic Analyser, etwa ZeroPlus Logicube, o.ä.
Damit kann besser die Grundsätzlichen Dinge klären:

 - sende ich auf dem Bus etwas
 - was dachte ich gesendet zu haben -> was habe ich gesendet

Gruß
Gast #4197603
Lesenswert?

Hi

>Ich weis einfach nicht, wo ich da schauen soll in dem Datenblatt des
>SSD1803.

Wie wäre es mit

INTERFACE WITH MPU IN SERIAL MODE

ab S.26?

>Gönne dir mal einen Logic Analyser, etwa ZeroPlus Logicube, o.ä.
>Damit kann besser die Grundsätzlichen Dinge klären:

Der erklärt aber niemand das Datenblatt.

MfG Spess
Gast #4198374
Lesenswert?

spess53 schrieb:
> ab S.26?

Ja, hab mal auf Seite 26 geschaut. Ich hab sogar auch mal eine Seite 
weiter geschaut, auf Seite 27. Ich habe es leider noch garnicht 
sonderlich gut verstanden. In "Figure 7-11 Timing Diagram of Serial Data 
Transfer" auf Seite 27 ist zu sehen, dass eine Kommunikation mit 
3*8bit-Dingern stattfinden tut.

Ich will jetzt z.B. den Befehl "Display ON" an mein Display senden. Der 
HexCode dafür beträgt 0x0F oder in Bitschreibweise 00001111.

In dem Bild auf Seite 27 ist von drei 8-Bit-Sequenzen die Rede. Das 
erste heisst Initbit, dann kommt LowerDataSequenz, dann 
UpperDataSequenz.  Bei den Upper-Lower-Sequenzen sind die letzten 4bit 
immer Null. Nehm ich jetzt als Upper/Lower einfach die vier Bits von 
meinem HexCode?

Ich würde es jetzt so hinsenden:

Initsequenz       = 1111 1010
LowerDataSequenz  = 1111 0000
UpperDataSequenz  = 0000 0000

Ist das so richtig vom Aufbau her?

Und als Python-Befehl würde ich dann das hier machen?
1
spi.xfer2([0b11111010, 0b11110000, 0b00000000])
Gast #4198403
Lesenswert?

Hi

>Ist das so richtig vom Aufbau her?

Nicht ganz. Dein RS-Bit muss für Befehle 0 sein.

>Und als Python-Befehl würde ich dann das hier machen?
>spi.xfer2([0b11111010, 0b11110000, 0b00000000])

Wie erfolgt die Steuerung der CS-Leitung?

MfG Spess
Gast #4198878
Lesenswert?

Die CS-Leitung wird "automatisch" gesetzt, ich habe zwei CS-Leitungen 
auf dem Raspberry PI (CE0, CE1) und beim Öffnen des SPI-Ports gibt es 
den Befehl

spi.open (0,0). Dabei steht die erste Ziffer für die SPI-Schnittstelle 
und die zweite für den dazugehörigen Chipselect-Port. Wird spi.xfer2 
ausgeführt, dann wird CS0 oder CS1 automatisch vorher von HIGH auf LOW 
gesetzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren