Forum: Mikrocontroller und Digitale Elektronik OLED-Applikationen mit SSD0323-Familie


von Frank Bär (Gast)


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?

von Frank Bär (Gast)


Lesenswert?

Hallo nochmal,

keine Ideen? Wäre wirklich froh, wenn ihr mir ein wenig Hilfestellung 
geben könntet.

Gruß, Frank

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.