You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At the moment displayio makes many assumptions on the format of the display controller commands, limiting the controllers it can support.
In my particular case I tried to create a driver for the Waveshare 1.54inch e-Paper V2 display (datasheet). While the display has a 200x200 pixels resolution, the row addressing commands (0x45 and 0x4F) use a two byte, LSB first, parameter for the row. Function displayio_display_core_set_region_to_update() (at displayio_core.c) assumes a one byte parameter for self->ram_height less than 256 and a two byte (MSB first) parameter for self->ram_height greater than 255.
To support this controller there is a need of a more flexible way to specify the format of row addressing commands (or a way to override this in the python code, which would probably have performance issues).
The text was updated successfully, but these errors were encountered:
The main trick is that you can set ram width >256 but then say this display is only 200 wide. That'll use the two byte form but only compute 200 pixels wide.
The main trick is that you can set ram width >256 but then say this display is only 200 wide. That'll use the two byte form but only compute 200 pixels wide.
I actually tried that before opening this issue... It does not work because the byte order for the row is different. In display_core.c we have:
Add address_little_endian for epaper displays with little endian
(low byte first) addresses.
Also clears allocated display and display bus memory so it has a
known state. The acep member wasn't always set so it varied
accidentally.
Fixes#7560. May fix#7778. Fixes#5119.
At the moment displayio makes many assumptions on the format of the display controller commands, limiting the controllers it can support.
In my particular case I tried to create a driver for the Waveshare 1.54inch e-Paper V2 display (datasheet). While the display has a 200x200 pixels resolution, the row addressing commands (0x45 and 0x4F) use a two byte, LSB first, parameter for the row. Function displayio_display_core_set_region_to_update() (at displayio_core.c) assumes a one byte parameter for self->ram_height less than 256 and a two byte (MSB first) parameter for self->ram_height greater than 255.
To support this controller there is a need of a more flexible way to specify the format of row addressing commands (or a way to override this in the python code, which would probably have performance issues).
The text was updated successfully, but these errors were encountered: