之前,我就知道树莓派 RP2040 MCU 可以使用微控制器的可编程 I/O 块支持 VGA 输出了。但今年年初的时候,我却看到了两个带有 HDMI 连接器的 RP2040 板即将要推出。当时我就很好奇,这究竟是怎么做到的呢?
相关消息的推特链接,点击此处可查看。
第一个是 Olimex RP2040-PICO-PC,它确实就像是一个 pico PC 板,带有用于视频的 HDMI 连接器、用于存储的micro SD 卡、用于扬声器或耳机的标准 3.5毫米音频插孔,以及用于键盘的 USB 主机接口。
有一些 I/O 接头可以较方便地测量,看起来像一个 3 针 UART 控制台接头,一个用于 LiPo 电池的 2 针接头,以及一个复位按钮。
第二块板是 dclectr DC2040,它遵循树莓派 Zero 外形规格,带有 40 针 GPIO 接头、micro USB 端口、Micro SD 卡插槽以及将用作 DVI 输出的迷你 HDMI 端口。
相关推特,点击此处可查看详情。
这就是该块板子可以支持 HDMI 的工作原理,因为 DVI 信号可以通过 HDMI 电缆传输。由于 DVI 不支持音频,所以该板可以传输除音频意外的任何 RGB 信号。
支持 HDMI/DVI 的想法似乎源自树莓派工程师Luke Wren (Wren6991) ,在他的 PicoDVI 板上所做的工作,可以输出 640x480p 60 Hz DVI 模式、可使用 264 kB SRAM、两个 Cortex-M0+ 时钟频率为 252 MHz(这有点高于树莓派基金会宣传的133 MHz了)。当然,还有来自树莓派 RP2040 微控制器的 PIO 块之一。

以下是用于一台显示器时所需的资源:
- 8 个 PIO 状态机中的 3 个(DVI 代码要求这些都在同一个 PIO 实例上)
- 12 个 DMA 通道中的 6 个(每个 TMDS 通道两个:一个用于控制块,一个用于数据)
- 30% 的 DMA 带宽和 PIO 总线端点带宽
- 一个核心上 60% 的 CPU 周期,其他核心 100% 空闲
- 超过 50% 的 RAM 带有 QVGA RGB565 图像(但 RGB332 支持很简单)
在这里我为什么要强调使用一台显示器呢?这是因为它也适用于两个显示器,刚我提到只使用了一个 PIO 块,所以还有一半的 DMA 通道可用的,并且还有一个 Cortex-M0+ 仍然是空着的。

这作为演示其实是非常简洁的,不过这个演示已经要接近树莓派 RP2040 微控制器的极限了,而该微控制器也必须为此超频。但实际上,一些应用只需要一个显示器,比如:玩复古游戏,可以直接使用MicroPython或CircuitPython对开发板进行编程并连接显示器,然后用简单的标识来显示文本和图像。
PicoDVI 项目的硬件设计文件和 C 固件都可以在Github上找到,上面也详细解释了这一切到底是如何工作的。

文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。