Forum: Mikrocontroller und Digitale Elektronik SSD1322 GDDRAM auslesen


von Jens (Gast)


Lesenswert?

Hi,

hat jmd von euch bereits Erfahrungen mit dem Display-Controller SSD1322 
sammeln können? Die Initialisierung sowie das Beschreiben vom GDDRAM 
funktioniert. Allerdings kann ich vom GDDRAM nicht richtig Auslesen. 
Wenn ich z.B. ein Pixel auf 0xF (volle Helligkeit) gesetzt habe , wir 
dieses Pixel auch auf dem Display hell angezeigt. Beim Auslesen der 
gleichen GDDRAM-Adresse bekomm ich aber nicht 0xF zurückgeliefert 
sondern irgendetwas anderes - z.B. 0xD....

Nachdem mein Prozessor keinen externen Datenbus besitzt, hab ich die 
ersten 7 bits vom GPIO-PortB für den Datenbus verwendet. COMMAND gibt 
an, dass das A0/RS Pin low ist und bei DATA ist dieser High.
1
unsigned char read_data(void)
2
{
3
  unsigned char data = 0x00; 
4
  
5
  GPIOB->CRL &= ~0xFFFFFFFF;  // reset port-pins for both leds 
6
  GPIOB->CRL |=  0x88888888;  // set input with pull-up/down 
7
  
8
  //A0 bzw. RS is high
9
  GPIOC->BSRR = (1 << 4);
10
  //r/w  high setzen
11
  GPIOC->BSRR = (1 << 5);  
12
  //E pin auf high setzen
13
  GPIOC->BSRR= 1<<6;   
14
15
  //cs auf low setzen
16
  GPIOC->BRR = (1 << 8);
17
18
  delay_ms(100); 
19
20
21
  /* daten auslesen° */
22
  data = GPIOB->IDR & 0xFF; 
23
24
25
  //cs auf high ziehen 
26
  GPIOC->BSRR = (1 << 8);
27
   delay_ms(100); 
28
29
30
  //r/w auf low setzen
31
  GPIOC->BRR = (1 << 5);  
32
  //E pin auf high setzen
33
  GPIOC->BSRR= 1<<6;  //set to high 
34
35
  return data; 
36
}
37
38
39
void GDDRAMData(void)
40
{
41
42
unsigned char columnPixel[2];
43
44
    /* set addr to write */
45
    write_cmd(COMMAND, 0x75);
46
    write_cmd(DATA, 0x1C); //0x1C ist mein Offset -> 0 column
47
    write_cmd(COMMAND, 0x15);
48
    write_cmd(DATA, 0);
49
    
50
    /* write to GDDRAM (das erste Pixel leuchtet) */
51
    write_cmd(COMMAND, 0x5C); 
52
    write_cmd(DATA, 0xF0);
53
    write_cmd(DATA, 0x00);
54
   
55
   /* set addr to read */
56
    write_cmd(COMMAND, 0x75);
57
    write_cmd(DATA, 0x1C); //0x1C ist mein Offset -> 0 column
58
    write_cmd(COMMAND, 0x15);
59
    write_cmd(DATA, 0); 
60
61
    /* read GDDRAM */
62
    write_cmd(COMMAND, 0x5D);
63
    columnPixel[0] = read_data();    // Dummy reading
64
    columnPixel[0] = read_data();    // pixel 0, 1
65
    columnPixel[1] = read_data();    // pixel 2, 3
66
67
}

Die I/Os werden alle entsprechend richtig angesprochen. Das Schreiben 
des GDDRAMs funktioniert ja und den RD-Pin hab ich überprüft.



Gruß
Jens

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.