Skip to content

gdew075T7 800x480

Martin F edited this page May 19, 2023 · 3 revisions
  • Size: 800 * 480 Colors: B/W
  • Manufacturer: Good display
  • Inches: 7.5
  • Controller: GD7965 (EK79655) Controller seems also fully compatible with UC8179C: Also compatible with DKE 7.5 monochrome
  • Status: Implemented and tested
  • Partial update: Working (see remarks below)
  • Waveshare code example
  • Grayscale support planned in Issue #14 Not yet correctly implemented, it needs more iterations, please contact us if you need to use it.

logo-Goodisplay Buy similar epaper to gdew075T7 here

Partial update is working correctly so far. Is important to know that in the SPI displays tested, partial update works bad when it's performed over existing Ink, but it looks good when done over a white clear background. This is a key difference with parallel epapers where partials hace no difference with a full update and they use to work correctly under most circumstances.

Stats

v1 before optimization

1033 _wakeUp settings+send Buffer
2007 update
3040 total time in ms (3 seconds to refresh display)

v2 SPI data communication optimized

STATS (ms)
261 _wakeUp settings+send Buffer
2007 update 
2268 total time in ms (800 milliseconds faster)

Remarks about partial update

It's working but has secondary effects especially when you print a white box on the top of something. It's fast and it's very nice to see it working. Doing the same with GxEPD library also is not working correctly.

    // Note: Working as expected
    // As a side effect also affects the top and bottom parts minimally
    //               background,foreground, x  , y -> Representing coordinates where the partial update starts
    demoPartialUpdate(EPD_BLACK, EPD_WHITE, 200, 50);

    vTaskDelay(3000 / portTICK_PERIOD_MS);
    // Note:  This affects the white vertical all over the partial update so it's not usable. 
    // Recommendation: Do not use a white background until it is fixed.
    demoPartialUpdate(EPD_WHITE, EPD_BLACK, 300, 300);

Video of partial update Update: This issue was partially corrected. Now it uses new waveform for partial update provided by Goodisplay.

Adafruit GFX test with Ubuntu font (size 18) Font: Ubuntu_M18pt8b.h in branch: refactor/oop

Waveshare 7.5" 800*480 b/w

4 gray version

4 Gray version with class Gdew075T7Grays

For the 4 Grays version we built a different Class called Gdew075T7Grays since it needs a 190Kb buffer and that requires the use of external PSRAM (ESP32-WROVER-B or similar).

Instantiation example:

#include <gdew075T7Grays.h>

// Include SPI IO Class
EpdSpi io;
Gdew075T7Grays display(io);

void app_main(void)
{
   display.init(false);  
   display.fillCircle(100, 100, 50, EPD_BLACK);
   display.fillCircle(200, 100, 50, EPD_DGRAY);
   display.fillCircle(300, 100, 50, EPD_LGRAY);
   display.fillCircle(400, 100, 50, EPD_WHITE);
   display.update();
}

Not entirely happy with the Grayscale version. Waiting for feedback from Goodisplay to see if the Waveform can be improved. The black is not full black and even printing a black and white photo looks like a washed out version of the original. Apart of that it enforces the use of SPI RAM which at the moment does not compensate the effort to use this class. At least the effort is made to show how a class to drive this epaper with 4 grays can be, not sure if it's the correct one, but is a good approach.

Pixel buffer in the 4 Grays mode

4 bits per pixel in the Adafruit GFX Buffer. The same that the 16 grayscale parallel epapers use in their buffer:

0 0 0 0 | 1 1 1 1   a black pixel, followed by a white pixel

Now to make the two different Grays, it uses two different commands internally, so it needs to send to two different buffers:

      white  gray1  gray2  black
0x10|  01     01     00     00
0x13|  01     00     01     00

IO.cmd(0x10) triggers first Buffer for gray1

IO.cmd(0x13) triggers second Buffer for gray2: A 190 Kb Buffer is sent each time.

IO.cmd(0x12) is display refresh. This is the same way is done in the Black/Red 3 color version, only that this time is done with 2 different Grays.

Note: At the moment of building this class I still didn't had a logic analyzer so I checked the SPI commands with an ESP32-spi-slave

Clone this wiki locally