Jump to content
Sign in to follow this  
cpu20

Waveshare 2.9" EPD

Recommended Posts

Recently I've gotten this little display. It's my first time working with an e-paper display and I have to say it's really neat how it works!

The pas few days I have been busy writing a driver for it. Rotation works, but partial refresh is not implemented yet. The reason for this, is that I have no idea how to do this. Currently the driver uses the draw_pixel method to write every pixel into a frame buffer and then flush everything at once to the display.
I have no idea if it would be beneficial to implemented partial refresh and if so how to do it. If anyone could give some more info that would be really helpful!

WS29EPD.zip

Share this post


Link to post
Share on other sites

Here are some pictures with two lines, a circle and some text printed on the EPD.

2017-07-05 10.12.21.jpg2017-07-05 10.13.02.jpg

Edited by cpu20

Share this post


Link to post
Share on other sites

The easiest way is to just save the x & y coordinate minimum and maximum in the driver pixel draw routine. When the flush happens you then flush based on the rectangle you saved. 

Some draws will not optimise based on this simple method (eg the diagonal line from corner to corner) but for most workloads it will save refresh time.

Another optimization that will help with the diagonal line is to force a flush whenever the pixel to be drawn is outside a certain maximum refresh area size.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×