Display Chip ST7789V Library

OP #7346670
Lesenswert?

Hallo zusammen, ich möchte ein Display mit dem Grafikchip ST7789V verwenden. Kennt jemand hierfür eine Library im C-Code ?

Kenne bisher nur den FT800. Sehe ich das richtig, dass ich bei dem o.g. Chip sogar die Fonts nicht dabei sind und selber definiert werden müssen ?

Gast #7346725
Lesenswert?

Dirk F. schrieb:

Kennt jemand hierfür eine Library im C-Code ?

Ja, ich.

Dirk F. schrieb:

Kenne bisher nur den FT800.

Dann kennst du noch seeeeehr wenig.

Dirk F. schrieb:

Sehe ich das richtig, dass ich bei dem o.g. Chip sogar die Fonts nicht dabei sind und selber definiert werden müssen ?

Das siehst du richtig. Im Datenblatt des ST7789V kommt das Wort Font kein einziges Mal vor.

Wenn man nach ST7789V Datenblatt sucht dann findet man ein Datenblatt des Chips.

Wenn man nach ST7789V Library sucht dann findet man Libraries zur Verwendung des Chips.

Gast #7348021
Lesenswert?

Das was du da hast ist der reine LCD Treiber IC. Der hat über so gefühlt zig tausende pins, und ist direkt auf dem LCD gebondet.

Ansprechen kann man den über MCU 8/16 bit interface, SPI mit 3 oder 4 leitungen oder über RGB und noch gefühlt 20 andere. Welches Interface du jetzt genau hast, kann dir nur der Hersteller des LCD displays sagen, derjenige, der auch das Flachbandkabel an das glas drangeklebt hat.

Und Fonts kann der IC glaube ich nicht, ... du must da pixel für pixel selber setzen. und Initallisieren solltest du den LCD Treiber vorher auch nach forgabe des Herstellers, ... (irgendwie muss man dem IC ja sagen wie das glass jetzt genau aussieht und wie man da jetzt die farben richtig darstellt, sollte aber alles im Datenblatt zum LCD drinnen sein)

Der Linux Treiber für die 3 Draht SPI anbindung ist unter staging zu finden.

OP #7348258
Lesenswert?

123 schrieb:

Ansprechen kann man den über MCU 8/16 bit interface, SPI mit 3 oder 4 leitungen

Hallo, ja ich möchte SPI nutzen. Es handelt sich um ein Display von Phoenix Contact für die ICS Baureihe Gehäuse.

Und ja, der Init-code steht zur Verfügung (s.Anlage).

Nur weiß ich nicht, wie das geht ?

  1. Ein Byte Register senden
  2. ein Byte Parameter senden
  3. Ein Byte Register senden
  4. ein Byte Parameter senden

u.s.w ?

Angehängte Dateien:
Gast #7348324
Lesenswert?

Dirk F. schrieb:

Nur weiß ich nicht, wie das geht ?

Zunächst schreibst du eine Funktion die ein Byte über SPI sendet. Dazu Makros, Funktionen oder Direktzugriffe die Chip Select und RS-Signal (auch oft C/D genannt) richtig bedienen.

Wenn du das hast zeigst du uns das, dann reden wir weiter.

Gast #7348410
Lesenswert?

tja was du möchtest, das ist dem display egal, ... da hat wer irgend etwas verkabelt, ... und das hast du dan zu nutzen.

ist vermutlich SPI 4 draht oder doch 3 Draht, ...

Bei 3 draht werden 9 bits verwendet, das 9te ist dann für register / parameter bei 4 draht sind das nur 8 bit dafür übernimt die Register/parameter umschaltung eine leitung, ...

und versuch nicht erst die parameter die du da reinschreibst im datenblatt alle nachzulesen. es kann durchaus sein, das da der Asiate irgend welche parameter schreibt, die nicht im datenblatt dokumentiert sind. Das ist da so üblich, ...

Also entweder für Register den Leitung entsprechend setzen, das Byte über SPI rausschreiben, und für Parameter entsprechen die Leitung invertieren.

bei 9bit, das entsprechende bit entsprechend setzen, ...

OP #7348444
Lesenswert?

123 schrieb:

Also entweder für Register den Leitung entsprechend setzen, das Byte über SPI rausschreiben, und für Parameter entsprechen die Leitung invertieren.

Hi 123, das bedeutet folgende Reihenfolge zum Init:

  1. Reset, delay 120 ms
  2. RS (Pin 9) = 0
  3. 0x36 schreiben (8 Bit)
  4. RS (Pin 9) = 1
  5. 0x00 schreiben (8 Bit)
  6. RS (Pin 9) = 0
  7. 0x3a schreiben (8 Bit)
  8. RS (Pin 9) = 1
  9. 0x05 schreiben (8 Bit) ........u.s.w ??
Angehängte Dateien:
Gast #7348454
Lesenswert?

Dirk F. schrieb:

das bedeutet folgende Reihenfolge zum Init:

Das wäre erschrecken hemdsärmelig ....

Nein, man schreibt zwei Funktionen:

1
Write_Command (uint8_t val)
2
{
3
 // ... RS = 0
4
 // val schreiben
5
}
6
Write_Data (uint8_t val)
7
{
8
 // ... RS = 1
9
 // val schreiben
10
}

Diese ruft man wechselweise auf wie es deine Init-Tabelle hergibt. Linke Spalte: Command, rechts Spalte: Data.

#7348893
Lesenswert?

Hallo,

ich bin gerade dran an einem Display mit einem ST7793, allerdings mit 8-Bit Parallelport, dieses hier:

https://de.aliexpress.com/item/32956967893.html?spm=a2g0o.order_list.order_list_main.29.768c5c5foVeM76&gatewayAdapt=glo2deu

Und ja, die verwendeten Schriftfonts mußt du selber in Software machen. Ich habe mir mit Hilfe des Datenblattes, der mit dem Display mitgelieferten Beispiele und viel try&error eine kleine Lib selber geschrieben mit den Sachen, die ich für mein Projekt brauche. Die Fonts habe ich von hier:

Beitrag "Re: LCD Schriftarten ( Fonts in veschiedenen Größen )"

Reinhard

Angehängte Dateien:
Gast #7349203
Lesenswert?

Ich glaub er sucht für "Harmony3" eine passende Lib und versucht hier sein Glück (https://microchipdeveloper.com/harmony3:harmony-libraries) weil er es selbst nicht schafft/schaffen wird. Warum fängt man auf diese Basis eigentlich mit einen Projekt an ? Ich würde die Hardware nehmen die bekannt und gut dokumentiert ist und die ich u.U. schon eingesetzt habe. Alternativ kann man eine Arduino Lib nehmen z.B.: https://github.com/deirvlon/ST7789v-Arduino und schaut sich den Source Code genauer an und "saugt" sich dass raus was man braucht.

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