Author Topic: Requesting help with powering down an SSD1351 display module  (Read 1412 times)

0 Members and 1 Guest are viewing this topic.

Offline Ktron1000Topic starter

  • Newbie
  • Posts: 2
  • Country: us
Hello EEVBloggers - I have a question that I would like to request some help with.

I am currently experimenting with the attached SSD1351 oled display module. I am powering the module from 3.3V and using 4 wire SPI but when I power down the module, sometimes a line of pixels will flare up (see attached gif). I cannot find a schematic for the module but I have found found a similar module from Adafruit(attached) that uses the same display, the Adafruit module has an additional SD card.

From the Adafruit datasheet I can see that their module boosts to 13V with a FAN5331SX and also uses a MIC5225-3.3v regulator to power the display. The IREF resistor on the Adafruit module is 600K and I have found the IREF resistor on this module (R5) and it is 560K.

I was wondering if the good people of EEVBlog could assist me in understanding this power down pixel-flare-up behaviour and if you could point me in the right direction to research how to avoid this by either adding additional external circuitry or modifying the module's components if possible. Is this behaviour normal with an OLED display?

My guess (probably incorrect!) is that it seems as if charged capacitors are discharging through a number of pixels on power down. I am not sure if this would reduce the life expectancy of the module over time? Any pointers as to where to investigate further or help me understand this behaviour would be very helpful!

Thank you
 

Offline 0-8-15 User

  • Regular Contributor
  • *
  • Posts: 69
  • Country: de
Re: Requesting help with powering down an SSD1351 display module
« Reply #1 on: May 17, 2020, 09:52:47 am »
Maybe not exactly what you want to achieve, but have you tried turning it off through software?
Code: [Select]
display.writeCommand(SSD1351_CMD_DISPLAYOFF);
 

Online MarkF

  • Super Contributor
  • ***
  • Posts: 2647
  • Country: us
Re: Requesting help with powering down an SSD1351 display module
« Reply #2 on: May 17, 2020, 09:59:38 am »
I have a few Adafruit 1.27" Color OLED Breakout Boards
I found that the initialization in their graphics library set the brightness to extreme levels. 
I re-wrote their library to optimize memory size and tame down the color intensity to hopefully increase the display lifespan.

There is a power-down sequence noted in the datasheet somewhere...
But here is the command sequences I use to dim and power down the SSD1351:

Edit:  See section, 8.10.1 VDD Regulator in Sleep Mode, in the SSD1351 datasheet.

Code: [Select]
   int screenSaver=0;  // 1Hz screen saver counter

//
// TURN THE OLED ON
//
      if (screenSaver == 0) {
         SSD1351_Write2(SSD1351_CONTRASTMASTER, 0x09);
         SSD1351_Write2(SSD1351_FUNCTIONSELECT, 0x01);   // Enable Vdd Regulator
         SSD1351_Write(SSD1351_DISPLAYON);               // Sleep Out
      }
//
// DIM THE OLED
//
      else if (screenSaver == 20) {
         SSD1351_Write2(SSD1351_CONTRASTMASTER, 0x01);
      }
//
// TURN THE OLED OFF
//
      else if (screenSaver == 60) {
         SSD1351_Write(SSD1351_DISPLAYOFF);              // Sleep In
         SSD1351_Write2(SSD1351_FUNCTIONSELECT, 0x00);   // Disable Vdd Regulator
      }



My setup commands:

Code: [Select]
// SSD1351 OLED pins

#define SSD1351_CSpin    PORTAbits.RA3       // OLED pin 5     OLED Chip Select
#define SSD1351_RSTpin   PORTAbits.RA2       // OLED pin 4     OLED Reset
#define SSD1351_DCpin    PORTAbits.RA1       // OLED pin 3     OLED Data/Command

#define SSD1351_CStris   TRISAbits.TRISA3    // OLED Chip Select
#define SSD1351_RSTtris  TRISAbits.TRISA2    // OLED Reset
#define SSD1351_DCtris   TRISAbits.TRISA1    // OLED Data/Command

