SSD1322 GDDRAM auslesen

Gast #2676278
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.