DOGM204 per SPI Ansteuern

OP #7295205
Lesenswert?

Hallo zusammen

Ich habe Probleme beim ansteuern eines DOGM204 Displays von Display 
Vision über die SPI Schnittstelle.
Ich habe im Angang mein Schema und meinen Beispielcode abgelegt.

Ich habe bereits ein paar Dinge ausprobiert:

Ich habe das Display bereits über die parallele Schnittstelle getestet 
und das hat ohne grosse Probleme funktioniert.

Jedoch habe ich bisher noch kein Erfolg mit der SPI-Schnittstelle.

Den Reset den man am Anfang durchgführen soll habe ich bereits mit 
meinem Oszi angeschaut und dieser schaut genau so aus wie es im 
Datenblatt angegeben ist.
Den Booster bekomme ich leider nicht zum laufen auf den Ausgängen (VOUT 
- V4) messe ich nur 2.6V oder weniger jeweils.
Ich habe den Booster bereits einmal extern gespiesen (12V mit 
wiederständen dazwischen) und das Display hat dann einfach nur schwarze 
Felder angezeigt.

Bei der Initialisierung bin ich einfach dem Datenblatt gefolgt aber und 
habe die übertragenen Signale auch bereits einmal mit dem Oszi 
angeschaut und habe dabei auch nichts verdächtiges festgestellt.

Ich bin noch relativ unerfahren in diesem Gebiet.

Falls also Jemand der ähnliche Probleme wie ich bereits schon einmal 
gehabt hat wäre ich um ein bischen Hilfe sehr Froh.

Freundliche Grüsse Holerra
Angehängte Dateien:
Gast #7295225
Lesenswert?

1
  DDRB |= (1 << CIPO) | (1 << COPI) | (1 << CLK) | (1 << CS);

Ich empfehle dir dringend die üblichen Bezeichnungen MOSI und
MISO zu verwenden. Der MISO Pin darf nicht auf Ausgang gesetzt
werden sonst gibt es einen Bus-Kampf.

1
  upperData &= 0xf0;
2
  lowerData &= 0x0f;
3
  upperData |= (upperData >> 4);
4
  upperData &= (0x0f);

Soviel ich weiss (ich habe das Datenblatt nicht studiert) werden
im 4-Bit Mode die Daten immer in den oberen 4 Bits gesendet bzw.
abgeholt. Bei dir sind es die vier unteren.

Es empfiehlt sich auch dringend den Port C mit Spannung zu
versorgen. Dazu muss AVcc angeschlossen werden, und ein Abblock-
Kondensator dazu.
Gast #7295246
Lesenswert?

1
void SPIsendInit(char datas)
2
{
3
  SPDR = datas;
4
  while(!(SPSR & (1 << SPIF)));
5
  _delay_ms(15);
6
}

Auch bei der Initialisierung wirst du vermutlich zusätzlich
das Synchronisations-Byte senden müssen sonst weiss das SPI
nicht wann es los geht.
#7295270
Lesenswert?

uff basse schrieb:
> DDRB |= (1 << CIPO) | (1 << COPI) | (1 << CLK) | (1 << CS);
>
> Ich empfehle dir dringend die üblichen Bezeichnungen MOSI und
> MISO zu verwenden.

Ja ne, der TO ist auf der Höhe der Zeit.

Nur sind sie sich nicht ganz einig.
https://www.heise.de/select/make/2020/4/2014805250724798204
https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/

Man darf sich nur noch wundern ...
Beitrag #7295276 wurde von einem Moderator gelöscht.
#7295364
Lesenswert?

Falk B. schrieb:
> Veit D. schrieb:
>> Man darf sich nur noch wundern ...
>
> Nein, man wünscht sich eine Katastrophe biblischen Ausmaßes, damit der
> Spuk der Luxusprobleme aufhört. Kein Scherz!

Das der Spuk bald aufhören sollte ist wohl jeden klar. Aber wenn Politik 
in Sport und Technik vorgedrungen ist, weiß ich nicht wer das noch 
aufhalten soll. Wenn selbst die fürchterliche Gendersprache in 
wissenschaftlichen Abhandlungen Einzug gehalten hat, sodass man das 
nicht mehr lesen kann was man vorher schon schwer lesen konnte, dann 
hört mein Verständnis für vieles auch langsam auf. Gekrönt vom Indianer 
Kinderbücher "Verbot". Tja und dann sind noch die Kaoten der neuen 
Klimaklebergeneration, die nur zerstören wollen statt irgendwas retten. 
Alles Leute ohne Sinn und Verstand. Ich schweife ab ...

@ TO:
Übersehe ich was oder schaltest du die CS Leitung nicht?
Ansonsten hast du auf der Seite des Herstellers alle Dokumentationen.
Zum Bsp. Code Bsp.
https://www.lcd-module.de/support/application-note.html
OP #7295373
Lesenswert?

