GxEPD2 - Problem with black in a 3 color e-ink Waveshare

I have a strange behaviour on my 13.3 inch 3 colour Waveshare e-ink with a "hat".
I'm using the standard examples of the GxEPD2 library (and tried multiple examples, all with the same results).

Results:
When I connect it to an Arduino Mega --> black and red colours are fine.
When I connect it to an ESP8266 or an ESP32 --> the black colour is brown iso black; and I see shadows of the text.

As there are 2 main differences between a Mega and an ESP: clock-speed and voltage levels.

  1. My first thought was that maybe the frequencies where too fast, so I updated the library times, but that did not change it.

  2. Next I connected the VCC of the e-ink hat to 5V (and left all other pins to the ESP outputs, so 3.3V). Now the brown becomes indeed darker; and the shadowed texts are gone. But fluctuates some cases the screen is brown, and in some cases it becomes black.

I'm now thinking to add a full 3V3 to 5V converter for all signals (so connect 5V side to e-ink hat, and 3V3 to ESP side).

But before I take out the soldering iron:
Anybody else with a similar issue, and/or tips to solve this?

It may work, if you connect VCC to 5V but use a series resistor or voltage divider on the BUSY line, to protect the input to your ESP.
But you may get distortions, because the 3.3V data signals are slightly marginal as input to the level converter set for 5V signals.

The recommendation is to use a DESPI-C02 instead of the HAT for 3.3V processors.

Thank you
I see indeed in the schematics that the HAT has a level-shift/converter on the board, while the DESPI-C02 does not have this.
It feels indeed strange that I first convert it from 3V3 to 5V such that the HAT can convert it back from 5V to 3V3.
So I need to get my hands on an DESPI-C02.

Delivery times of such an DESPI-C02 board took me too long, so I started soldering.
But had some strange behavior I was not expecting.
Starting point I have added a resistor of 1.2kOhm between BUSY-pin of E-paper and the pin on my ESP32. And put Vcc and PWR to 5V.
Result:
Each time the E-paper is showing a refresh the ESP32 is an error state.
But as soon as the e-paper is ready it starts behaving normal again.

Screendump:
rst:0xc (SW_CPU_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1448
load:0x40078000,len:14844
ho 0 tail 12 room 4
load:0x40080400,len:4
load:0x40080404,len:3356
entry 0x4008059c

I also tried a resistive voltage divider between BUSY-pin and ESP32 --> same result.
I also tried not connecting the BUSY-pin --> same result

So questions:

  1. When you don't have a BUSY-pin connected, how does the ESP32 know the e-paper is ready?
  2. any clue what the above error code means?

I think that I found the problem, it seems when display is refreshing the voltage drops significantly. That is probably also why 3V3 was not good enough for me. During display refreshing the 3V3 drops below 2.7V (when display is connected to 5V).

So I need to look for a better power supply / voltage regulator.

A separate 3V3 power supply does the trick.
And a simple measurement shows that the screen draws circa 300mA during refresh, which is more than defined in the datasheet.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.