Ansteuerung LCD-Display - welcher Controller ist wirklich verbaut?

OP #4473839
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...
OP #4473887
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

:-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.