void SSD1351_Setup(void)
{
   SSD1351_CStris = 0;
   SSD1351_RSTtris = 0;
   SSD1351_DCtris = 0;

   // Reset SDD1351
   SSD1351_CSpin = 1;
   SSD1351_RSTpin = 0;
   __delay_us(2);
   SSD1351_RSTpin = 1;

   // Command Lock #1 {reset=0x12}
   SSD1351_Write2(SSD1351_COMMANDLOCK, 0x12);

   // Command Lock #2 {reset=0xB0}
   SSD1351_Write2(SSD1351_COMMANDLOCK, 0xb1);

   // Sleep Mode On
   SSD1351_Write(SSD1351_DISPLAYOFF);

   // Re-map / Color Depth {Vertical flip}
   //SSD1351_Write2(SSD1351_SETREMAP, 0x66);
   SSD1351_Write2(SSD1351_SETREMAP, 0x74);

   // Display Start Line {reset=0}
   SSD1351_Write2(SSD1351_STARTLINE, 0);

   // Display Offset {reset=60h}
   SSD1351_Write2(SSD1351_DISPLAYOFFSET, 0);

   // Display Mode
   SSD1351_Write(SSD1351_NORMALDISPLAY);

   // Internal Vdd Regulator and Interface Select {reset A[7:6]=00b, A[0]=1b}
   SSD1351_Write2(SSD1351_FUNCTIONSELECT, 0x01);

   // Reset/Pre-charge Periods {reset A[7:4]=1000b 8_DCLKs], A[3:0]=0010b 5_DCLKs}
   SSD1351_Write2(SSD1351_PRECHARGE, 0x62);

   // Display Enhancement
   //SSD1351_Write4(SSD1351_DISPLAYENHANCE, 0xa4, 0x00, 0x00);

   // Clock Divider and Oscillator Frequency {reset A[7:4]=1101b, A[3:0]=0001b}
   SSD1351_Write2(SSD1351_CLOCKDIV, 0xf1);

   // Segment Low Voltage
   SSD1351_Write4(SSD1351_SETVSL, 0xa0, 0xb5, 0x55);

   // GPIO {reset A[3:2]=10b, A[1:0]=10b}
   SSD1351_Write2(SSD1351_SETGPIO, 0x00);

   // Second Pre-charge Period {reset A[3:0]=1000b 8_DCLKS]}
   SSD1351_Write2(SSD1351_PRECHARGE2, 0x01);

   // Pre-charge Voltage {reset A[4:0]=17h}
   SSD1351_Write2(SSD1351_PRECHARGELEVEL, 0x15);

   // COM Deselect Voltage {reset A[2:0]=05h}
   SSD1351_Write2(SSD1351_VCOMH, 0x03);

   // Contrast Current {reset=8Ah, 51h, 8Ah}
   SSD1351_Write4(SSD1351_CONTRASTABC, 0x60, 0x50, 0x60);

   // Master Contrast Current {reset A[3:0]=1111b}
   SSD1351_Write2(SSD1351_CONTRASTMASTER, 0x09);

   // MUX Ratio {reset A[6:0]=127}
   SSD1351_Write2(SSD1351_MUXRATIO, 95);

   // Zero RAM
   SSD1351_Clear();

   // Sleep Mode Off
   SSD1351_Write(SSD1351_DISPLAYON);
}

« Last Edit: May 17, 2020, 11:58:43 am by MarkF »
 
The following users thanked this post: 0-8-15 User

Offline Ktron1000Topic starter

  • Newbie
  • Posts: 2
  • Country: us
Re: Requesting help with powering down an SSD1351 display module
« Reply #3 on: May 17, 2020, 01:21:22 pm »
Thanks for the helpful replies,

I have not explored software shutdown so that is something to think about. It's a great suggestion to investigate lowering brightness via software too, thanks for the tips and example code. I will do some experimenting and check on the suggested data sheet pages, thanks MarkF.

MarkF - could I ask if you have noticed this issue when power is cut to your displays? I would like to try and understand why the pixels are flaring up as in some cases it may not be possible to shut down the module over SPI before power off. It doesn't always happen, and seems to happen more with a higher amount of active pixels displayed at the time of powering off.

Just wanted to check if this is normal/safe with OLEDs or if there was a way to avoid it with additional circuitry if anyone has experienced a similar issue before?

 

Online MarkF

  • Super Contributor
  • ***
  • Posts: 2647
  • Country: us
Re: Requesting help with powering down an SSD1351 display module
« Reply #4 on: May 17, 2020, 02:19:27 pm »
I don't remember seeing anything like what you have.
My background is typically black with white lettering and the display just goes dark when I remove power to the module.
I was trying the software shutdown to save battery life for my circuit but it didn't save much.  I'm sure where all the power is going to when the display is in power-down mode.

Oh, I just realized that I only power them with 5V and let the Adafruit 3.3V onboard regulator power itself.
I see they have a 10uF cap on their 3.3V regulator input.
Not knowing your module, you might try a cap on it's input power.

It may just be that I don't drive my display as hard as the Adafruit graphics library.
Their setup was so bright that everything had a glow and pixels bleeding into each other.
It's hard for me to remember what the display did with their levels.  It's been too many years.
Try my configuration setup to see if it makes any difference.
 

Offline chriva

  • Regular Contributor
  • *
  • Posts: 102
  • Country: se
Re: Requesting help with powering down an SSD1351 display module
« Reply #5 on: May 17, 2020, 02:27:00 pm »
Read the datasheet for the controller. They usually have power up and down sequences listed.

I know the response sounds kinda naive but I have yet to see a library that does what is actually explained in the datasheet of a display.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf