mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit OLED Display C0240QGLA-T


Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

vielleicht kann mir jemand einen Tip geben was ich falsch mache. Habe 
ein OLED Display von Densitron und zwar das C0240QGLA-T, welches es bei 
Farnell gibt. Habe eine Platine nach der Beschaltung in der Application 
note erstellt, natürlich mit den entsprechenden Korrekturen die ich hier 
im Forum gefunden habe, sowie die Anmerkungen im Datenblatt, falsch 
bezeichnete PINs und der Gleichen!

Soweit so gut Display, erhält alle Spannungen Platine hat keinen Kurzen, 
Alle Signale kommen zumindest am Stecker der Platine an. Das Display 
scheint auch auf Kommandos wie z.B. Display on und off zu reagieren, 
also scheint die Kommunikation auch zu funktionieren. Jedoch erhalte ich 
bei einem eigentlich schwarzen Display ein Display das mit einem extrem 
hellen braun gefüllt ist, alle anderen Farben mit denen ich das Display 
fülle sind von dunklen Streifen durchzogen. Diese Dunklen Streifen sind 
immer an der gleichen stelle, selbst nach ausschalten des Displays und 
neustarten der gesamten Schaltung nach einer gewissen zeit.

Fülle ich das Display nicht mit irgendwelchen inhalten so erhalte ich 
unzählige verscheidenfarbige Streifen die Horizontal das Display 
durchziehen, also kein Farbrauschen im Sinne von Farbrauschen.
Habe auch son ein anderes Display probiert, leider das gleiche 
Ergebniss.

Controller ist ein s6e36d6.

Hier ist mein Initialisierung:
 
//Clear Reset
  AVR32_GPIO.port[1].ovrc = DSP_RESET;
  //Wait some Time
  WaseTime();
  //Set Reset
  AVR32_GPIO.port[1].ovrs = DSP_RESET;

  DSPWriteIndex(0x23);
  DSPWriteIndex(0x02);
  DSPWriteParameter(0x0000);
  DSPWriteIndex(0x03);
  DSPWriteParameter(0x6030); //E130
  //Standby off
  DSPWriteIndex(0x10);
  DSPWriteParameter(0x0000);


  DSPWriteIndex(0x18);
  DSPWriteParameter(0x0028);// X1.352(Max.) 80Hz

  DSPWriteIndex( 0x00F8 );                   // Reg. ??
  DSPWriteParameter(0x000f );                // Vgh=+6v
  DSPWriteIndex( 0x00F9 );                   // Reg. ??
  DSPWriteParameter(0x000f );                // Vgl=-6v



  //- Gamma Register Setting:
    DSPWriteIndex( GOLED_GAMMA_TOP_BOTTO_CONTROL_R );
      DSPWriteParameter( 0x2580 );        //
      DSPWriteIndex( GOLED_GAMMA_TOP_BOTTO_CONTROL_G );
      DSPWriteParameter( 0x2780 );        //
      DSPWriteIndex( GOLED_GAMMA_TOP_BOTTO_CONTROL_B );
      DSPWriteParameter( 0x3380 );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_R_1_2 );
      DSPWriteParameter( 0x1D18 );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_R_3_4 );
      DSPWriteParameter( 0x1F11 );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_G_1_2 );
      DSPWriteParameter( 0x2419 );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_G_3_4 );
      DSPWriteParameter( 0x1A14 );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_B_1_2 );
      DSPWriteParameter( 0x211A );        //
      DSPWriteIndex( GOLED_GAMMA_CONTROL_B_3_4 );
      DSPWriteParameter( 0x2013 );

     // DSPWriteIndex(0x80);
     // DSPWriteParameter(0x0003);
