Raspberry Pi Pico视频输出
TL;DR
Raspberry Pi Pico 是一款令人难以置信的小型微控制器。虽然它不像更大的 Raspberry Pi Zero / 1 / 2 / 3 / 4 / 400 那样内置视频输出接口(HDMI/双 HDMI)、 可以为 Pico 添加视频输出! (如通过 HDMI 连接器连接 VGA 或 DVI,请继续阅读详细信息)
在这篇文章中,我们将解释为什么视频输出是微控制器的一项非常特殊的功能,以及您可以为 Pico 制作或购买哪些类型的视频输出。我们还将向您展示一些示例代码,这些代码已经为您预先编译好,您可以直接下载,然后我们将讨论您需要修改哪些代码才能使其运行。
我们的姊妹店 buyzero.de我们还销售各种 Pico 配件,包括 DVI 袜子和 Pico 的 VGA 载板.
注意:Pico 不具备 Linux 操作系统。 树莓派Zero W 举例来说。因此,您很可能需要深入学习如何编写代码并将应用程序上传到 Pico。如果你不喜欢这样的话、 Pi Zero W 也许更适合开始玩耍 🙂
如果你成功地用 Raspberry Pi Pico 完成了自己的视频项目,请在评论中告诉我们!
为什么添加 Raspberry Pi Pico 视频输出是一项挑战?
树莓派 400例如,它基于 BCM2711 SoC。这种片上系统具有专门的硬件,可以处理视频输出,按照特定视频接口的指定格式完美地准备视频输出。 Pi 400.它还有一个 4 GB 的超大内存,用于存储视频输出数据。
为了更好地理解这一点,我们需要了解计算机视频输出的一些基本原理:
视频显示和传输
我们 "一次 "看到屏幕上的显示内容。我们的大脑具有大规模并行布线功能,可以同时从所有可用的视网膜细胞(视锥细胞和视杆细胞)获取信息。
(传入大脑的机制是将多个视网膜细胞的信息整合在一起,但事实上,大量信息是并行传输的)。查看 双极细胞 如果您有兴趣了解更多信息)
然而,大脑是有潜伏期的--它无法解决 视觉刺激的变化快于 13 毫秒.(约为每秒 75 帧中的 1 帧)。
对我们来说,这意味着如果要显示真正流畅的动画,我们需要每秒显示大约 60 张不同的静态图片。 我们的大脑会将这些静态图片理解为流畅逼真的播放。
通常,我们希望这些照片是彩色的。
我们有三种不同的颜色感光器,因此屏幕上只能显示这三种不同亮度的颜色。同样,我们的大脑会根据获得的信息合成出这三种颜色之间的颜色。(顺便提一句、 紫色 其实它本身并不存在波长--它是红色和蓝色的混合物)。
有三种原色:
- 红
- 绿化
- 蓝
它们合称为 RGB.三者相加则为白色。红色与绿色相加得到黄色,绿色与蓝色相加得到青色,蓝色与红色相加得到品红色。
因此,我们真正想输出的是
- 三种不同的颜色、
- 每个亮度值不同
- 理想情况下每秒约 60 个不同值(60 赫兹)
- 一定的屏幕分辨率 - 例如 640 x 480
让我们来计算一下每秒有多少数据:
- 3 种颜色
- x 8 位色深
- x 60
- x 640 x 480
= 442.368.000 比特/秒 = 约422 MBit/s
(例如,Pico 上的 USB v1.1 接口的速度约为 10 Mbit/s,吞吐量要低 40 倍!)。
为了输出这些信息,理想情况下,您还需要在 RAM 中以位图形式保存这些信息--应用程序的一部分将更新 RAM 中的图像,另一部分将负责以监视器可以使用的格式提供数据。这需要使用 RAM,因为我们正在高速运行,需要以较小的延迟可靠地读取数据,而闪存无法提供这种能力。
让我们计算一下我们需要多少内存:
- 640 x 480(分辨率)
- x 3(颜色)
- x 8 位(色彩深度)
= 7372800 位 = 900 kBytes(注:1 字节 = 8 位)
虽然 900 kBytes 可以多次装入计算机的 RAM 树莓派400, Pico 只有 264KB 内存.
正如您所看到的,如果我们想在 RAM 中容纳一个位图,就需要减少一些参数(如分辨率、颜色深度......),或者我们需要想出一些巧妙的办法,让它在不存储所有内容的情况下工作!
Pico 的 RP2040 PIO 可输出视频数据
最后,虽然 Raspberry Pi 400 和其他型号的 Raspberry Pi 都有专门的硬件电路来处理所有这些信息并以可靠的方式输出,但 Pico 并没有专门用于视频输出的特殊电路。
不过,它还有一个小窍门!RP2040 支持 PIO(可编程 IO)。 PIO 专用于以精确的时间模拟不同的接口,功能非常强大!它可以通过编程从 RAM 读取数据并高速输出。
我们将使用 PIO 将视频输出到一些 GPIO 引脚,并将使用一些额外的电路(电阻器)使信号达到所需的状态,这取决于我们要将 Pico 连接到的视频输出接口。
视频输出格式历史
在了解如何为 Raspberry Pi Pico 添加视频输出功能之前,我们先来了解一下视频输出格式的历史。
如前所述,人眼检测图像变化的速度无法超过 13 毫秒。因此,制造计算机显示器的最初方法之一是 CRT(阴极射线管) 监视器
显像管有三支射线枪,逐个像素、逐行扫描。(然后需要一些时间返回起点)。屏幕上有彩色荧光粉,光线穿过荧光粉后,荧光粉会继续发光一段时间。当射线枪下一次扫过这个像素点时,射线的强度可能会发生变化,我们会看到一个更暗的像素点。我们的大脑会将相邻的彩色荧光粉像素融合成一个像素,而无法注意到光线扫射之间的亮度变化。
这样就会产生移动图像的错觉。
实际上,它们并不需要在图像开始时就有所有数据,但 只是当前像素的亮度值.光线的亮度将随之改变。我们可以使用模拟信号来实现这一点,例如,增加电压就会增加亮度。
我们需要三根不同的电线来连接不同的颜色(分别驱动每个射线枪),我们还需要一种方法来让显示器知道何时需要启动新的行,以及何时需要启动新的图像(当所有行都已显示完毕时)。
VGA(视频图形阵列)
VGA 是针对这些 CRT 显示器而设计的。尽管随着我们向全数字传输的转变,它正变得越来越过时(稍后详述),但它仍然是显示器上相当常见的输入方式。
这也是最容易在 Pico 上使用的视频输出标准。
除了规格(默认分辨率模式),它还指定了一个连接器,即 VGA 连接器:
它有 15 个针脚:
- RED(红色视频)
- 绿色(绿色视频)
- 蓝色(蓝色视频)
- ID2/RES(保留)
- GND(接地同步)
- RED_RTN(红色返回,红色模拟接地)
- GREEN_RTN(绿色返回,绿色模拟接地)
- BLUE_RTN(蓝色返回,蓝色模拟接地)
- 按键/电源(+5 V DC 为某些显示器上的 EDID EEPROM 芯片供电)
- GND(接地 VSync、DDC)
- ID0/RES(保留)
- ID1/SDA(自 DDC2 起的 I2C 数据)
- HSync(水平同步)
- VSync(垂直同步)
- ID3/SCL(自 DDC2 起的 I2C 时钟)
注:VGA 电缆可支持不同的分辨率、色深和刷新频率,而 "VGA "一词在指分辨率时通常是指 640 x 480。
正如您所看到的,有 传输图像数据的三根导线,每种颜色各一根.信号传输的峰值(最大)电压为 0.7 V。传输的颜色信号是模拟信号--电压越高亮度越高,电压为 0 表示像素变暗或关闭。
在 Pico 上实现 VGA 输出
这意味着 Pico 的 3.3V 数字输出具有足够高的电压,可以将这些 RGB 引脚驱动到 VGA 电缆(VGA 电缆的预期电压为 0 - 0.7V)。实际上,我们需要使用电阻来降低电压。
通过几个电阻和 GPIO 引脚的组合,我们可以建立一个简单的 DAC(数字模拟转换器)。根据任何给定时刻处于活动状态的 GPIO 引脚组合,我们可以获得不同的电压电平(= 亮度电平):
如上图所示,五个 GPIO(0-4)驱动一个通道(本例中为红色),这就提供了五位深度。电阻的权重为 1:2:4:8:16,例如红色的最小有效位 (LSB) 有一个 8.06K 电阻。
在尝试构建该电路时,您应该选择 1 % 容差电阻器 才能拍出好照片。
请参阅"使用 RP2040 进行硬件设计"以了解电阻值的计算方法。简而言之,如果我们同时驱动所有电阻,电压将为 0.74 V,这对于我们的目的来说没有问题。
更具体地说,本参考设计建议支持常用的 16 位 RGB 数据格式(RGB-565),其中红色和蓝色使用 5 位,绿色使用 6 位。我们可以像其他颜色一样,将绿色的实际物理输出减少到 5 个 GPIO 引脚,以节省一个引脚。
除此之外,还需要 2 个引脚用于水平和垂直消隐定时(HSYNC 和 VSYNC)。
这样,我们总共需要 17 个 GPIO 引脚来驱动 VGA 输出。幸运的是,Pico 有 26 个可用的 GPIO 引脚,这使得我们可以驱动 VGA 输出。
如前所述,得益于 RP2040 的 PIO 功能(可编程 I/O),Pico 还能以必要的频率和精确的时序驱动这些引脚。
Raspberry Pi Pico VGA 视频输出硬件
Raspberry Pi 为 Pico 设计并开源了一块载板,展示了不同的功能:
- VGA 输出
- 按钮
- microSD 插槽
- 音频输出(模拟 PWM、数字 I2S)
购买 Pico VGA / 音频 / microSD 板
我们buyzero.de)目前正在为我们制作和组装这块参考设计板。 如果您希望在购买电路板后收到通知,请联系我们!
ǞǞǞ Pico VGA 板现在可以从我们这里购买,初始库存有限!
与此同时,Pimoroni 还制作了一个版本的电路板,他们称之为 Pimoroni Pico VGA 演示底座.
题外话:15 个 RGB 输出引脚中的每个引脚仍需要以大约 17.58 Mbit/s 的速度驱动,这仍然是一个令人印象深刻的数字,但更易于管理!
驱动 VGA 输出所需的软件
由于我们使用的是 Pico,因此没有可以简单安装的 "图形驱动程序"。我们需要自己编写代码......或者不需要 🙂
幸运的是,为我们设计硬件板的人已经提供了一些我们可以使用的代码,因此我们可以专注于我们的项目。
您可以在 pico-playground 资源库中找到可用的示例代码:
在该资源库中,有一个名为 爆玉米花 (以自定义格式播放电影)。A Big buck bunny,1.6 GB 大小,可在此处下载.请注意,这些是要写入 SD 卡的原始磁盘映像 - 本示例假设您拥有 VGA 演示板,该板有一个 SD 插槽。说明 转换电影 还给出了
代码使用 pico_scanvideo 库 (pico/scanvideo.h)。 pico_extras 软件仓库。此外,您还可以在该资源库中查看音频示例代码!
- pico_scanvideo - 包括大量文件!
API 在用于 DPI VGA 的引脚上输出并行 RGB 数据和同步信号(如上所述,使用电阻 DAC)。
说得好
- 默认的 PIO 扫描线程序接受运行长度编码数据--这意味着您可以节省 RAM 来生成平面色彩区域(我在想游戏!)。
一般来说,您希望使用 pico_scan 视频库 而不是从头开始开发 VGA 输出代码 🙂
良好的代码编写习惯
更多演示
查看 pico-playground 资源库的 scanvideo 目录:
- 曼德尔布罗特:使用 320x240x16 帧缓冲器的曼德尔布罗特生成器
- sprite_demo:弹跳的 Eben 头(视频在我们页面的顶部!)。
- 测试模式:显示彩条
使用 VGA 显卡
编译时,您需要向 CMake 传递一个额外的参数:
-DPICO_BOARD=vgaboard
待定:添加分步指南
DVI:数字视频接口
技术在进步。生活在进步。显像管越来越被淘汰,取而代之的是拥有数字界面的更现代的平面屏幕。没有移动光束,只有像素。
有一段时间,信号仍然是模拟信号,但这并不可取,因为我们必须将数字信号转换为模拟信号,然后再将其转换为数字信号。图像的精确度会降低,而且我们还需要额外的电路,而这些都是可以省去的。
进入 DVI。它巧妙地提供了传输模拟信号的选项,因此可以制作简单的 DVI 至 VGA 适配器/电缆。当然,显卡需要同时输出模拟和数字数据。但这有助于标准被接受和普及。
我们感兴趣的是数字信号 (DVI-D),因为我们想从 Raspberry Pi Pico 上对它们进行位操作。
使用 DVI-D 时,图像数据以串行方式传输。
单链路"(最基本的)DVI 连接包括 四 所谓的 TMDS 链路(过渡最小化差分信令):
- 红
- 绿化
- 蓝
- 像素时钟
使用差分信号可最大限度地减少干扰(因为
我们每个像素共有 24 位(8 位 x 3 种颜色),并使用 8b10b 编码对数据进行编码(8 位被映射为实际物理线路上的 10 位符号,以实现直流平衡等)。
DVI 对像素的处理方式与 VGA 相似:每次图像 "开始 "时,所有数据都要重新传输,而且数据的时钟是精确的。这就像电话线一样,当两个人通话时,电话线一直在使用。
注:与此相反、 DisplayPort 将数据视为数据包 - 它有许多优点。
与上文讨论的 VGA 示例不同,由于数据是以数字方式发送,而不是模拟亮度值,这意味着数据量要大得多。
卢克-沃伦Raspberry Pi 的工程师认为,RP2040(Pico 的核心)也能驱动 DVI 输出,同样使用 PIO。
结果是 PicoDVI 存储库 项目,以及 Pico DVI 插口.
卢克-沃伦计算出大约 252 Mbps 串行数据 必须通过 GPIO 数字焊盘(差分串行)来驱动,而这是通过两个单端焊盘来模拟的。
上图是用于驱动 DVI 输出的电路(使用 HDMI 连接器,详情见下文)--简单来说就是几个电路 270 欧姆 电阻器。
Luke Wren 甚至更进一步,通过插件板为他的 PicoDVI 布局添加了双 DVI 输出:
HDMI:向下兼容 DVI
HDMI 是连接器的下一代产品(与 DisplayPort 竞争)。它与数字 DVI 信号完全向下兼容,因此可以使用简单、纯被动的 DVI/HDMI 转换器。
Pico DVI 插口
Pico DVI Sock 是为 Pi 添加数字视频输出的简单而低成本的解决方案。它由 Luke Wren 设计(见上文描述)。它是一个带有 HDMI 接口的 DVI 输出端。由于 HDMI 向下兼容 DVI,因此您可以使用 HDMI 电缆将 Pico 连接到 HDMI 显示器:
为 Pico DVI Sock 编程
TL;DR
您可以下载我们的 picodvi-test.zip 并开始使用其中的 .UF2 实例编译。它还包含一份 PDF 文件,为您提供分步指南。
代码示例
卢克-沃伦提供 代码示例.不过,要将它们与 Pico DVI Sock 配合使用,您需要设置正确的配置。我们将在本迷你教程中为您演示。
安装前提
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
克隆来自 Luke Wren 的 PicoDVI repo:
cd ~
mkdir pico
cd pico
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk
git submodule update --init
cd ~/pico
git clone https://github.com/Wren6991/PicoDVI.git
要将代码示例与 Pico DVI Sock 配合使用,您需要设置 正确的引脚配置 来使用。在 common_dvi_pin_configs.h 只是 之前 第一个 #ifndef
#define DEFAULT_DVI_SERIAL_CONFIG pico_sock_cfg
创建示例
cd PicoDVI/software/
mkdir build
cd build
export PICO_SDK_PATH=~/pico/pico-sdk
make -j$(nproc)
在 Pico 上安装示例
构建的示例将放在 software/build/apps 文件夹中。
按住 Pico 上的 BOOTSEL 键,然后使用 microUSB 接口将电路板连接到电脑。复制并粘贴相应的 .uf2文件到 Pico 上,例如 sprite_bounce.uf2。
Pico 将自动重新启动,您应该可以在 HDMI 接口上看到输出(请记住,其实是 DVI :-))。
下载
您可以下载我们的 picodvi-test.zip 并开始使用其中的 .UF2 实例编译。它还包含一份 PDF 文件,为您提供分步指南。如果 sprite_bounce.uf2 如果该示例对您不起作用,请尝试其他显示器--可能并非所有显示器都兼容该视频输出。
如果您已经走到这一步,请在评论中告诉我们这对您有什么帮助,以及您有什么项目创意!
购买 Pico DVI 插口
我们的姊妹页面 buyzero.de 库存有 Pico DVI 插口 有两种变体:
- 仅 Pico DVI 插口 (自焊)目前为 6.58 欧元
- Pico 上的 Pico DVI 插口,带预焊头 目前为 17.89 欧元
注:DBI 和 DSI 显示器
顺便提一句,Raspberry Pi Pico Extras 资源库中有 DBI(16 位 MIPI DBI 显示器--数据并行传输)和 DSI(MIPI 串行显示器)的占位符,因此我们将来可能也会看到对这些显示器的支持。
有使用基因锁进行复合输出的例子吗?
我认为复合输出应该是可能的,但目前还没有看到这方面的任何信息。
作为 scanvideo 的替代,我为 Raspberry Pico 实现了另一个 VGA/TV 库 - "PicoVGA",我认为它更易于使用: http://www.breatharian.eu/hw/picovga/index_en.html
感谢您分享有关图书馆的信息!
嘿,这个 HDMI 能否用作输入并处理数据?
由于它的编程方式,以及电阻的作用是限制 Raspberry Pi 的输出信号,所以不行。
当然,您也可以调整代码,将输出作为输入,以便在 Pico 内处理视频数据。
不过,有几个实用技巧。由于硅抽签的原因,您的特定设备可能无法按比例超频,GPU 和 Cpu 部分也是如此。因此,如果不需要更快的图形处理器,就不要超频。这样可以增加超频的机会,使系统更加稳定。此外,更低的功耗和更小的供电电流也意味着更好的稳定性。拥有 4 个 CPU 内核的 Raspberry Pis 在 4 个内核都处于激活状态时,可能会出现供电不足的问题。集成的 PMIC(电源管理 IC)可能无法为所有内核提供所需的电流,并在短时间内自行关闭,从而重启 Pi。还要冷却 PMIC。如果需要全内核负载(内核编译、繁重的数字运算等),最大电压不要过高。这里我们有一个 RPI4,在过压=2 的情况下,所有内核都能以 1850MHz 的频率运行,但在过压=3 的情况下,加载时会重启。过压越高,电流也越大,而 PMIC 电路的输出电流有限。PMIC 及其周围电感器的温度越高,可提供的电流就越小。这是 PMIC 芯片的限制,而不是 BCM 芯片组的限制。因此,如果在重负载情况下偶尔出现重启,可能是 PMIC 过热造成的。如果你的 Pi 锁死了,那就不是这个特定的问题,而可能是硅彩票丢失。对 GPU 部分进行低频可能是一种提高超频性(系统更稳定)的有趣方法,但据我所知,较旧的 Raspberry Pis 有与 GPU 绑定的二级缓存,因此低频可能也会减慢 CPU 的运行速度。我已经记录了 Raspberry Pi 4 的 PMIC 是如何发热的,所有其他芯片都是直接通过散热片冷却的。这是从背面看的,也就是说,你看到的是发热的印刷电路板。左下角是 PMIC。
非常感谢你提供的这些实用建议!
你好。
我是个新手......谁能提供 cvbs 显示输出的原理图?以及对源代码的任何必要修改?
对不起,不知道 cvbs 的情况
您好
感谢您的精彩文章。我从头读到尾 😉。
不过,我也有一些无知的问题:
1.RPi Pico 有 PWM。是否有可能使用带 PWM 的单引脚输出模拟信号,以馈送到 VGA 引脚?而且电路更简单、更小巧。
2.有没有可能再次使用 PWM 从 RPi Pico 获得模拟 AV 输出?我想大多数电视都支持。也许可以使用类似 https://thecaferobot.com/store/pub/media/catalog/product/cache/14d1897c7f1bd4f35a7de1523300314a/l/c/lcd-01-057-1.jpg 我可以在本地商店买到。不过,我发过来的图片是 Arduino 模块,但我想它应该也可以用于 Pico。
3.如果想将 VGA 或 DVI 与 Pico 结合使用,是否可以不使用 VGA 或 DVI 辅助板?因为在我所在的地区买不到这些板,而且我的技术也不足以自己制作一个。
1.PWM 引脚的时序精度可能无法满足您对视频输出的要求(这就是我们使用时序非常精确的 PIO 的原因)。但为什么不试试呢 🙂?
2.我想应该可以从 Raspberry Pi Pico 产生模拟 AV 输出。我怀疑 PWM 是否能 "满足 "这个要求(希望有更多经验的人对此发表意见!)。
请注意,PWM 只是简单地开关信号,而例如 VGA 电路板中使用的电阻梯形图可提供连续的信号电平。因此,PWM 解决方案的工作频率必须远远高于实际信号所需的频率。我也不确定外部硬件对 PWM 信号而非连续模拟信号会有什么反应。
也许可以使用一个非常小的电容器来平滑它,为此您需要进行适当的计算。
3. 辅助 VGA / DVI 板包含必要的内容(主要是电阻器)。您可以查看原理图,然后在面包板上自行设置,我见过有人在 VGA 板上这样做。
尽管如此,我们还是可以进行国际运输:
https://buyzero.de/products/raspberry-pi-pico-vga-audio-sd-expansion-board?variant=39412666335412
Pico DVI 插座 @ buyzero.de 商店
很棒的信息。谢谢。
还找到了这个:Raspberry pico 上的复合视频输出
http://www.breakintoprogram.co.uk/projects/pico/composite-video-on-the-raspberry-pi-pico
我设法制作了 Wren6991 的 picoDVI,并将其与三路 ADC 集成,以扫描 RGB 15Khz (640×240)。
在只使用一个内核的 320×240 处理器中,另一个内核可以单独接收 HSYNC /VSYNC 中断,并轻松准备 dma 传输,但在 640×480 处理器中,两个内核的使用阻碍了系统的正常工作。
既然我确实需要一半的线条,有没有办法为奇数线条准备一条黑色线条?
我认为你不需要发送任何空行。你可以发送所有奇数行,发送多半行的 vsync 信号,然后发送偶数行。请研究一下 "隔行扫描视频同步脉冲"。
有人知道如何加载自己制作的视频而不是示例视频吗?非常感谢!
我想把它用于独特的视听显示用途。谁能告诉我?
能否通过 HDMI 电缆为 Pico 供电?
能否设置为 Rec2100 色彩空间(rec 2020 HDR 色彩空间)?
是否有可能在 HDMI 上连接额外的线路来发送音频(和 rec2020/HDR 信号)?
您能否通过 USB 视频格式输出视频(通过 USB 转 Pico 适配器从不变的 Pico 输出视频)?
使用 Pico 无线技术,它能实现 Miracast 吗?
能否采用普通的位图视频模式,并利用剩余周期对游戏图形进行处理?
Seedstudio 有一块微型 RP2040 电路板。 HDMI 接口板和软件能否在上面工作。 他们还有带 Wifi 的 RiscV 版本,如果能重新编译就更好了。
https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?queryID=31d59a67f7c148df996ba9c1bb7563e3&objectID=5026&indexName=bazaar_retailer_products
我对游戏应用很感兴趣,比如游戏手表的使用。
有没有任何 JavaScript 最低可行的运行平台?
很抱歉提出了这么多要求,但
最有趣的
谢谢。
我可以将你们的卡与 Geoff 的 MMBasic 解释器一起使用吗?您的卡是否会对我的程序造成硬件限制?
伟大的思想是相通的,我也是这么想的!我已经制作了基于 Raspberry Pico 的 MMBASIC 电脑,并带有 VGA 输出,效果非常棒!然而,DVI-D(伪 HDMI)输出将图形处理能力提升到了一个新的水平!当然,MMBASIC 不一定要完全利用更高的色深或分辨率,但在 640×480 的条件下运行,例如 64 色,就会非常出色。
话虽如此,我还是预见到了两个迫在眉睫的问题。
1.VGA 解决方案也使用 PIO 引脚,然后其中一个内核用于精灵管理、帧缓冲等。我相信。至少需要修改代码,至少要替换 VGA PIO 实现。如果 PIO(VGA)和帧缓冲器核心代码之间的接口与 DVI PIO 解决方案相同,那么作为 API,我也会感到惊讶,但我可能是错的。总之,必须修改代码。
2.内存。内存不够用,所以更高的分辨率和更高的色深会是个问题。但我想我有办法解决这个问题。使用外部 PSRAM,或许可以使用一个 RP2040/Pico 作为 "GPU",并连接它自己的专用 PSRAM。然后,它与第二个 RP2040 对话,后者提供运行 MMBASIC 的 "CPU "或系统大脑,它可以通过指示 GPU 以最小的开销(例如通过 I2C 链接)操作/移动图形资产。我想要/需要这个😉。
64 欧元就能买到 "Raspberry Pi Pico VGA 音频 SD 扩展板"?最好用零钱...
Pimoroni 的价格较低(30 欧元),但仍然很贵。DVI Sock 只需几欧元...