Update GxEPD2 driver for GDEY075Z08 / UC8179 display - #59
Merged
Merged
Conversation
RomanAlexandroff
left a comment
Owner
Author
There was a problem hiding this comment.
The astonishing amount of deletions is just files of other displays drivers having been removed from the GxEDP2 library in the "libraries" folder of this repository
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR updates the project to use the correct GxEPD2 driver for the actual E-Ink display and controller used by the device.
The project previously used
GxEPD2_750c_Z08, which is intended for displays using the GD7965 controller. The actual display is the Good Display GDEY075Z08 7.5" tri-color panel, which uses the UC8179 controller.The GxEPD2 library has since added a dedicated
GxEPD2_750c_GDEY075Z08driver, so this PR migrates the project to that driver.Changes
GxEPD2_750c_GDEY075Z08.hGxEPD2_750c_GDEY075Z08.cppGxEPD2_750c_Z08driver withGxEPD2_750c_GDEY075Z08.GxEPD2_750c_GDEY075Z08::HEIGHT / 4, which allows the device to operate reliably without crashing.Important discovery
The previous driver was not actually intended for the display/controller combination used by this project.
The old configuration was:
The new configuration is:
The dedicated driver was added to GxEPD2 relatively recently, while the version of GxEPD2 previously used by this project was several years old. Consequently, the project had been using a driver intended for a different controller without realizing it.
Display refresh performance
The driver migration also allowed the display refresh behaviour to be investigated further.
With the old driver, the GxEPD2 diagnostics repeatedly reported approximately 20-second BUSY timeouts:
This resulted in display updates taking more than one minute.
With the correct GDEY075Z08 driver, the measurements are approximately:
The display therefore no longer experiences the previous ~20-second BUSY timeouts for every operation.
The new driver has also been tested on the actual remote device, and the display has been confirmed to render the images correctly.
RAM / display buffer
During the migration, the device initially crashed when attempting to instantiate the display with the full display height as the buffer height.
Using:
GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4>resolved the crash and allowed the display to operate normally.
The
MAX_DISPLAY_BUFFER_SIZEconfiguration was also investigated. The project's previous custom/ 2modification was retained where appropriate, but increasing the available display buffer alone was not sufficient to make the full-height buffer fit into the available RAM.The
/ 4height configuration is therefore currently retained as the stable configuration.Verification
The updated firmware was deployed to the actual device and verified remotely.
Confirmed:
Related issue
This work is closely related to the existing E-Ink display refresh performance investigation.
The remaining display-refresh behaviour and the application's display-update logic are being tracked separately so that this PR remains focused on the driver migration.
Notes
The display drawing logic itself is due for a larger refactoring. Unexpected display refreshes have been observed during some wake-up cycles even when no visible display change is expected. This behaviour is documented separately and is intentionally not addressed by this PR.