GxEPD2 - Problem with Waveshare 7.3inch 7 color e-ink

I bought a 7.3 inch 7 color e-paper from Waveshare.

7.3inch_e-Paper_(F)_Specification.pdf (5.5 MB)

And I got a color tint problem when I use the code of GxEPD2_730c_GDEY073D46. Someone has report the similar problem in this subjuct. And the result is related to the hat hardware.


Finally, I try this fork, and the color is ok now.

I try to compare with the code between GDEY073D46 and GxEPD2_730c(form fork), the only difference is the InitDisplay function.



I don't have this panel from Waveshare.
It might be the same panel as the one from Good Display, but I don't know.
I don't support panels I don't have with GxEPD2. I don't merge pull requests as a consequence.

Good to know that there is a fork that supports it. But I don't care about the differences.

It has been reported that this panel works with the driver for GDEY073D46, when used with the DESPI-C73 connection module. I hate the "clever" reset circuit Waveshare uses.
-jz-

Hi @play4fun . You tried to get my help on that other thread. You are in a tight spot, GxEPD2/ ZinggJM vs Waveshare . I just replace that board with a gooddisplay driver board and my displaying worked 100% consistent , (code not GxEPD2) . If have some easy code I can test for you sure. The Waveshare driver boards are "buggy" .

How do you connect the DESPI-C02 to this display?
The (I don't know how it's called) "flexible", "flat" connector on the display is wider than the ones in GDEY075Z08 and the like.

is the "DESPI-C02 connection module" a module that goes between the DESPI-C02 and the display?

image

Sorry, I used the wrong name for the connection module. Correct is DESPI-C73.
-jz-

According to my testing, it should be an issue with register parameters, modify the code for the BTST/BTST1/BTST2 fix the color problem for my waveshare board.
I have no datasheet for this screen, and the parameters come from waveshare's driver.

void GxEPD2_730c::_InitDisplay()
{
  if (_hibernating)
  {
    _reset();
    delay(20);
    _reset();
  }
  if (_initial_write) delay(20);
  _writeCommand(0xAA); // CMDH
  _writeData(0x49);
  _writeData(0x55);
  _writeData(0x20);
  _writeData(0x08);
  _writeData(0x09);
  _writeData(0x18);
  _writeCommand(0x01); // Power Settings
  _writeData(0x3F);
  _writeData(0x00);
  _writeData(0x32);
  _writeData(0x2A);
  _writeData(0x0E);
  _writeData(0x2A);
  _writeCommand(0x00); // Panel Settings
  _writeData(0x5F);
  _writeData(0x69);
  _writeCommand(0x03); // Power Off Sequence
  _writeData(0x00);
  _writeData(0x54);
  _writeData(0x00);
  _writeData(0x44);
  _writeCommand(0x05); // BTST1
  _writeData(0x40);
  _writeData(0x1F);
  _writeData(0x1F);
  _writeData(0x2C);
  _writeCommand(0x06); // Booster Soft Start
  _writeData(0x6F);
  _writeData(0x1F);
  _writeData(0x1F);
  _writeData(0x22);
  _writeCommand(0x08); // BTST3
  _writeData(0x6F);
  _writeData(0x1F);
  _writeData(0x1F);
  _writeData(0x22);
  _writeCommand(0x13); // IPC
  _writeData(0x00);
  _writeData(0x04);
  _writeCommand(0x30); // PLL Control,The command decides internal OSC clock frequency. 
  _writeData(0x3C);
  _writeCommand(0x41); // TSE
  _writeData(0x00);
  _writeCommand(0x50); // VCOM and Data Interval Setting
  _writeData(0x3F);    // white border
  _writeCommand(0x60); // TCON
  _writeData(0x02);
  _writeData(0x00);
  _writeCommand(0x61); // Resolution Setting
  _writeData(0x03);
  _writeData(0x20);
  _writeData(0x01); 
  _writeData(0xE0);
  _writeCommand(0x82); // VDCS
  _writeData(0x1E);
  _writeCommand(0x84); // T_VDCS
  _writeData(0x00);
  _writeCommand(0x86); // AGID
  _writeData(0x00);
  _writeCommand(0xE3); // PWS
  _writeData(0x2F);
  _writeCommand(0xE0); // CCSET
  _writeData(0x00); 
  _writeCommand(0xE6); // TSSET
  _writeData(0x00);
 }

