之前,我就知道樹莓派 RP2040 MCU 可以使用微控制器的可程式設計 I/O 塊支援 VGA 輸出了。但今年年初的時候,我卻看到了兩個帶有 HDMI 聯結器的 RP2040 板即將要推出。當時我就很好奇,這究竟是怎麼做到的呢?
相關訊息的推特連結,點選原文可檢視:帶有HDMI的樹莓派RP2040板推出了? - CNX Software中文站
第一個是 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上找到,上面也詳細解釋了這一切到底是如何工作的。
更多優質文章推薦:
1.樹莓派Zero 2W和Zero W功能比較 - CNX Software中文站