STM32F103C8 BluePill VGA Project
Posted: Thu Apr 23, 2020 7:27 pm
Hi Guys!
I'm working on a minimalist VGA driver for the Bluepill (STM32F103C8T6) that uses smallest possible portion of RAM and Flash.
It also uses PC13, PC14 and PC15 for colors (8 possible colors) in order to leave most valuable pins free for other use (considering it uses pins PA9 and PB6 for sync).
It's ready and published as an Arduino Library.
These are the project millestones:
- VGA pins used are PC15, PC14 and PC13 for Red, Green and Blue signal
- It also uses PA9 and PB6 for HSync and VSync.
- It works with Roger's Core and STM32 Official Core.
- At this point a "Simple Demo" example for VGA uses 4.4K RAM and 19.5 K Flash, using Roger's Core.
- Using STM32 Official Core, this same example uses 2.4K RAM and 12.7 K Flash (lowest footprint). Which is very good for adding VGA to your project.
- It supports Arduino Print Class and it works the same way as Serial.print() and Serial.println(), but the output is the VGA monitor.
more information on viewtopic.php?p=3918#p3918
- It produces 8 colors
- Resolution is 224 x 240 pixels
- It works with Tiles and each tile can have only two colors (foreground and background colors)
- Its screen has 28x30 tiles - each tile has 8x8 pixels and it is in flash memory space using 8 bytes / tile
- Each tile has its own pair of colors.
- A tile is like a character bitmap, but it can be used for anything else, including graphical characters - font bitmap is user defined in code.
- There is a graphical mode to display pixels or bitmaps in the screen.
It's fully Arduino IDE compatible by the way!
Update: A new version is now released. The library BlueVGA 1.0 works transparently for both cores (STM32 and Roger's).
The library and source code can be found in https://github.com/RoCorbera/BlueVGA
Video of one of the examples coded within the library: http://www.youtube.com/watch?v=nNWkdR4P_UA
Some Screenshots:
As this project moves forward I'll keep you all posted.
I'm working on a minimalist VGA driver for the Bluepill (STM32F103C8T6) that uses smallest possible portion of RAM and Flash.
It also uses PC13, PC14 and PC15 for colors (8 possible colors) in order to leave most valuable pins free for other use (considering it uses pins PA9 and PB6 for sync).
It's ready and published as an Arduino Library.
These are the project millestones:
- VGA pins used are PC15, PC14 and PC13 for Red, Green and Blue signal
- It also uses PA9 and PB6 for HSync and VSync.
- It works with Roger's Core and STM32 Official Core.
- At this point a "Simple Demo" example for VGA uses 4.4K RAM and 19.5 K Flash, using Roger's Core.
- Using STM32 Official Core, this same example uses 2.4K RAM and 12.7 K Flash (lowest footprint). Which is very good for adding VGA to your project.
- It supports Arduino Print Class and it works the same way as Serial.print() and Serial.println(), but the output is the VGA monitor.
more information on viewtopic.php?p=3918#p3918
- It produces 8 colors
- Resolution is 224 x 240 pixels
- It works with Tiles and each tile can have only two colors (foreground and background colors)
- Its screen has 28x30 tiles - each tile has 8x8 pixels and it is in flash memory space using 8 bytes / tile
- Each tile has its own pair of colors.
- A tile is like a character bitmap, but it can be used for anything else, including graphical characters - font bitmap is user defined in code.
- There is a graphical mode to display pixels or bitmaps in the screen.
It's fully Arduino IDE compatible by the way!
Update: A new version is now released. The library BlueVGA 1.0 works transparently for both cores (STM32 and Roger's).
The library and source code can be found in https://github.com/RoCorbera/BlueVGA
Video of one of the examples coded within the library: http://www.youtube.com/watch?v=nNWkdR4P_UA
Some Screenshots:
As this project moves forward I'll keep you all posted.