Eli Hughes

LPC55S69 Embedded Graphics : Decoding Animated GIFs

Blog Post created by Eli Hughes Employee on Aug 1, 2020

I wanted to take a quick break from some of the PowerQuad articles to show off a neat library that works well with the LPC55S69.      One of the design features of the Mini-Monkey experiment was a 240x240 Pixel IPS display.     I feel that the LPC55S69 is a good fit for small, low active power embedded graphics applications.  It has quite a bit of internal SRAM to store a framebuffer and has lots of processing power to composite a scene on a small display.  In some of my previous articles,  we use this display to show static images as well as displaying time series data from a built in MEMs microphone.   I ran across a twitter user “The Performance Whisper” who had recently released a lightweight and efficient  animated GIF decoder.     I *really* wanted to give this library a try and decided to port it to the Mini-Monkey.

 

Here it is in action:

 

 

 

You can find the original library here:

 

https://github.com/bitbank2/AnimatedGIF

 

 You can read more about the origins and design of the GIF library here:

 

A 'Low Memory' GIF decoder 

 

While the library is targeting the Arduino platform, the core decoder is written in C and can be easily ported.    My port can be found here:

 

https://bitbucket.org/ehughes_/minimonkey-sw/src/master/

 

For this demonstration, I embedded the GIF files in internal flash.   It would be straightforward to add some SPI flash to store larger animations.   The LPC55S69 also has SDIO interfaces so you could also use an SD card or eMMC read files from a file system.  I will have more to say on embedded graphics on the LPC55S69 in the future.   In the meantime, check out these additional LPC55S69 resources.

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/01/22/lpc55-mcu-series-there-s-a-lot-under-the-hood-part-1-of-3

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/02/05/lpc5500-series-theres-a-lot-under-the-hood-part-2-of-3

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/02/20/lpc5500-series-theres-a-lot-under-the-hood-part-2-of-3-programmable-logic-and-rom-boot

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/03/13/mini-monkey-part-1-how-to-design-with-the-lpc55s69-in-the-vfbga98-package

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/03/29/mini-monkey-part-2-using-mcuxpresso-to-accelerate-the-pcb-design-process

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/04/19/lpc55s69-mini-monkey-build-update-off-to-fabrication

 

https://community.nxp.com/videos/9003

 

https://community.nxp.com/videos/8998

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/06/15/lpc55s69-powerquad-part-1-a-great-solution-for-the-industrial-iot-and-smart-metering

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/07/05/lpc55s69-powerquad-part-2-digital-iir-filtering

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/07/21/lpc55s69-powerquad-part-2-fast-fourier-transforms-rulers-guages-and-protractors

 

https://community.nxp.com/community/general-purpose-mcus/lpc/blog/2020/07/28/x-ray-the-monkey-mini-monkey-rev-b-update

Outcomes