After being a member of this forum for the past 2-3 years, consuming the vast amount of knowledge & expertise from the very smart and talented forum members.. It's time for me to give back a little something.
In the past few weeks I started to dig into FlexIO and DMA to try and understand how the hell it works in hopes of creating an 8 bit parallel display driver for the ILI9481/9486/9488.
Thanks to all the help from forum member easone and threads by KurtE, miciwan and Paul - I have a proof of concept library available:
ILI948x_t4_mm
https://github.com/david-res/ILI948x_t4_mm
This is a BASIC display driver - it has several setup function that will allow a user to set rotation, frame rate, invert display etc
And it's main function allows a user to pass an array of pixels in 16 bit format (RGB565).
This library has alot more work needed to get it working 100%, but as a proof of concept it's a great starting point.
It utilizes FlexIO to create an 8 bit bus on the Teensy MicroMod
It also utilizes DMA to offload the large transfers from the CPU, although a polling method can be used as well.
The following Teensy MM pins are used to drive the display and cannot be changed:
For CS, D/C, RST pins, any GPIO pins can be used.
The basic setup is explained in the Readme file under the repo and an example sketch has been provided as well.
The next features to be added are a function to changed the bus speed - this directly affects the actual refresh rate, and I also intend to incorporate some simple functions to read data from the screen such as display make/model, setup config and GRAM content.
There are still some glitches with DMA, so I encourage anyone and everyone to contribute in enhancing this library!
Enjoy,
David
In the past few weeks I started to dig into FlexIO and DMA to try and understand how the hell it works in hopes of creating an 8 bit parallel display driver for the ILI9481/9486/9488.
Thanks to all the help from forum member easone and threads by KurtE, miciwan and Paul - I have a proof of concept library available:
ILI948x_t4_mm
https://github.com/david-res/ILI948x_t4_mm
This is a BASIC display driver - it has several setup function that will allow a user to set rotation, frame rate, invert display etc
And it's main function allows a user to pass an array of pixels in 16 bit format (RGB565).
This library has alot more work needed to get it working 100%, but as a proof of concept it's a great starting point.
It utilizes FlexIO to create an 8 bit bus on the Teensy MicroMod
It also utilizes DMA to offload the large transfers from the CPU, although a polling method can be used as well.
The following Teensy MM pins are used to drive the display and cannot be changed:
- pin 10 - WR
- pin 40 - D0
- pin 41 - D1
- pin 42 - D2
- pin 43 - D3
- pin 44 - D4
- pin 45 - D5
- pin 6 - D6
- pin 9 - D7
For CS, D/C, RST pins, any GPIO pins can be used.
The basic setup is explained in the Readme file under the repo and an example sketch has been provided as well.
The next features to be added are a function to changed the bus speed - this directly affects the actual refresh rate, and I also intend to incorporate some simple functions to read data from the screen such as display make/model, setup config and GRAM content.
There are still some glitches with DMA, so I encourage anyone and everyone to contribute in enhancing this library!
Enjoy,
David