littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于Arduino的VGA帧缓冲系统

项目简介

本项目是专为微控制器设计的极简VGA帧缓冲硬件和软件系统,已在Arduino Uno和Nano上测试通过。使用3x2:1多路复用器和64KB SPI内存芯片等简单硬件,在保证低CPU利用率的同时实现VGA显示功能。系统集成高级的u8g2和u8x8 API,可进行单色字体和图形渲染。

项目的主要特性和功能

  1. 硬件简单,仅需3x2:1多路复用器和64KB SPI内存芯片实现低CPU利用率。
  2. 与u8g2和u8x8 API集成,可进行单色字体和图形渲染。
  3. 支持黑色和通过RGB跳线选择的一种颜色。
  4. 最高支持640x480分辨率(64KB地址空间,每像素1位)。
  5. 具备快速清屏和快速垂直滚动功能。
  6. 可选择将MCU时钟乘以2x、2.5x、3x、4x或5x来生成像素时钟,也可使用自己的振荡器(20MHz、25MHz、30Mhz、40MHz、50MHz)。

安装使用步骤

安装

  1. 决定像素时钟的生成方式,这可能限制可用的分辨率。如Arduino以16MHz运行并生成8MHz输入到CLKIN,用2.5x乘数可生成20MHz像素时钟,适用于400x300@60Hz和256x256@60Hz模式。
  2. 将原理图与Arduino板或芯片连接。
  3. 下载arduino_lib/文件夹,将其内容放于Arduino库所在位置(通常为c:\Users\<username>3\Documents\Arduino\libraries\),或直接放于项目文件夹中。

使用

  1. 参考支持的模式列表选合适模式:
    • 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
  2. 参考示例代码开发,示例代码见arduino_lib/examples/TextOnScreen_8x2g.ino
  3. 若需使用底层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】