Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

black/white e-Paper/e-Ink display driver #12509

Merged
merged 4 commits into from
Feb 4, 2023
Merged

Conversation

silkeh
Copy link
Contributor

@silkeh silkeh commented Oct 19, 2019

Contribution description

This PR adds a driver for black/white e-paper/e-ink SPI display drivers/controllers, including:

  • Default parameters for the IL3829 (tested)
  • Default parameters for the SSD1673 (see boards: add support for Phytec 'reel board' #11096, untested)
  • Header files containing RIOT logos. These were generated using png2c.
    Some questions:
    • Should I move these to a generally available directory?
    • What should the copyright notice be?
  • Tests for the display driver. A video with the full test can be found here.

With the right parameters, this driver should work with most black and white e-paper display drivers. This has only been tested with the IL3829, which is commonly used in 1.54 inch black and white e-Paper displays like this one.

This PR is based on #11078 with some major rework to get it all in a more generic package.

Testing procedure

A test program is included (tests/driver_il3829).
Modify the makefile for a microcontroller/display combination you have and go for it.

Issues/PRs references

This is a complete rework based on the feedback from #11078.

@benpicco benpicco added Area: drivers Area: Device drivers Type: new feature The issue requests / The PR implemements a new feature for RIOT labels Oct 21, 2019
@silkeh
Copy link
Contributor Author

silkeh commented Feb 1, 2020

@bergzand ping!

@bergzand
Copy link
Member

bergzand commented Feb 1, 2020

@aabadie You have a proposal on a unified display driver API right? Would it be possible for you to give this driver a review at some point?

@Citrullin
Copy link
Contributor

Citrullin commented Feb 2, 2020

@bergzand Where is the proposal for the driver? I would like to know, if this also fits into my needs :)

@bergzand
Copy link
Member

bergzand commented Feb 2, 2020

@Citrullin There is a start of it in #13124 but I don't think there is a dedicated PR or issue yet

@aabadie
Copy link
Contributor

aabadie commented Feb 2, 2020

Where is the proposal for the driver?

It's in e3fb86e and e7cbd70 from #13124 but it's still very minimal (only one map function exposed by the generic API). I'm planning to add getter/setter functions to be able to control/access internal states/parameters of the display drivers from higher level functions (like lvgl for example).
If you think the API is useful, I can split it out from #13124 and open a dedicated PR.

@silkeh
Copy link
Contributor Author

silkeh commented Apr 1, 2020

I have updated the PR with an implementation of disp_dev, some minor fixes and a rebase on master.

@silkeh silkeh force-pushed the pr/epd-il3829 branch 2 times, most recently from dc4401b to 2a02586 Compare April 1, 2020 15:21
@Citrullin
Copy link
Contributor

Citrullin commented May 8, 2020

@silkeh I started working on it as well. I need to split up your code in order to make it work with the IL0373. For example the variable values in epd_bw_spi_internal.h are different for the IL0373. There are some fixed values, which needs to get variables.

Where is the proposal for the driver?

It's in e3fb86e and e7cbd70 from #13124 but it's still very minimal (only one map function exposed by the generic API). I'm planning to add getter/setter functions to be able to control/access internal states/parameters of the display drivers from higher level functions (like lvgl for example).
If you think the API is useful, I can split it out from #13124 and open a dedicated PR.

Looks similar to SAUL. I think that is something we can work on.

@silkeh
Copy link
Contributor Author

silkeh commented Oct 19, 2020

@aabadie, @bergzand: ping! 🎂

@aabadie aabadie dismissed their stale review February 1, 2023 21:16

outdated

@bergzand bergzand removed CI: no fast fail don't abort PR build after first error State: waiting for maintainer State: Action by a maintainer is required labels Feb 2, 2023
Copy link
Member

@bergzand bergzand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack, thank you for the contribution and your patience with this PR!

bors merge

bors bot added a commit that referenced this pull request Feb 2, 2023
12509: black/white e-Paper/e-Ink display driver r=bergzand a=silkeh



Co-authored-by: Silke Hofstra <silke@slxh.eu>
@bors
Copy link
Contributor

bors bot commented Feb 2, 2023

Build failed:

@bergzand bergzand added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR CI: no fast fail don't abort PR build after first error and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Feb 2, 2023
@bergzand
Copy link
Member

bergzand commented Feb 2, 2023

Both test applications need a file called Makefile.ci with the following content:

BOARD_INSUFFICIENT_MEMORY := \
    arduino-duemilanove \
    arduino-nano \
    arduino-uno \
    atmega328p-xplained-mini \
    atmega328 \
    #

Feel free to force push these changes

@bergzand
Copy link
Member

bergzand commented Feb 2, 2023

Lets try this again

bors merge

bors bot added a commit that referenced this pull request Feb 2, 2023
12509: black/white e-Paper/e-Ink display driver r=bergzand a=silkeh



Co-authored-by: Silke Hofstra <silke@slxh.eu>
@bors
Copy link
Contributor

bors bot commented Feb 2, 2023

Build failed:

@@ -0,0 +1,7 @@
BOARD_INSUFFICIENT_MEMORY := \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can generate this with

make create-Makefile.ci

Copy link
Member

@bergzand bergzand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks,

Bors merge

@bors
Copy link
Contributor

bors bot commented Feb 3, 2023

🕐 Waiting for PR status (GitHub check) to be set, probably by CI. Bors will automatically try to run when all required PR statuses are set.

@bergzand bergzand added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR CI: no fast fail don't abort PR build after first error labels Feb 3, 2023
@bergzand
Copy link
Member

bergzand commented Feb 4, 2023

Bors merge

@bors
Copy link
Contributor

bors bot commented Feb 4, 2023

Build succeeded:

@bors bors bot merged commit f3a487b into RIOT-OS:master Feb 4, 2023
@bergzand
Copy link
Member

bergzand commented Feb 4, 2023

Thanks for the effort you put into this @silkeh

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Area: drivers Area: Device drivers Area: tests Area: tests and testing framework Area: tools Area: Supplementary tools CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Type: new feature The issue requests / The PR implemements a new feature for RIOT
Projects
None yet
Development

Successfully merging this pull request may close these issues.