GxEPD2 - RPI Pico + Waveshare 2.9 (296x128) BW Rev 2.1

Does anyone have any tips on how to get GxEPD to work with a Raspberry Pi Pico and Waveshare 2.9" Rev2.1 (V2 sticker and FPC-7519 rev b on the cable) to work together? I've successfully managed to get the Waveshare example python code to display using the wiring they recommend for the pico-paper-2.9 product (i.e. BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11). So, I know the display works.

I've tried to work my way through GxEPD2_wiring_examples.h with changes in GxEPD2_display_selection_new_style.h

#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
...
// I've tried all of these with no luck
//#define GxEPD2_DRIVER_CLASS GxEPD2_290     // GDEH029A1   128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5  // GDEW029T5   128x296, UC8151 (IL0373), (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D  128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD  128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94  128x296, SSD1680, (FPC-7519 rev.b)
#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94  128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS  128x296, SSD1680, (FPC-7519 rev.b)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06  128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
...
#if defined(ARDUINO_RASPBERRY_PI_PICO)
// adapt the constructor parameters to your wiring
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
#endif

I can see various output to the serial console but I get absolutely no flickering of the display at all initially. At the very end, of the example setup routine, I get flickering with the text 'waking from deep sleep' and finally 'hibernating again'.

I'm hoping someone can point me in the right direction to debugging this.

It does toggle/update the screen at the end of setup() ysing GxEPD2_290_T94_V2 (or any other SSD1680 based drivers). I see the following two messages, 'woke up from deep sleep' and 'hibernating again'. The screen is left with the phrase 'hibernating again' left on the display.

I can post the whole serial console if it helps...

_PowerOn : 18
_Update_Full : 5
_PowerOff : 7000
_PowerOn : 16
_Update_Full : 8
_PowerOff : 4999
_PowerOn : 15
...
_PowerOn : 9
_Update_Full : 5
_PowerOff : 4000
_PowerOn : 94997
_Update_Full : 3824999
_PowerOff : 139999
_PowerOn : 94999
_Update_Full : 3826000
_PowerOff : 140000
setup done

Updating my own post again. Strangely, if I throw a display.hibernate() just after the display.init(...) call, I'm able to see the examples on the e-ink display. Having just started working with GxEPD2, I'm really not sure why this works but it's better than having a blank screen. All the examples seem to display as intended. Can anyone elaborate on why this might be? I'm powering the screen via VSYS on the Pico, per the Pico ePaper wiki pin assignments.

Hi @cyborgrelations , welcome to the forum!

Please try with GxEPD2 version 1.5.6 available on GitHub.
This version has changes that may fix your issue. I need to do release tests, before releasing this version for Arduino Library Manager (by tagging the version).

Download the actual version from GitHub as ZIP-file, and install as ZIP-file with Library Manager.

Please report if this resolves you issue. Thanks.
-jz-

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