adafruit / Adafruit_RA8875

Adafruit Arduino library driver for the RA8875 TFT driver
http://www.adafruit.com/products/1590
Other
67 stars 58 forks source link

Contributing -- LVGL & DMA SPI #40

Open ahoenerBE opened 3 years ago

ahoenerBE commented 3 years ago

I'm currently working on a project that makes use of the RA8875 controller and LVGL on an Arduino DUE (SAM3X8E).

It was mentioned in #39 by @makermelissa that it's possible to use this library for LVGL but it's pretty slow because of pixel drawing. I ended up forking their example and refining it more by adding a new SPI transfer function for writing blocks instead of pixels, since the new LVGL makes it easier to bulk transfer their buffer. That improved performance but still isn't as fast as I'd like.

LVGL also provides an option for 2 screen buffers: the buffer is filled and then sent over SPI by a DMA controller while the other buffer is filled with new updates and the cycle repeats.

Bill Grieman's SdFs library already has a nice implementation of SPI over DMA for the Due and a few other chips and I'm working to adapt it into my fork of this library.

Currently I need to:

Would you be interested in/willing to accept these changes in master or another branch if a pull request is made? I'd like to contribute back to the library, ideally. If so, are there any contribution guidelines or things I should keep in mind while I'm working?

Thanks

makermelissa commented 3 years ago

My implementation was also based on an older version. My comments were more about the RA8875 is more optimized for sending over commands to draw such as a rectangle or ellipse, and less optimized for raw data like the LVGL library sends. However, if it sends over just the difference between the buffers to draw (like dirty rectangles), that might work quite well.

ahoenerBE commented 3 years ago

Right now the due is using an spi speed of about 20MHz which actually seems to be working (better than the 4MHz the library sets at least), and a decently large single buffer and it repaints pretty well. SPI is still blocking so it stutters at times which is why I'm going for DMA next