Danke Vielmals für alle Komentare.
Ich werde die Vorschläge einmal testen und falls es nicht funktioniert 
werde ich wohl noch etwas weitersuchen müssen.

Danke nochmal für den Tipp mit dem AVcc das habe ich garnicht gewusst.

Die Bezeichnungen für die Serielle Schnittstelle habe ich halt so 
beigebracht bekommen (Controller out Peripheral in usw.).

Das mit dem Startbit auch für die Init. werde ich auch mal austesten, 
ist möglicherweise genau das richtige.

Freundlliche Grüsse Holerra
#7295429
Lesenswert?

uff basse schrieb:
> Veit D. schrieb:
>> Übersehe ich was oder schaltest du die CS Leitung nicht?
>
> Der TO verwendet offensichtlich einen 2-Wire SPI Mode bei
> dem es keinen CS braucht. Datenblatt lesen hilft!
> Auch mein Beitrag sollte dich hellhörig werden sollen:
>
> uff basse schrieb:
>> zusätzlich das Synchronisations-Byte

So ganz klar ist das leider nicht. Laut Datenblatt gibts viele 
Anschlussmöglichkeiten und im Code gibt es eine CS-Pin Initialisierung 
die im Schaltplan nicht angeschlossen ist. Ist das gewollt oder nicht 
gewollt. Wurde das vergessen oder nicht. Ich weiß es nicht. Der TO müßte 
klar aussagen wie er es anschließen möchte, dann können wir prüfen ob 
das so wie gedacht richtig ist. Umgekehrt funktioniert das nicht so 
richtig.
Gast #7295487
Lesenswert?

uff basse schrieb:
> Mit deinem Kenntnisstand dürfte es klar
> sein dass ein 3-Wire SPI auch ein 2-Wire SPI sein kann.

SPI müsste eher drei- oder vierdraht sein, ChipSelect, um das Ziel 
überhaupt zu aktivieren.

Ich sehe gerade:
Veit D. schrieb:
> im Code gibt es eine CS-Pin Initialisierung
> die im Schaltplan nicht angeschlossen ist.

Den vermisse ich am Display. Aber wenn es sein einziges SPI-Gerät ist, 
sollte der offene CS nich stören, geht ja nur vorwärts vom µC zum Gerät. 
Ich hoffe nicht, dass die Software auf CS eine Antwort erwartet.
Gast #7295489
Lesenswert?

Manfred schrieb:
> SPI müsste eher drei- oder vierdraht sein, ChipSelect, um das Ziel
> überhaupt zu aktivieren.

Manfred schrieb:
> Aber wenn es sein einziges SPI-Gerät ist,
> sollte der offene CS nich stören

Du hast offensichtlich von SPI noch sehr wenig Ahnung. Vor
allem keine Ahnung was alles geht. Lies das Datenblatt bevor
du hier soviel Mist bzw. Falschwissen verbreitest.
#7295510
Lesenswert?

Hallo,

@ uff basse
An Deiner Stelle wäre ich nicht so vorlaut. Es gibt kein "2 Wire SPI". 
Das geht sogar aus dem Display Datenblatt hervor. Entweder I2C mit 2 
Leitungen oder SPI mit 3 oder 4 Leitungen. Eine andere Option gibts 
nicht.

@ TO:
Nach nochmaliger Betrachtung deines Schaltplanes muss ich sagen das da 
nichts stimmt. Weder als SPI oder noch als I2C Beschaltung. Bitte 
nochmal darüber nachdenken was es wie werden soll.
Gast #7295526
Lesenswert?

Ja, schon klar. Der Bericht des TO dass es jetzt funktioniert
bestätigt dass ein 2-Wire SPI nicht funktioniert.

Wie blöd muss man sein um darauf zu insistieren ....
Vielleicht doch die geringfügig übriggebliebene Bio-Masse
zwischen den Ohren mal aktivieren ....
Gast #7295534
Lesenswert?

Veit D. schrieb:
> @ uff basse
> An Deiner Stelle wäre ich nicht so vorlaut. Es gibt kein "2 Wire SPI".
> Das geht sogar aus dem Display Datenblatt hervor. Entweder I2C mit 2
> Leitungen oder SPI mit 3 oder 4 Leitungen. Eine andere Option gibts
> nicht.

https://www.lcd-module.de/fileadmin/pdf/doma/dogm204.pdf

Ich finde diese 3-Wire / 4-Wire SPI irgendwie merkwürdig, wo CS 
lediglich über ein Gatter mit SCLK verknüpft wird.

> @ TO:
> Nach nochmaliger Betrachtung deines Schaltplanes muss ich sagen das da
> nichts stimmt. Weder als SPI oder noch als I2C Beschaltung.

Eigentlich doch, er legt den Out D2 über 22k nach GND, weil er nicht 
zurück lesen will, sieht mir nicht verboten aus.

Ob das Display beim Start den GND an D2 so interpretiert, I2C machen zu 
wollen?

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