SSD1306 OLED - Fast High Speed DMA library for Arduino Due

Hey all! I've done some mashing of code, and come up with something I think is pretty neat.

I was using a SSD1306 128x64 OLED display from Adafruit with my Arduino Due and found it far too slow, running the display() call especially. Even using hardware SPI, it was still taking around 2ms to run display(). I wanted to speed things up using the SAM3X8E's DMA. I looked online and the closest thing I could find was Marek Buriak's code for using DMA with the ILI9341-based TFTs. He himself had used and modified the DMA routines from William Greiman. I was able to use Marek's work and integrate it with Limor Fried's Adafruit_SSD1306 library to create my own library that is up to 8 times faster.

The one pitfall is that currently it is difficult and messy to use anything else on the SPI bus as this library totally replaces SPI.h and is not compatible with it as such. The more confident of you will note it's possible to SPI to other devices by using other digital pins for more chip selects and using calls to the library's functions fastSPIwrite() and spiRead(). It may be broken currently though, I haven't had time to test it yet.

Anyway, check it out, let me know what you think! I was rather pleased with the speed upgrade. Big NOTE: ONLY FOR ARDUINO DUE, it won't work on any other hardware.

https://github.com/GravCorp/DayOLED_SSD1306