Forum: Mikrocontroller und Digitale Elektronik Display ansteuerung mit fbtft unter Linux


von Pat P. (tsag)


Lesenswert?

Hallo,

ich habe hier dieses Display:
http://en.lcdlcd.com/product3/2012-08-30/8461.chtml

Dieses möchte ich mit meinem Raspberry Pi Compute module verbinden und 
mittles fbtft betreiben. Ich habe es bisher mit einem anderen Display 
versucht (Adafruit 2.2") und es funktioniert auch soweit, jedoch muss 
ich nun das oben genannte Display verwenden.

Ich habe das Display über SPI angeschlossen und als tinylcd 
initialisiert (nutzt laut fbtft auch den gleichen Controller), leider 
bekomme ich nur ein weisses Display. Durch Nachfragen beim Hersteller 
habe ich dann mitbekommen das man die Parallelen verbindungen auch 
braucht um die Daten zu übertragen:
1
SPI connection can not be used alone.It is used for initializing RGB interface only.
2
PLease kindly change into 8bt MCU interface.

Meine Programmierkenntnisse beschränken sich jedoch auf ein bisschen C 
(Atmega) und Phyton.

Daher meine Frage, welchen Modus nutze ich also am besten mit dem PI?
Und meine größte Bitte, könnte mir eventuell jemand einen Treiber dazu 
schreiben? :-S
Auf der oben genannten Seite sind auch bereits beispiele Vorhanden.

vielen Dank im voraus!

von Grundschüler (Gast)


Lesenswert?

Patrick B. schrieb:
> SPI connection can not be used alone.It is used for initializing RGB
> interface only.
> PLease kindly change into 8bt MCU interface.

Stammt diese Aussage vom Hersteller oder vom Händler?
1
void write_data(unsigned char w) // (uchar w, uchar v)
2
{
3
  unsigned char i;
4
csb=0;
5
sclb=0;
6
sdi=1;
7
sclb=1;
8
for(i=0;i<8;i++)
9
 {
10
  sclb=0;
11
     if (w&0x80)
12
        sdi=1;
13
          else
14
         sdi=0;
15
  sclb=1;
16
   w=w<<1;
17
    }
18
csb=1;
19
}

sieht doch sehr nach spi aus. Was soll da parallel sein?

von Pat P. (tsag)


Lesenswert?


von Grundschüler (Gast)


Lesenswert?

Im datasheet nachlesen. Wenn Spi geht, gibt es irgendwo Lötbrücken, die 
für den Spi-Modus richtig eingestellt werden müssen.

von Grundschüler (Gast)


Lesenswert?

7.1.3. Serial Interface
The selection of this interface is done by IM [2:0] bits. Please refer 
to the Table in the following.

IM2 IM1 IM0 MPU-Interface Mode CSX D/CX SCL Function
1 0 1 3-line serial interface “L” -

Read/Write command, parameter or display data.
1 1 1 4-line serial interface “L” “L”/“H”

Read/Write command, parameter or display data.
ILI9486L supplies 3-lines/ 9-bit and 4-line/8-bit bi-directional serial 
interfaces for communication between the
host and ILI9486L. The 3-line serial mode consists of the chip enable 
input (CSX), the serial clock input (SCL)
and serial data Input/Output (SDA). The 4-line serial mode consists of 
the Data/Command selection input
(D/CX), chip enable input (CSX), the serial clock input (SCL) and serial 
data Input/Output (SDA) for data
transmission. The data bus (D [17:0]) which are not used, must be leave 
these unused pins to open. Serial clock
(SCL) is used for interface with MCU only, so it can be stopped when no 
communication is necessary.


Es gibt also 3line und 4line-modus. Ist der richtige Modus eingestellt?

von Pat P. (tsag)


Angehängte Dateien:

Lesenswert?

Ja, laut Controller Datenblatt Seite 26 habe ich es verdrahtet, sprich 
IM0 IM1 und IM2 -> HIGH sodass 4-Line SPI aktiviert ist.

http://en.lcdlcd.com/res/starteklcden/pdres/201304/20130412144645444.pdf

Auf Seite 214 sind die Timings auch nur für die SPI Anschlüsse gezeigt, 
keine anderen..

Momentan ist der stand das anscheinend keine Daten ankommen.

Ich habe es wie folgt am PI verdrahtet:

32 -> SDI -> MOSI
07 -> Reset -> GPIO25
34 -> SCL -> SCLK
36 -> CS -> CE0
35 -> DCX -> GPIO24

dann es in /etc/modules hinzugefügt
fbtft_device name=tinylcd35 gpios=reset:25,dc:24

Am Anfang ist das Display komplett dunkel, die Hintergrundbeleuchtung 
ist zwar an eine Konstantstromquelle angeschlossen und leuchtet auch, 
das Display ist jedoch schwarz.
Dann wird es (anscheinend) Initialisiert und es wird weiss, mehr 
passiert jedoch leider nicht.

Ich habe nun auch mal Ilitek (die Hersteller des Controllers) 
angeschrieben und gefragt ob sie mir genau sagen können ob es so 
funktioniert.
Wenn die grünes Licht geben frage ich nochmal beim Hersteller des 
Displays nach warum es denn genau nicht geht, vielleicht liegt es ja an 
denen (was ich jedoch irgendwie nicht glaube)..

Ansonsten, gibt es noch etwas das ich ausprobieren kann?

von Grundschüler (Gast)


Lesenswert?

Patrick B. schrieb:
> könnte mir eventuell jemand einen Treiber dazu
> schreiben

Wie machst du denn jetzt die Initialisierung?

von Pat P. (tsag)


Lesenswert?

Momentan nutze ich das tinylcd Modul des fbtft
https://github.com/notro/fbtft/blob/master/fb_tinylcd.c
https://github.com/notro/fbtft/wiki

Das ist halt der Treiber für das tinylcd Display, anscheinend gibt es 
das nichtmehr, jedoch steht im Kommentar
1
The seller won't give up info on the LCD controller used. My best guess is a ILI9486 clone.

Daher dachte ich mir es sei einen Versuch Wert, jedoch komme ich halt 
nur bis zum weissen Display....

von Grundschüler (Gast)


Lesenswert?

weisses Display - wenn es denn wirklich die Initialisierung ist - ist 
doch schon mal gar nicht so schlecht.
der fbtft-code
  write_reg(par, 0xB0, 0x80);
  write_reg(par, 0xC0, 0x0A, 0x0A);
  write_reg(par, 0xC1, 0x45, 0x07);
  write_reg(par, 0xC2, 0x33);
  write_reg(par, 0xC5, 0x00, 0x42, 0x80);
        ...
hat ja Ähnlichkeiten mit dem Beispielcode
write_command(0xC0);
write_data(0x08);
write_data(0x06);

write_command(0xC1);
write_data(0x43);

write_command(0XC5);
write_data(0x00);
write_data(0x40);

write_command(0xC2);
write_data(0x33);

write_command(0xB1);
write_data(0xB0);
write_data(0x11);

write_command(0xB4);
write_data(0x02);
...

write_command(0xB7);
write_data(0x86);


Vielleicht reicht es ja, die Werte aus dem Beispielcode in den 
fbtft-code einzusetzen. Sinnvoller wäre es aber, herauszufinden wie beim 
rasp grundsätzlich gpios gesetzt werden und die beiden benötigten 
Funktionen  write_data() und write_command() selbst zu schreiben.

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.