项目简介
本项目是专为微控制器设计的极简VGA帧缓冲硬件和软件系统,已在Arduino Uno和Nano上测试通过。使用3x2:1多路复用器和64KB SPI内存芯片等简单硬件,在保证低CPU利用率的同时实现VGA显示功能。系统集成高级的u8g2和u8x8 API,可进行单色字体和图形渲染。
项目的主要特性和功能
- 硬件简单,仅需3x2:1多路复用器和64KB SPI内存芯片实现低CPU利用率。
- 与u8g2和u8x8 API集成,可进行单色字体和图形渲染。
- 支持黑色和通过RGB跳线选择的一种颜色。
- 最高支持640x480分辨率(64KB地址空间,每像素1位)。
- 具备快速清屏和快速垂直滚动功能。
- 可选择将MCU时钟乘以2x、2.5x、3x、4x或5x来生成像素时钟,也可使用自己的振荡器(20MHz、25MHz、30Mhz、40MHz、50MHz)。
安装使用步骤
安装
- 决定像素时钟的生成方式,这可能限制可用的分辨率。如Arduino以16MHz运行并生成8MHz输入到CLKIN,用2.5x乘数可生成20MHz像素时钟,适用于400x300@60Hz和256x256@60Hz模式。
- 将原理图与Arduino板或芯片连接。
- 下载arduino_lib/文件夹,将其内容放于Arduino库所在位置(通常为
c:\Users\<username>3\Documents\Arduino\libraries\
),或直接放于项目文件夹中。
使用
- 参考支持的模式列表选合适模式:
- vgamode_400x300_60Hz_20MHz
- vgamode_256x256_60Hz_20MHz
- vgamode_640x480_75Hz_32MHz
- vgamode_320x240_75Hz_16MHz
- vgamode_640x400_85Hz_32MHz
- vgamode_320x200_85Hz_16MHz
- vgamode_640x480_60Hz_25MHz
- vgamode_320x240_60Hz_12_6MHz
- vgamode_160x120_60Hz_6_3MHz
- 参考示例代码开发,示例代码见arduino_lib/examples/TextOnScreen_8x2g.ino。
- 若需使用底层C API,可参考以下函数:
C void VgaFB_ConfigBoard(vgafb_t * vgafb, uint8_t mul, uint8_t div, uint8_t cs_pin, uint8_t ab_pin); bool VgaFB_Begin(vgafb_t * vgafb, vgamode_t mode); void VgaFB_End(vgafb_t * vgafb); void VgaFB_DisplayEnabled(vgafb_t * vgafb, bool enabled); void VgaFB_Clear(vgafb_t * vgafb); void VgaFB_Scroll(vgafb_t * vgafb, int16_t deltaScanline); void VgaFB_Write(vgafb_t * vgafb, uint_vgafb_t dst, uint8_t * src, uint_vgafb_t cnt); void VgaFB_Read(vgafb_t * vgafb, uint_vgafb_t src, uint8_t * dst, uint_vgafb_t cnt); // uint_vgafb_t is usually uint16_t (VGAFB_VRAM_ADDR_LENGTH==2)
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】