External Memory options for VGA(LCD) graphics storage
T Chap
Posts: 4,223
I am out of memory and still have a lot of graphics to add for New Haven LCD Touch Screen that uses an adapted VGA object( Ray's ). There are graphics that are called up a la carte that I am parking on eeprom, but the screen draw is slow on the graphics that have to be read in first. What is a faster way to retrieve some data as needed? I was thinking of still putting the graphics on eeprom and on boot up, transfer to some type of RAM. I have never used an external RAM, but would assume that with SPI that the speed could be improved over eeprom? Any suggestions? At present there are no pins available for SD.
Comments
SD usually has some overhead required though, that you might not want if short on space.
If you look on my website for "Flashpoint", you'll find a driver for a SPI flash chip. There is also code for SRAM SPI chips.
There's no file handling though, so you'd have to tell it where to write and read from and how many bytes, etc.
The new EVE FT801 chip might solve a lot of your space problems, although it would add some complexity with another chip...
I guess I'd try the PASM EEPROM driver first, since it's already there and basically free...
I think you would have to kill the SPIN version, if you have that running too first...
These are "tile" drivers where the screen is made from 16x16 pixel tiles with 2-bit color (pixels in a given tile can only have 4 different colors).
There is an array (usually called "screen") that contains one word for each tile.
The driver does constantly refresh the screen based on the data in the array "screen".
Each tile word in "screen" has 16 bits. 10 of them are used as a pointer to the actual pixels that comprise the tile.
The other 6 bits are used to define the set of colors that the tile will be painted with.
Usually the 10-bit pointer is pointing to a ROM font character.
But, we've figured out how to point them instead to a bitmap in HUB RAM to do simple graphics.
So, if you're seeing your bitmap slowly change with new data, it's because the tile pointer is kept pointing to where you are sending new bitmap data.
One way to avoid that to set the screen tile pointer to something else, like the space character for example.
Then, set it back to the bitmap pointer when the bitmap data is loaded.