SSD1306 OLED, VBAT und VDD zusammen an 3.3V?

OP #4522613
Lesenswert?
• ▲
▼
Hallo zusammen

Ich habe hier ein OLED mit einem SSD1306 Controller drauf.

Im Datenblatt steht bei VBAT 3.5V-4.2V
Auf der Herstellerwebseite: 
http://www.solomon-systech.com/en/product/display-ic/oled-driver-controller/ssd1306/
Steht: 3.3V-4.2V

Zudem steht:  VDD= 1.65V - 3.3V, <VBAT for IC Logic

Ich gehe deshalb davon aus, dass man VDD kleiner als VBAT wählen sollte.
Leider habe ich immoment nur 3.3V zur verfügung und habe deshalb VDD und 
VBAT zusammen an 3.3V.

Ich habe die interne ChargePump aktiviert. Vermute ich mal.
Am VCC Pin welcher über einen C gegen GND liegt messe ich leider keine 
Spannung. Ob das nun am VBAT oder meinem Code liegt weiss ich nicht.

Das Display zeigt leider nichts an. Nun weiss ich nicht, ob das an 
dieser Spannung oder an meinem Code liegt.

Deshalb wollte ich fragen, ob jemand bereits erfahrungen mit dem SSD1306 
hat und hierzu etwas schreiben könnte.

Danke
OP #4522643
Lesenswert?
• ▲
▼
G. H. schrieb:
> also ich habe hier das typ. 0.96" OLED mit SSD1306 an 3.3V
> problemlos
> laufen.

Habe auch das 0.96" OLED

Sprichst du von einem Modul, welches evtl. noch einen Spannungswandler 
drauf hat oder von einem OLED mit Controller?

Ich habe dieses hier:

http://www.buydisplay.com/default/datasheet-128x64-oled-module-spi-0-96-inch-graphic-displays-white-on-black

Ich betreibe es, bzw. versuche es im SPI 4-Wire Mode zu betreiben.
BS0,1,2 habe ich auf GND.

Zur verifikation des Codes, versuche ich nach der initialisierung das 
Display zu invertieren mit 0xA7 und 0xA6. Genügt das oder muss ich 
wirklich noch Daten senden? Es geht mir im ersten Schritt lediglich 
darum, meine SPI Kommunikation zu verifizieren.

Hier mein Init Code:
1
  GPIO_SetBits(OLED_Port,OLED_RST_Pin);
2
  delay_ms(5);
3
  GPIO_ResetBits(OLED_Port,OLED_RST_Pin);
4
  delay_ms(500);
5

6
  SPI2_SendLCD(0xAE, 0); //0 bedeutet Command (DC ist auf low)
7
  SPI2_SendLCD(0xD5, 0);
8
  SPI2_SendLCD(0x80, 0);
9

10
  SPI2_SendLCD(0xA8, 0);
11
  SPI2_SendLCD(0x3F, 0);
12

13
  SPI2_SendLCD(0xD3, 0);
14
  SPI2_SendLCD(0x00, 0);
15

16
  SPI2_SendLCD(0x8D, 0);
17
  SPI2_SendLCD(0x14, 0);
18

19
  SPI2_SendLCD(0x40, 0);
20
  SPI2_SendLCD(0xA6, 0);
21

22
  SPI2_SendLCD(0xA4, 0);
23

24
  SPI2_SendLCD(0xA1, 0);
25
  SPI2_SendLCD(0xC8, 0);
26

27
  SPI2_SendLCD(0xDA, 0);
28
  SPI2_SendLCD(0x12, 0);
29

30
  SPI2_SendLCD(0x81, 0);
31
  SPI2_SendLCD(0xCF, 0);
32

33
  SPI2_SendLCD(0xD9, 0);
34
  SPI2_SendLCD(0xF1, 0);
35

36
  SPI2_SendLCD(0xDB, 0);
37
  SPI2_SendLCD(0x40, 0);
38

39
  SPI2_SendLCD(0xAF, 0);
40

41

42
.....
43

44
  while(1)
45
  {
46

47
    SPI2_SendLCD(0xA7,0); 
48
    GPIO_SetBits(GPIOB,GPIO_Pin_7);
49
    delay_ms(500);
50
    SPI2_SendLCD(0xA6,0);
51
    GPIO_ResetBits(GPIOB,GPIO_Pin_7);
52
    delay_ms(500);
53
  }

Leider geschieht nichts...
#4522681
Lesenswert?
• ▲
▼
Hi, hier mal der InitCode aus der Lib die ich verwende (12c oder isp ist 
da ja egal)
1
  #if defined SSD1306_128_64
2
    // Init sequence for 128x64 OLED module
3
    ssd1306_command(SSD1306_DISPLAYOFF);                    // 0xAE
4
    ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV);            // 0xD5
5
    ssd1306_command(0x80);                                  // the suggested ratio 0x80
6
    ssd1306_command(SSD1306_SETMULTIPLEX);                  // 0xA8
7
    ssd1306_command(0x3F);
8
    ssd1306_command(SSD1306_SETDISPLAYOFFSET);              // 0xD3
9
    ssd1306_command(0x0);                                   // no offset
10
    ssd1306_command(SSD1306_SETSTARTLINE | 0x0);            // line #0
11
    ssd1306_command(SSD1306_CHARGEPUMP);                    // 0x8D
12
    if (vccstate == SSD1306_EXTERNALVCC) 
13
      { ssd1306_command(0x10); }
14
    else 
15
      { ssd1306_command(0x14); }
16
    ssd1306_command(SSD1306_MEMORYMODE);                    // 0x20
17
    ssd1306_command(0x00);                                  // 0x0 act like ks0108
18
    ssd1306_command(SSD1306_SEGREMAP | 0x1);
19
    ssd1306_command(SSD1306_COMSCANDEC);
20
    ssd1306_command(SSD1306_SETCOMPINS);                    // 0xDA
21
    ssd1306_command(0x12);
22
    ssd1306_command(SSD1306_SETCONTRAST);                   // 0x81
23
    if (vccstate == SSD1306_EXTERNALVCC) 
24
      { ssd1306_command(0x9F); }
25
    else 
26
      { ssd1306_command(0xCF); }
27
    ssd1306_command(SSD1306_SETPRECHARGE);                  // 0xd9
28
    if (vccstate == SSD1306_EXTERNALVCC) 
29
      { ssd1306_command(0x22); }
30
    else 
31
      { ssd1306_command(0xF1); }
32
    ssd1306_command(SSD1306_SETVCOMDETECT);                 // 0xDB
33
    ssd1306_command(0x40);
34
    ssd1306_command(SSD1306_DISPLAYALLON_RESUME);           // 0xA4
35
    ssd1306_command(SSD1306_NORMALDISPLAY);                 // 0xA6
36
  #endif

im angehängten Bild (i2c) kannst du die Beschaltung am breakoutboard 
erkennen.
Angehängte Dateien:

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.