chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

RP2350からDVI出力してみようと思いWaveshare社の評価ボード発注

背景:PIOを調べていて、最高クロックは75MHzと理解した。定格のクロックでPIOによるDVI出力は速度上は不可能。RP2350にはHSTXという高速シリアルIFが搭載されていて、これを使うとDVI出力が可能と知った
アプローチ:DVI(HDMI?)のコネクタが実装されているWaveshare社の評価ボードを買って、モニタ出力してみる
詳細:
MicroPython + PIOでサンプルコードを考えていた。PIOを使ってクロックLHLHLHL....LHを出力する場合、クロック信号を上げ下げするのに最低2命令必要(L->Hで1命令、H->Lで1命令)。だから、PIOが出力できる最高クロックは、システムクロック(150MHz)の1/2となる。オーバークロックしない限り、PIOで生成できるクロックは最高で75MHzまで。PIOの応用例としてDVI出力が紹介されていてあまり気にしていなかったのだけど、RP2040ではオーバークロックして対応していたらしい。一方、RP2350ではHSTXという高速シリアル変換モジュールが搭載されている。HSTXにシリアル変換させることで、マイコンコアは通常クロックのままで、DVI出力が出せる*1

一番素性の良いボードは、Adafruit Feather RP2350(HSTXポート/PSRAM 8MB搭載)と思うけど、かなり高い。一方、Waveshare社の評価ボード(RP2350-PiZero)はPSRAM未搭載だけど、ボードにDVIコネクタ(HDMIコネクタ?)が実装されているので拡張ボードやフレキケーブル不要で、ボード一枚で足りる。しかも安い。なお、メモリサイズが制約となって、640x480程度のドット絵しか出せないらしいが、RP2350でモニタ出力できたらいろいろ面白いかもと思って、Waveshare社の評価ボードを発注した。スイッチサイエンス等のパーツショップでは売り切れになっているので、Waveshare社に直接発注した。安い海外郵便を指定したので、3週間ぐらいかかりそう。

手間のかかることせずとも、SPI接続の液晶パネルは安く購入できて*2、320x240程度のグラフィック表示はできるので、なぜ自分はDVI(HDMI)出力に取り組むのか?というのは疑問なのだが、昔懐かしいドット絵がデジタルTVに出せるというノスタルジーと、作ってみたら便利さが分かるかもと思い、とりあえず画像が出る所までは進める予定。

表示できるのを確認したら、未実装のPSRAMも手はんだで追加したい。チップ単体は400円ぐらいらしい。マルツ経由でDigiKeyからAdafruit製のPSRAMが買えそうだ*3
→ 4つ買ってしまった。


ボードが届いてブートしてみた。初期ファームは焼かれていないように思える(USB/Serialは接続できるが無応答)。標準のRP2350用MicroPythonファームを焼いてみた。まぁこれは動く

MicroPython v1.28.0 on 2026-04-06; Raspberry Pi Pico2 with RP2350
Type "help()" for more information.
>>> help('modules')
__main__          asyncio/lock      gc                random
_asyncio          asyncio/stream    hashlib           re
_boot             binascii          heapq             rp2
_boot_fat         builtins          io                select
_onewire          cmath             json              struct
_rp2              collections       machine           sys
_thread           cryptolib         math              time
array             deflate           micropython       uasyncio
asyncio/__init__  dht               neopixel          uctypes
asyncio/core      ds18x20           onewire           vfs
asyncio/event     errno             os
asyncio/funcs     framebuf          platform

Wafeshare用にポーティングされているファームがあるようだったのでこれを焼いてみた。ブートメッセージはRP2350B/ Waveshare等と表示される。使えるモジュールは特に変わっていない印象。

MicroPython v1.29.0-preview.349.gaf38ee165f.dirty on 2026-06-09; Waveshare RP2350B Board with RP2350
Type "help()" for more information.
>>> help('modules')
__main__          asyncio/lock      gc                random
_asyncio          asyncio/stream    hashlib           re
_boot             binascii          heapq             rp2
_boot_fat         builtins          io                select
_onewire          cmath             json              struct
_rp2              collections       machine           sys
_thread           cryptolib         math              time
array             deflate           micropython       uasyncio
asyncio/__init__  dht               neopixel          uctypes
asyncio/core      ds18x20           onewire           vfs
asyncio/event     errno             os
asyncio/funcs     framebuf          platform
Plus any modules on the filesystem

■参考URL

Waveshare社サポートページ
https://www.waveshare.com/wiki/RP2350-PiZero
RP2350-PiZeroの回路図
https://files.waveshare.com/wiki/RP2350-PiZero/RP2350-PiZero.pdf

Generic 64 Mbit Serial Pseudo SRAM - PSRAM - 3.3V 133 MHz : Adafruit Industries, Unique & fun DIY electronics and kits
www.marutsu.co.jp

GitHub - Wren6991/PicoDVI: Bitbanged DVI on the RP2040 Microcontroller · GitHub

*1:不勉強のため、DVI信号とHDMI信号の違いがちょっと分からず

*2:といいつつ、安い液晶パネルは壊れやすい。半年ぐらい置いとくと動作がおかしくなったり

*3:Adafruitにも在庫ある。海外から買うと送料が高い