Requesting help with powering down an SSD1351 display module - Page 1
Forum section: electronics / beginners

author: Ktron1000
author_rank: Newbie
timestamp: May 17, 2020, 09:16:25 am
content: 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

author: 0-8-15 User
author_rank: Regular Contributor
timestamp: May 17, 2020, 09:52:47 am
content: Maybe not exactly what you want to achieve, but have you tried turning it off through software?Code:display.writeCommand(SSD1351_CMD_DISPLAYOFF);

author: MarkF
author_rank: Super Contributor
timestamp: May 17, 2020, 09:59:38 am
content: I have a fewAdafruit 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: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 RegulatorSSD1351_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 InSSD1351_Write2(SSD1351_FUNCTIONSELECT, 0x00); // Disable Vdd Regulator}My setup commands:Code:// 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/Commandvoid SSD1351_Setup(void){SSD1351_CStris = 0;SSD1351_RSTtris = 0;SSD1351_DCtris = 0;// Reset SDD1351SSD1351_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 OnSSD1351_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 ModeSSD1351_Write(SSD1351_NORMALDISPLAY);// Internal Vdd Regulator and Interface Select {reset A[7:6]=00b, A=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 VoltageSSD1351_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 RAMSSD1351_Clear();// Sleep Mode OffSSD1351_Write(SSD1351_DISPLAYON);}

author: Ktron1000
author_rank: Newbie
timestamp: May 17, 2020, 01:21:22 pm
content: 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?

author: MarkF
author_rank: Super Contributor
timestamp: May 17, 2020, 02:19:27 pm
content: 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.

author: chriva
author_rank: Regular Contributor
timestamp: May 17, 2020, 02:27:00 pm
content: 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.