unsigned int x=0;

  unsigned int H_Start_add = 0x0;
   unsigned int H_End_add = 0xF0+H_Start_add;
   unsigned int V_Start_add = 0x00;
   unsigned int V_End_add = 0xDF;

   unsigned int Temp = (H_Start_add << 8) | H_End_add;

   DSPWriteIndex(0x35);
   DSPWriteParameter(V_Start_add);
   DSPWriteIndex(0x36);
   DSPWriteParameter(V_End_add);
   DSPWriteIndex(0x37);
   DSPWriteParameter(Temp);
   DSPWriteIndex(0x20);
   DSPWriteParameter(H_Start_add);
   DSPWriteIndex(0x21);
   DSPWriteParameter(V_Start_add);

   DSPWriteIndex(0x22);

   for(x = 0; x < (220 * 320 ); x++ )
   {
        DSPWriteParameter(0x0000);       // Clear Display
        DSPWriteParameter(0x0000);       // Clear Display
   }

  //Display off
   DSPWriteIndex(0x05);
   DSPWriteParameter(0x0000);

   WaseTime2();

   //Enable DCDC converter
   AVR32_GPIO.port[1].ovrs = DSP_DCDC_CONV;
   DSPWriteIndex(0x05);
   DSPWriteParameter(0x0001);
   DSPWriteIndex(0x22);

An den Timings glaube ich liegt es nicht, da das Ergebnis das gleiche 
ist wenn alles extrem langsam abläuft als wenn es schneller betrieben 
wird.

gruß
Stefan

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also ich vermute Deine Initialisierung funktioniert nicht richtig.
Was passiert denn mit dem OLED wenn Du den Inhalt vorerst mal nicht 
löschst?
Sieht das dann so wie auf dem Bild aus?

Desweitern hat auch das 2.4" OLED doch 240x320 und nicht 220x320, oder?

Wieso machst Du Dir denn so ein Aufwand mit den 2 Übertragungen, nimm 
doch den 5:6:5 - 65K Farben Modus, ist auch schneller und reicht Dir 
sicher auch.

Soweit erstmal.

Dennis

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dennis,

Danke für die schnelle Antwort. Stimmt display hat 240x320 hab das 
irgendwie übersehen.

Jedoch sieht mein display ohne Inhalt löschen nicht so aus wie das auf 
deinem Bild. Ich habe Streifen in verschiedenen Farben, kein Rauschen 
wie man es erwarten würde.

Kannst du mal deine Initialisierung posten?
16bit Modus würde auch ausreichen.

Gruß
Stefan

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du alle Spannungen ueberprueft (also auch die, die das Display zur 
Verfuegung stellt)?

Autor: Dennis Schulz (pantheron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das hier ist mein Code, der ist zwar nicht mehr aktuell, hat sich 
am Entry mode was verändert, aber der hat funktioniert.
        FIO1CLR = RESET;
  wait_ms(40);
  FIO1SET = RESET;  

  
     LCD_Index(0x23);

  LCD_Index(0x02);
  LCD_Parameter(0x0000);

  LCD_Index(0x03);           
  LCD_Parameter(0x0030);     

  LCD_Index(0x10);
  LCD_Parameter(0x0000);

        LCD_Index(0x18);
        LCD_Parameter(0x28);       
  
  LCD_Index(0x05);
  LCD_Parameter(0x0001);
  
  LCD_Index(0x20);
  LCD_Parameter(0x00);

  LCD_Index(0x21);
  LCD_Parameter(0x00);
    
  LCD_Index(0x22);
  

  // GAMMA
  LCD_Index(0x70);
  LCD_Parameter(0x2B80);       
        LCD_Index(0x71);
        LCD_Parameter(0x2780);
        LCD_Index(0x72);
        LCD_Parameter(0x3380);       
        LCD_Index(0x73);
        LCD_Parameter(0x1D18);        
        LCD_Index(0x74);
        LCD_Parameter(0x1F11);        
        LCD_Index(0x75);
        LCD_Parameter(0x2419);        
        LCD_Index(0x76);
        LCD_Parameter(0x1A14);        
        LCD_Index(0x77);
        LCD_Parameter(0x211A);       
        LCD_Index(0x78);
        LCD_Parameter(0x2013); 

Also unsere Initialisierungen unterscheiden sich im großen und ganzen 
vom Entry mode und festlegen des Windows.
Lass das mal weg und übernehm den Entry mode dann sollte das gehen.

Hoffe es hilft Dir, ansonsten wäre mal deine Anschlussbelegung 
interessant, vielleicht ist das doch noch etwas.

Gruß Dennis

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die sequenz werde die nachher mal ausprobieren und auch noch 
mal die vom Display generierten Spannungen prüfen.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe hier das C0283 also den großen Bruder am Laufen mit einem Board 
von Glyn.
Bin gerade dran hier für eine Platine zu entwerfen könntest du als 
inpsiration/hilfe Bilder, Board (Eagle) und Schematic Files posten.
Sieht nämlich nicht schlecht aus was man da so erkennen kann.

Autor: Wolfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grüß euch!

Wo kann man den dieses Display als Otto- normal- Verbraucher kaufen?

LG

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung ich kann dir nur sagen es gibt es einmal bei Glyn und 
einmal bei Farnell wo es allerdings scheiß teuer ist.
An deiner Stelle würde ich einfach mal eine nette mail an Glyn 
schrieben.

Autor: Wolfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na da bin ich mal neugierig ob die ein offenes Ohr für mich haben :)

LG

Autor: Markus (GLYN) (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich vermute, dass du die Initialisierung nicht richtig machst.
Anbei meine Initialisierung:

/**************************************************************
***  Operating Instruction  ***********************************
**************************************************************/

void Index_out(unsigned char wert)
{
DB_OUT;

DB=wert;
RDB=1;
RS=0;
NCS_L;
WRB=0;
WRB=1;
NCS_H;
}

/**************************************************************
***  Display Datenausgabe   ***********************************
**************************************************************/

void Parameter_out(unsigned int wert)
{
DB_OUT;
RDB=1;
DB=wert>>8;
RS=1;
NCS_L;
WRB=0;
WRB=1;
NCS_H;

//Niederwertiges Byte
DB=wert;
NCS_L;
WRB=0;
WRB=1;
NCS_H;
}

/**************************************************************
***  Initialisierung des OLED Displays   **********************
**************************************************************/

void init_S6E63D6_240X320_8Bit_80Mode(void)
{
 unsigned long i;
 Init; //DDR06 = 0xFF;
 WRB=1;
 RDB=1;
 NCS_H;
 NRESET_L;
 for(i=0;i<0x20000;i++)asm("\tNOP");
 NRESET_H;
 for(i=0;i<0x20000;i++)asm("\tNOP");

 Index_out(0x24);
 Index_out(0x02);
 Parameter_out(0x0000);

 Index_out(0x03);
 Parameter_out(0x4120);    // 262k colour mode (3Bytes))  SS=1 0x4031
 Index_out(0x18);
 Parameter_out(0x0028);
 Index_out(0xF8);
 Parameter_out(0x000F);
 Index_out(0xF9);
 Parameter_out(0x000F);
 Index_out(0x10);
 Parameter_out(0x0000);
 Index_out(0x05); // display on
 Parameter_out(0x0001);
 Index_out(0x22);
 }

Des Weiteren ist unbedingt die richtige Einschaltreihenfolge der 
Spannungen zu beachten.

a) switch on VDD & VCI first
b) initialize the driver IC of the OLED
c) switch on the OLED voltages (AR_VDD & AR_VSS)

Spannungswerte beim 2.4" OLED:
2.4" OLEDs need four different voltages:
1. VDD & VCI (typ 3.3V)
- supply voltage for logic block and booster charge pump (VCI)
2. ARVDD (4.6V)
- positive OLED voltage
3. ARVSS (-4.4V)
- negative OLED voltage

Mit den Pins 21 & 22 werden die Ansteuer-Modi hardwaremäßig eingestellt.
Auch dort auf die korrekte Beschaltung achten.
The modes are selected by pin “SPB” (Pin 21) & “ID_MIB” (Pin 22)

Und natürlich die richtige externe Beschaltung vornehmen!!! (siehe 
Anhang)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.