OLED-Applikationen mit SSD0323-Familie

Gast #1154633
Lesenswert?
• ▲
▼
Hallo zusammen,

nachdem ich jetzt hier schon einige Zeit mitlese, aber bisher noch 
nichts passendes gefunden habe, schreibe ich dann auch mal selbst was.

Ich habe hier ein 1,5"-OLED mit SSD1328-Controller/Driver liegen. 
Ursprünglich versuchte ich die Ansteuerung über eine ... nicht ganz 
billige Treiberbibliothek eines namhaften Herstellers, was auf dem 
Testaufbau mit SSD0323 auch wunderbar funktioniert, doch auf dem SSD1328 
tat es keinen sinnvollen Dienst. Mittlerweile bin ich also wieder bei 
den Assembler-Befehlen eingebettet in C-Code angelangt.

Die Verdrahtung ist korrekt, die Spannungen stimmen auch, VDD und VCC 
werden gleichzeitig zu- und abgeschalten. Die Darstellung auf dem 
Display ist allerdings stark verrauscht, das was ich eigentlich 
darstellen will, erscheint gar nicht. Kontrastregelung etc. 
funktioniert.

Die Ansteuerung läuft über 3-Wire-SPI an einem AT91SAM7A3-EK.

send-Funktion:
1
void send(char address, char data) 
2
{
3
  int nn;
4

5
  if (address) AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, OLED_DC); /* Command */
6
  else AT91F_PIO_SetOutput(AT91C_BASE_PIOA, OLED_DC); /* Data */
7
  
8
  for(nn=0;nn<20;nn++);
9
  AT91F_SPI_PutChar(AT91C_BASE_SPI1,data,0);
10

11
}
12

13
set_pixel:
14

15
void set_pixel(int xcord, int ycord, int greysc)
16
{
17
  send(1,0x15);
18
  send(1,xcord);
19
  send(1,127);
20
  send(1,0x75);
21
  send(1,ycord);
22
  send(1,95);
23
  send(0,greysc);
24
}

Ich sende dem Controller nach der Initialisierung ein 0xAF 
(einschalten), danach 0xA4 (Modus Normal), Kontrast auf Maximum und dann 
gehts los.
Als Debug-Ausgabe erstmal eine diskrete Kontrastregelung, dann sollte 
per
1
for(i=0;i<96;i++)              
2
  {
3
    for(j=0;i<64;i++)        
4
    {
5
      set_pixel(i,j,0xFF);      
6
      delay_ms(10);  
7
                }      
8
  }

eigentlich erstmal das ganze Display geschrieben werden, aber leider 
geht das Display vorher wieder aus. Ich konnte auch beobachten, dass am 
Ende der Kontrastregelung (5 komplette Durchläufe mittels while() ) das 
Display immer schwarz wird.

Habt ihr irgendwelche Ideen dazu?

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.