Forum: Mikrocontroller und Digitale Elektronik Ansteuerung LCD-Display - welcher Controller ist wirklich verbaut?


von Anon E. (anonelec)


Lesenswert?

Guten Morgen!

Ich beisse mir gerade die Zähne an der Ansteuerung eines LCD-Displays 
aus. Angeblich soll das Modul einen ILI9341 drauf haben, ich glaube das 
aber unterdessen nicht mehr...

Wenn ich Register 0 auslese, erhalte ich immer 0 statt der bei vielen 
Controllern erwarteten Geräte-ID. Auch bei Register 4, wo beim ILI9341 
die Hersteller-ID sein sollte, erhalte ich 0. Bei Register 9 (Status?) 
erhalte ich 00 40 00 00. Das passt nicht mit den im ILI9341 Datenblatt 
dokumentierten Reset-Werten.

Wahrscheinlich ist also ein anderes Modul verbaut, aber welches?

Was ich auch nicht verstehe: In z.B. der UTFT-Bibliothek wird der 
ILI9341 mit unten stehendem Code initialisiert. In meinem Datenblatt 
(V1.02) sind aber Kommandos 0xcb und 0xcf etc. nicht dokumentiert.
1
case ILI9341_S5P:
2
    LCD_Write_COM(0xCB);  
3
    LCD_Write_DATA(0x39); 
4
    LCD_Write_DATA(0x2C); 
5
    LCD_Write_DATA(0x00); 
6
    LCD_Write_DATA(0x34); 
7
    LCD_Write_DATA(0x02); 
8
9
    LCD_Write_COM(0xCF);  
10
    LCD_Write_DATA(0x00); 
11
    LCD_Write_DATA(0XC1); 
12
    LCD_Write_DATA(0X30); 
13
14
    LCD_Write_COM(0xE8);  
15
    LCD_Write_DATA(0x85); 
16
    LCD_Write_DATA(0x00); 
17
    LCD_Write_DATA(0x78); 
18
19
    LCD_Write_COM(0xEA);  
20
    LCD_Write_DATA(0x00); 
21
    LCD_Write_DATA(0x00); 
22
 
23
    LCD_Write_COM(0xED);  
24
    LCD_Write_DATA(0x64); 
25
    LCD_Write_DATA(0x03); 
26
    LCD_Write_DATA(0X12); 
27
    LCD_Write_DATA(0X81); 
28
29
    LCD_Write_COM(0xF7);  
30
    LCD_Write_DATA(0x20); 
31
  
32
    LCD_Write_COM(0xC0);    //Power control



Da die Frage kommen wird: Ich steuere das Modul mit 16bit parallel an., 
über Ports A (D0..7) und D (D8..15) eines PIC18F46K20 an, der mit 16MHz 
läuft. Die Pegel sämtlicher Steuerleitungen (WR,RD,CS,RS,RESET) habe ich 
nachgemessen, die Ansteuerung stimmt. Ebenso kann ich die Pegel der 
Ports A und D einlesen. Ich bin ziemlich sicher, dass hier alles stimmt. 
Trotzdem hier der Code (bleibt natürlich nicht so, ist erst mal ein Hack 
für Tests):
1
#define WR_L LATEbits.LATE0=0
2
#define WR_H LATEbits.LATE0=1
3
#define RD_L LATEbits.LATE1=0
4
#define RD_H LATEbits.LATE1=1
5
#define RESET_L LATEbits.LATE2=0
6
#define RESET_H LATEbits.LATE2=1
7
#define CS_L LATBbits.LATB5=0
8
#define CS_H LATBbits.LATB5=1
9
#define RS_L LATBbits.LATB4=0
10
#define RS_H LATBbits.LATB4=1
11
12
CS_L;
13
RS_L;
14
LATA=0x00;           // DB0--15 = 0
15
LATD=0x00;
16
TRISA=0;             // ports = output
17
TRISD=0;
18
WR_L;                // pulse WR
19
NOP;
20
WR_H;
21
RS_H;               
22
TRISA=0xff;          // ports = input
23
TRISD=0xff;
24
RD_L;
25
NOP;
26
RS232hex(PORTA);
27
RS232hex(PORTD);
28
RD_H;    
29
CS_H;      
30
31
// liefert : 0000 
32
     
33
CS_L;
34
RS_L;
35
LATA=0x09;           // DB0--15 = 0
36
LATD=0x00;
37
TRISA=0;             // ports = output
38
TRISD=0;
39
WR_L;                // pulse WR
40
NOP; NOP; NOP; NOP;
41
WR_H;
42
RS_H;               
43
TRISA=0xff;          // ports = input
44
TRISD=0xff;
45
46
for( i=0; i<5u; i++) {
47
  RD_L;
48
  NOP; NOP; 
49
  RS232hex(PORTD);
50
  RS232hex(PORTA);      
51
  RS232space();
52
  RD_H;
53
}
54
55
// liefert : 0000 0000 0040 0000 0000
56
    
57
CS_H;


Ein Photo des Moduls ist hier:
https://www.mikrocontroller.net/attachment/283390/lcd1.jpg

Rechts unten am dem Glas des Moduls steht "HR4 8637S G3/2"

Wäre froh um einen Tipp wie ich hier weiterkomme...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zeig mal das Display selbst und nicht die Platine, auf der das Display 
draufsteckt.

von Anon E. (anonelec)


Lesenswert?

War wieder mal wie verhext: Nach vielen Stunden Suchen und Probieren 
fand ich die Lösung schon bald nach dem Posten des Problems...

Das Problem war: Die Google-Hits zu ILI9341 führten zu Data sheets die 
nicht vollständig sind. Bei Ilitek selbst wurde ich auch nicht fündig.

Aber natürlich war in den Tiefen dieses Forums ein Link auf ein neueres: 
Beitrag "ili9341 Initialisierung undokumentierte Commands"

Ueber das darin dokumentierte Kommando 0xd3 kriege ich jetzt die Device 
ID 0x9341

:-)

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.