Forum: Mikrocontroller und Digitale Elektronik EA DIP203-4 an Raspberry Pi anhängen


von Papp N. (Gast)


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?

von spess53 (Gast)


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

von Papp N. (Gast)


Lesenswert?

Ja sorry, dass hätte ich auch schreiben müssen - ich hab natürlich auch 
an VEE mit Hilfe eines Potis und eines Kondensators verbunden, wie auf 
dem Bild zu sehen.

von NurEinGast (Gast)


Lesenswert?

>  was kann ich falsch gemacht haben?

Wie spess53 schon schrieb :
    Und was ist mit dem Rest der Initialisierung

Ich habe mal vor Urzeiten einen SPI Treiber für Ethernut für dieses 
Display gemacht. Ist zwar nicht für den Rasp-Pi, abere die 
Initialisierungssequenz solltes du dir da raus klauen können.

http://www.tklinux.de/ks0073.html

von spess53 (Gast)


Lesenswert?

Hi

>abere die
>Initialisierungssequenz solltes du dir da raus klauen können.

>http://www.tklinux.de/ks0073.html

Das Display hat aber einen SSD1803 Controller.

MfG Spess

von Papp N. (Gast)


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>>

von spess53 (Gast)


Lesenswert?

Hi

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

Dann sieh dir mal das Datenblatt vom SSD1803 an. Das ganze ist etwas 
komplizierter als du dir das vorstellst.

MfG Spess

von NurEinGast (Gast)


Lesenswert?

Ups - sorry

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

von spess53 (Gast)


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

von Papp N. (Gast)


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.

von Ich selber (Gast)


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ß

von spess53 (Gast)


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

von Papp N. (Gast)


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])

von spess53 (Gast)


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

von lick auf Beitrag (Gast)


Lesenswert?

hab' jetzt nicht alles im Detail gelesen.

Bist Du Dir sicher, dass Dein
spi.xfer auch den SPI Chip Select bedient?

von Papp N. (Gast)


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.

von Draco (Gast)


Lesenswert?

Ich würde ja mal ganz einfach die Miso und Mosi Leitung tauschen ;)

Also:

MISO <--> SID
MOSI <--> SOD

SPI verhält sich nicht wie UART wo RX<->TX und TX<->RX ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.