I just received the Waveshare PhotoPainter module I ordered from SpotPear Electronics.

It works with the driver for GDEY073D46 with GxEPD2, but the colors are not so nice.
It is definitely not the same panel as the GDEY073D46 from Good Display.
It has a different inking on the flexible connector, and the wavetable - refresh time - is different.
Next I will test with the parameters from the Waveshare demo code.
There will be a separate driver class for this panel in the next release of GxEPD2.
In the meantime the fork mentioned can be used.

@play4fun, I don't like differences thrown at me, in the form of hardly readable pictures.
Therefore I had decided to not answer anymore to this topic.

But I answer anyway, for other users that hope for help.
-jz-

1 Like

@ZinggJM Sorry, I didn't understand the code very well in the early stage. I thought there were two completely different drivers, so I posted the whole picture. Recently I discovered that the parameters that affect the screen tone are the following.

waveshare vs goodiplay
  _writeCommand(0x05); // (Booster Soft Start)BTST1
 0x401F1F2C  ==  0x401F1F2C
  _writeCommand(0x06); // BTST2
 0x6F1F1F22  vs   0x6F1F1625
  _writeCommand(0x08); // BTST3
 0x6F1F1F22  == 0x6F1F1F22

And the PPL affect noting in my test.

  _writeCommand(0x30); // PLL Control,The command decides internal OSC clock frequency.
  waveshare: _writeData(0x3C)  vs goodiplay: _writeData(0x02)

Hey @play4fun and @ZinggJM did either of you ever find a Technical Specification, Hardware Functional Specification, or Application Note - Reference Design, for the EPD Controller?
@play4fun, I see you "discovered that the parameters that affect the screen tone are the following...". How were you able to do so? Just a lot of experimenting or were you finally able to get ahold of a specification?
The EPD Controller I am working with has a 50pin connector and is controlled with the exact commands this display is using.
The sample code I received was developed with IAR and I was able to build it with a trial IAR IDE which produced good results. I dont want to purchase an IAR IDE license so I switched to the TI CCS IDE to program the same code.
I can get the display to go thru its colors similar to the sample code provided but it is grainy and dull and does not go thru the samples with the same crispness.
The display has a 3-wire and 4-wire SPI interface which is briefly explained in a brief App Note and is recommended to use the default 3-wire interface ( with GPIO) forming the pulses with setting pins H/L with a delay. I call that "bit-banging".
I notice that you use delay(20), I assume that is 20ms. Also are you using a SPI module or bit-banging as well? If so are you using 1Mhz or 2Mhz SCLK...
Any suggestions would help...
Thanks!

@labrat08 , Hi, welcome to the forum!

The forum informed you that this topic is declared solved, and you shouldn't add to it.
Please create a new topic in this case, in future. You can add a link to the topic it relates to, and even add quotes from the related topic.

You could report any inking found on the flexible connector, or markings or stickers on the panel.
What connection module do you use with the panel? It needs an external circuit for panel driving voltages creation.

7.3inch ACeP 7-Color E-Paper with Solid Wood Photo Frame, Ultra-long Standby, 800 × 480 Resolution, Batteries Optional | PhotoPainter (waveshare.com)

PhotoPainter - Waveshare Wiki

Seven Colors ACeP E-Ink Display 7.3 inch Gallery Palette epaper, GDEY073D46_Good Display (good-display.com).

GxEPD2 uses HW SPI with 4-wire connection and 4MHz (default) bus speed.

The 20ms delay is the default reset pulse length used.
-jz-

1 Like

Thank you. I will comply with your tips. Also thanks for the input.
I may add to the forum in the future on a broader topic of EPD since I am not using the Arduino for development this article and now your response with links and SPI info along with delay time was very helpful to me. Thanks!

@labrat08 , give and take, please!

The readers might be interested in an answer to this question:

And in the Displays section, links to the devices are welcome.

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